Commit a48fe5f383cb6712d739f7bce562874415f7dbb8
Committed by
Rafael Manzo
1 parent
fc4da177
Exists in
colab
and in
4 other branches
project model update method Unit tests
Showing
2 changed files
with
76 additions
and
2 deletions
Show diff stats
spec/controllers/projects_controller_spec.rb
@@ -13,7 +13,7 @@ describe ProjectsController do | @@ -13,7 +13,7 @@ describe ProjectsController do | ||
13 | 13 | ||
14 | describe 'create' do | 14 | describe 'create' do |
15 | 15 | ||
16 | - context 'with a valid fields' do | 16 | + context 'with valid fields' do |
17 | before :each do | 17 | before :each do |
18 | @subject = FactoryGirl.build(:project) | 18 | @subject = FactoryGirl.build(:project) |
19 | @subject_params = Hash[FactoryGirl.attributes_for(:project).map { |k,v| [k.to_s, v.to_s] }] #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers | 19 | @subject_params = Hash[FactoryGirl.attributes_for(:project).map { |k,v| [k.to_s, v.to_s] }] #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers |
@@ -92,4 +92,51 @@ describe ProjectsController do | @@ -92,4 +92,51 @@ describe ProjectsController do | ||
92 | end | 92 | end |
93 | end | 93 | end |
94 | 94 | ||
95 | -end | 95 | + describe 'update' do |
96 | + | ||
97 | + context 'with valid fields' do | ||
98 | + before :each do | ||
99 | + @subject = FactoryGirl.build(:project) | ||
100 | + @subject_params = Hash[FactoryGirl.attributes_for(:project).map { |k,v| [k.to_s, v.to_s] }] #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers | ||
101 | + | ||
102 | + Project.expects(:find).with(@subject.id.to_s).returns(@subject) | ||
103 | + Project.any_instance.expects(:update).with(@subject_params).returns(true) | ||
104 | + end | ||
105 | + | ||
106 | + context 'rendering the show' do | ||
107 | + before :each do | ||
108 | + Project.expects(:exists?).returns(true) | ||
109 | + | ||
110 | + post :update, :id => @subject.id, :project => @subject_params | ||
111 | + end | ||
112 | + | ||
113 | + it 'should redirect to the show view' do | ||
114 | + response.should redirect_to project_path(@subject) | ||
115 | + end | ||
116 | + end | ||
117 | + | ||
118 | + context 'without rendering the show view' do | ||
119 | + before :each do | ||
120 | + post :update, :id => @subject.id, :project => @subject_params | ||
121 | + end | ||
122 | + | ||
123 | + it { should respond_with(:redirect) } | ||
124 | + end | ||
125 | + end | ||
126 | + | ||
127 | + context 'with an invalid field' do | ||
128 | + before :each do | ||
129 | + @subject = FactoryGirl.build(:project) | ||
130 | + @subject_params = Hash[FactoryGirl.attributes_for(:project).map { |k,v| [k.to_s, v.to_s] }] #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers | ||
131 | + | ||
132 | + Project.expects(:find).with(@subject.id.to_s).returns(@subject) | ||
133 | + Project.any_instance.expects(:update).with(@subject_params).returns(false) | ||
134 | + | ||
135 | + post :update, :id => @subject.id, :project => @subject_params | ||
136 | + end | ||
137 | + | ||
138 | + it { should render_template(:edit) } | ||
139 | + end | ||
140 | + end | ||
141 | + | ||
142 | +end | ||
96 | \ No newline at end of file | 143 | \ No newline at end of file |
spec/models/project_spec.rb
@@ -31,5 +31,32 @@ describe Project do | @@ -31,5 +31,32 @@ describe Project do | ||
31 | end | 31 | end |
32 | end | 32 | end |
33 | end | 33 | end |
34 | + | ||
35 | + describe 'update' do | ||
36 | + before :each do | ||
37 | + @qt = FactoryGirl.build(:project) | ||
38 | + @qt_params = Hash[FactoryGirl.attributes_for(:project).map { |k,v| [k.to_s, v.to_s] }] #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers | ||
39 | + end | ||
40 | + | ||
41 | + context 'with valid attributes' do | ||
42 | + before :each do | ||
43 | + @qt.expects(:save).returns(true) | ||
44 | + end | ||
45 | + | ||
46 | + it 'should return true' do | ||
47 | + @qt.update(@qt_params).should eq(true) | ||
48 | + end | ||
49 | + end | ||
50 | + | ||
51 | + context 'with invalid attributes' do | ||
52 | + before :each do | ||
53 | + @qt.expects(:save).returns(false) | ||
54 | + end | ||
55 | + | ||
56 | + it 'should return false' do | ||
57 | + @qt.update(@qt_params).should eq(false) | ||
58 | + end | ||
59 | + end | ||
60 | + end | ||
34 | end | 61 | end |
35 | end | 62 | end |