@@ -203,6 +203,28 @@ class SourcesControllerTest < ActionController::TestCase
203203 assert_response :success
204204 end
205205
206+ test 'space admin should get edit for source in their space' do
207+ sign_in users ( :space_admin )
208+ source = sources ( :unapproved_source )
209+ space = spaces ( :plants )
210+ source . space = space
211+ source . save!
212+
213+ get :edit , params : { id : source }
214+ assert_response :success
215+ end
216+
217+ test 'space admin should not get edit for source in another space' do
218+ sign_in users ( :space_admin )
219+ source = sources ( :unapproved_source )
220+ space = spaces ( :astro )
221+ source . space = space
222+ source . save!
223+
224+ get :edit , params : { id : source }
225+ assert_response :forbidden
226+ end
227+
206228 # CREATE Tests
207229 test 'public should not create source' do
208230 assert_no_difference 'Source.count' do
@@ -436,9 +458,48 @@ class SourcesControllerTest < ActionController::TestCase
436458 assert source . reload . approved?
437459 end
438460
461+ test 'space admin can approve source in their space' do
462+ sign_in users ( :space_admin )
463+ source = sources ( :unapproved_source )
464+ space = spaces ( :plants )
465+ source . space = space
466+ source . save!
467+ refute source . approved?
468+
469+ patch :update , params : { id : source , source : { approval_status : 'approved' } }
470+
471+ assert_redirected_to source_path ( assigns ( :source ) )
472+ assert source . reload . approved?
473+ end
474+
475+ test 'space admin cannot approve source in other space' do
476+ sign_in users ( :space_admin )
477+ source = sources ( :unapproved_source )
478+ space = spaces ( :astro )
479+ source . space = space
480+ source . save!
481+ refute source . approved?
482+
483+ patch :update , params : { id : source , source : { approval_status : 'approved' } }
484+
485+ assert_response :forbidden
486+ refute source . reload . approved?
487+ end
488+
439489 test 'regular user cannot approve source' do
440- sign_in @user
490+ sign_in users ( :another_regular_user )
491+ source = sources ( :unapproved_source )
492+ refute source . approved?
493+
494+ patch :update , params : { id : source , source : { approval_status : 'approved' } }
495+
496+ assert_response :forbidden
497+ refute source . reload . approved?
498+ end
499+
500+ test 'source owner cannot approve source' do
441501 source = sources ( :unapproved_source )
502+ sign_in source . user
442503 refute source . approved?
443504
444505 patch :update , params : { id : source , source : { approval_status : 'approved' } }
0 commit comments