Commit 476a4f1184277502983c660aa80f539e9ab96a17
Committed by
Rafael Manzo
1 parent
938e63fe
Exists in
colab
and in
4 other branches
Refactored project controller unit test to use mocks instead of touch the database
Showing
1 changed file
with
16 additions
and
5 deletions
Show diff stats
spec/controllers/projects_controller_spec.rb
| ... | ... | @@ -114,7 +114,10 @@ describe ProjectsController do |
| 114 | 114 | before do |
| 115 | 115 | @user = FactoryGirl.create(:user) |
| 116 | 116 | @subject = FactoryGirl.build(:project) |
| 117 | - FactoryGirl.create(:project_ownership, {user_id: @user.id, project_id: @subject.id}) | |
| 117 | + @ownership = FactoryGirl.build(:project_ownership) | |
| 118 | + @ownerships = [] | |
| 119 | + | |
| 120 | + User.any_instance.expects(:project_ownerships).at_least_once.returns(@ownerships) | |
| 118 | 121 | |
| 119 | 122 | sign_in @user |
| 120 | 123 | end |
| ... | ... | @@ -122,6 +125,8 @@ describe ProjectsController do |
| 122 | 125 | context 'when the user owns the project' do |
| 123 | 126 | before :each do |
| 124 | 127 | Project.expects(:find).with(@subject.id.to_s).returns(@subject) |
| 128 | + @ownerships.expects(:find_by_project_id).with("#{@subject.id}").returns(@ownership) | |
| 129 | + | |
| 125 | 130 | get :edit, :id => @subject.id |
| 126 | 131 | end |
| 127 | 132 | |
| ... | ... | @@ -135,6 +140,7 @@ describe ProjectsController do |
| 135 | 140 | context 'when the user does not own the project' do |
| 136 | 141 | before do |
| 137 | 142 | @subject = FactoryGirl.build(:another_project) |
| 143 | + @ownerships.expects(:find_by_project_id).with("#{@subject.id}").returns(nil) | |
| 138 | 144 | |
| 139 | 145 | get :edit, :id => @subject.id |
| 140 | 146 | end |
| ... | ... | @@ -152,6 +158,7 @@ describe ProjectsController do |
| 152 | 158 | describe 'update' do |
| 153 | 159 | before do |
| 154 | 160 | @user = FactoryGirl.create(:user) |
| 161 | + | |
| 155 | 162 | sign_in @user |
| 156 | 163 | end |
| 157 | 164 | |
| ... | ... | @@ -159,9 +166,11 @@ describe ProjectsController do |
| 159 | 166 | before :each do |
| 160 | 167 | @subject = FactoryGirl.build(:project) |
| 161 | 168 | @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 |
| 169 | + @ownership = FactoryGirl.build(:project_ownership) | |
| 170 | + @ownerships = [] | |
| 162 | 171 | |
| 163 | - FactoryGirl.create(:project_ownership, {user_id: @user.id, project_id: @subject.id}) | |
| 164 | - | |
| 172 | + @ownerships.expects(:find_by_project_id).with("#{@subject.id}").returns(@ownership) | |
| 173 | + User.any_instance.expects(:project_ownerships).at_least_once.returns(@ownerships) | |
| 165 | 174 | Project.expects(:find).with(@subject.id.to_s).returns(@subject) |
| 166 | 175 | Project.any_instance.expects(:update).with(@subject_params).returns(true) |
| 167 | 176 | end |
| ... | ... | @@ -191,9 +200,11 @@ describe ProjectsController do |
| 191 | 200 | before :each do |
| 192 | 201 | @subject = FactoryGirl.build(:project) |
| 193 | 202 | @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 |
| 203 | + @ownership = FactoryGirl.build(:project_ownership) | |
| 204 | + @ownerships = [] | |
| 194 | 205 | |
| 195 | - FactoryGirl.create(:project_ownership, {user_id: @user.id, project_id: @subject.id}) | |
| 196 | - | |
| 206 | + @ownerships.expects(:find_by_project_id).with("#{@subject.id}").returns(@ownership) | |
| 207 | + User.any_instance.expects(:project_ownerships).at_least_once.returns(@ownerships) | |
| 197 | 208 | Project.expects(:find).with(@subject.id.to_s).returns(@subject) |
| 198 | 209 | Project.any_instance.expects(:update).with(@subject_params).returns(false) |
| 199 | 210 | ... | ... |