Let all moderators revoke blocks by editing

This commit is contained in:
Anton Khorev 2024-08-21 16:51:19 +03:00
parent 67a5809c8a
commit 5e7ab68721
3 changed files with 37 additions and 18 deletions

View file

@ -391,7 +391,6 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
# test the update action
def test_update
moderator_user = create(:moderator_user)
second_moderator_user = create(:moderator_user)
active_block = create(:user_block, :creator => moderator_user)
# Not logged in yet, so updating a block should fail
@ -405,19 +404,7 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
put user_block_path(:id => active_block)
assert_redirected_to :controller => "errors", :action => "forbidden"
# Login as the wrong moderator
session_for(second_moderator_user)
# Check that only the person who created a block can update it
assert_no_difference "UserBlock.count" do
put user_block_path(:id => active_block,
:user_block_period => "12",
:user_block => { :needs_view => true, :reason => "Vandalism" })
end
assert_redirected_to edit_user_block_path(active_block)
assert_equal "Only the moderator who created this block can edit it.", flash[:error]
# Login as the correct moderator
# Login as the moderator
session_for(moderator_user)
# A bogus block period should result in an error
@ -495,7 +482,7 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
##
# test the update action revoking the block
def test_revoke_using_update
def test_revoke_using_update_by_creator
moderator_user = create(:moderator_user)
block = create(:user_block, :creator => moderator_user)
@ -503,6 +490,8 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
put user_block_path(block,
:user_block_period => "24",
:user_block => { :needs_view => false, :reason => "Updated Reason" })
assert_redirected_to user_block_path(block)
assert_equal "Block updated.", flash[:notice]
block.reload
assert_predicate block, :active?
assert_nil block.revoker
@ -510,11 +499,38 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
put user_block_path(block,
:user_block_period => "0",
:user_block => { :needs_view => false, :reason => "Updated Reason" })
assert_redirected_to user_block_path(block)
assert_equal "Block updated.", flash[:notice]
block.reload
assert_not_predicate block, :active?
assert_equal moderator_user, block.revoker
end
def test_revoke_using_update_by_other_moderator
creator_user = create(:moderator_user)
other_moderator_user = create(:moderator_user)
block = create(:user_block, :creator => creator_user)
session_for(other_moderator_user)
put user_block_path(block,
:user_block_period => "24",
:user_block => { :needs_view => false, :reason => "Updated Reason" })
assert_response :success
assert_equal "Only the moderator who created this block can edit it without revoking.", flash[:error]
block.reload
assert_predicate block, :active?
assert_nil block.revoker
put user_block_path(block,
:user_block_period => "0",
:user_block => { :needs_view => false, :reason => "Updated Reason" })
assert_redirected_to user_block_path(block)
assert_equal "Block updated.", flash[:notice]
block.reload
assert_not_predicate block, :active?
assert_equal other_moderator_user, block.revoker
end
##
# test the revoke action
def test_revoke