From: Anton Khorev Date: Wed, 24 Jul 2024 01:22:49 +0000 (+0300) Subject: Allow to edit inactive blocks X-Git-Tag: live~542^2~2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/51708d6238b933f6ca96fe05fcab2e5437cd3d3b?ds=sidebyside;hp=-c Allow to edit inactive blocks --- 51708d6238b933f6ca96fe05fcab2e5437cd3d3b diff --git a/app/controllers/user_blocks_controller.rb b/app/controllers/user_blocks_controller.rb index 9ee371226..3ab217a60 100644 --- a/app/controllers/user_blocks_controller.rb +++ b/app/controllers/user_blocks_controller.rb @@ -142,9 +142,6 @@ class UserBlocksController < ApplicationController if UserBlock::PERIODS.exclude?(@block_period) flash[:error] = t("user_blocks.filter.block_period") - elsif @user_block && !@user_block.active? - flash[:error] = t("user_blocks.filter.block_expired") - else @valid_params = true end diff --git a/config/locales/en.yml b/config/locales/en.yml index 1def0f3eb..2b83fec1f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2935,7 +2935,6 @@ en: show: "View this block" back: "View all blocks" filter: - block_expired: "The block has already expired and cannot be edited." block_period: "The blocking period must be one of the values selectable in the drop-down list." create: flash: "Created a block on user %{name}." diff --git a/test/controllers/user_blocks_controller_test.rb b/test/controllers/user_blocks_controller_test.rb index b6aaf4ca8..328e2cc40 100644 --- a/test/controllers/user_blocks_controller_test.rb +++ b/test/controllers/user_blocks_controller_test.rb @@ -406,6 +406,43 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest assert_select "p", "Sorry, the user block with ID 99999 could not be found." end + ## + # test the update action on expired blocks + def test_update_expired + creator_user = create(:moderator_user) + other_moderator_user = create(:moderator_user) + block = create(:user_block, :expired, :creator => creator_user, :reason => "Original Reason") + + session_for(other_moderator_user) + put user_block_path(block, + :user_block_period => "0", + :user_block => { :needs_view => false, :reason => "Updated Reason" }) + assert_redirected_to edit_user_block_path(block) + assert_equal "Only the moderator who created this block can edit it.", flash[:error] + block.reload + assert_not block.active? + assert_equal "Original Reason", block.reason + + session_for(creator_user) + 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 block.active? + assert_equal "Updated Reason", block.reason + + put user_block_path(block, + :user_block_period => "0", + :user_block => { :needs_view => true, :reason => "Updated Reason 2" }) + assert_redirected_to user_block_path(block) + assert_equal "Block updated.", flash[:notice] + block.reload + assert_predicate block, :active? + assert_equal "Updated Reason 2", block.reason + end + ## # test the revoke action def test_revoke