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