From d750cc3e808191e9a5a7a43148bd91b42a1b16e8 Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Wed, 24 Jul 2024 04:44:59 +0300 Subject: [PATCH] Show edit links for inactive blocks in block lists --- app/views/user_blocks/_block.html.erb | 2 +- .../user_blocks_controller_test.rb | 57 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/app/views/user_blocks/_block.html.erb b/app/views/user_blocks/_block.html.erb index 50fe74e4c..461dc7a8d 100644 --- a/app/views/user_blocks/_block.html.erb +++ b/app/views/user_blocks/_block.html.erb @@ -15,7 +15,7 @@ <% end %> <%= link_to t(".show"), block %> - <% if current_user and current_user.id == block.creator_id and block.active? %><%= link_to t(".edit"), edit_user_block_path(block) %><% end %> + <% if current_user and current_user.id == block.creator_id %><%= link_to t(".edit"), edit_user_block_path(block) %><% end %> <% if show_revoke_link %> <% if block.active? %><%= link_to t(".revoke"), revoke_user_block_path(block) %><% end %> <% end %> diff --git a/test/controllers/user_blocks_controller_test.rb b/test/controllers/user_blocks_controller_test.rb index 328e2cc40..45c70c50b 100644 --- a/test/controllers/user_blocks_controller_test.rb +++ b/test/controllers/user_blocks_controller_test.rb @@ -169,6 +169,63 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest assert_not UserBlock.find(active_block.id).needs_view end + ## + # test edit/revoke link for active blocks + def test_active_block_buttons + creator_user = create(:moderator_user) + other_moderator_user = create(:moderator_user) + block = create(:user_block, :creator => creator_user) + + session_for(other_moderator_user) + check_block_buttons block, :revoke => 1 + + session_for(creator_user) + check_block_buttons block, :edit => 1, :revoke => 1 + end + + ## + # test the edit link for expired blocks + def test_expired_block_buttons + creator_user = create(:moderator_user) + other_moderator_user = create(:moderator_user) + block = create(:user_block, :expired, :creator => creator_user) + + session_for(other_moderator_user) + check_block_buttons block + + session_for(creator_user) + check_block_buttons block, :edit => 1 + end + + ## + # test the edit link for revoked blocks + def test_revoked_block_buttons + creator_user = create(:moderator_user) + revoker_user = create(:moderator_user) + other_moderator_user = create(:moderator_user) + block = create(:user_block, :revoked, :creator => creator_user, :revoker => revoker_user) + + session_for(other_moderator_user) + check_block_buttons block + + session_for(creator_user) + check_block_buttons block, :edit => 1 + + session_for(revoker_user) + check_block_buttons block + end + + private + + def check_block_buttons(block, edit: 0, revoke: 0) + get user_blocks_path + assert_response :success + assert_select "a[href='#{edit_user_block_path block}']", :count => edit + assert_select "a[href='#{revoke_user_block_path block}']", :count => revoke + end + + public + ## # test the new action def test_new -- 2.39.5