From 51708d6238b933f6ca96fe05fcab2e5437cd3d3b Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Wed, 24 Jul 2024 04:22:49 +0300 Subject: [PATCH] Allow to edit inactive blocks --- app/controllers/user_blocks_controller.rb | 3 -- config/locales/en.yml | 1 - .../user_blocks_controller_test.rb | 37 +++++++++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) 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 -- 2.39.5