-
Notifications
You must be signed in to change notification settings - Fork 928
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7a4115f
commit 2df389c
Showing
11 changed files
with
146 additions
and
121 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
module Users | ||
class ReceivedBlocksController < ApplicationController | ||
include UserMethods | ||
include PaginationMethods | ||
|
||
layout "site" | ||
|
||
before_action :authorize_web | ||
before_action :set_locale | ||
|
||
authorize_resource :class => UserBlock | ||
|
||
before_action :lookup_user | ||
before_action :check_database_readable | ||
|
||
## | ||
# shows a list of all the blocks on the given user | ||
def show | ||
@params = params.permit(:user_display_name) | ||
|
||
user_blocks = UserBlock.where(:user => @user) | ||
|
||
@user_blocks, @newer_user_blocks_id, @older_user_blocks_id = get_page_items(user_blocks, :includes => [:user, :creator, :revoker]) | ||
|
||
@show_user_name = false | ||
@show_creator_name = true | ||
|
||
render :partial => "user_blocks/page" if turbo_frame_request_id == "pagination" | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
require "test_helper" | ||
require_relative "../user_blocks/table_test_helper" | ||
|
||
module Users | ||
class ReceivedBlocksControllerTest < ActionDispatch::IntegrationTest | ||
include UserBlocks::TableTestHelper | ||
|
||
## | ||
# test all routes which lead to this controller | ||
def test_routes | ||
assert_routing( | ||
{ :path => "/user/username/blocks", :method => :get }, | ||
{ :controller => "users/received_blocks", :action => "show", :user_display_name => "username" } | ||
) | ||
end | ||
|
||
def test_show | ||
blocked_user = create(:user) | ||
unblocked_user = create(:user) | ||
normal_user = create(:user) | ||
active_block = create(:user_block, :user => blocked_user) | ||
revoked_block = create(:user_block, :revoked, :user => blocked_user) | ||
expired_block = create(:user_block, :expired, :user => unblocked_user) | ||
|
||
# Asking for a list of blocks with a bogus user name should fail | ||
get user_received_blocks_path("non_existent_user") | ||
assert_response :not_found | ||
assert_template "users/no_such_user" | ||
assert_select "h1", "The user non_existent_user does not exist" | ||
|
||
# Check the list of blocks for a user that has never been blocked | ||
get user_received_blocks_path(normal_user) | ||
assert_response :success | ||
assert_select "table#block_list", false | ||
assert_select "p", "#{normal_user.display_name} has not been blocked yet." | ||
|
||
# Check the list of blocks for a user that is currently blocked | ||
get user_received_blocks_path(blocked_user) | ||
assert_response :success | ||
assert_select "h1 a[href='#{user_path blocked_user}']", :text => blocked_user.display_name | ||
assert_select "a.active[href='#{user_received_blocks_path blocked_user}']" | ||
assert_select "table#block_list tbody", :count => 1 do | ||
assert_select "tr", 2 | ||
assert_select "a[href='#{user_block_path(active_block)}']", 1 | ||
assert_select "a[href='#{user_block_path(revoked_block)}']", 1 | ||
end | ||
|
||
# Check the list of blocks for a user that has previously been blocked | ||
get user_received_blocks_path(unblocked_user) | ||
assert_response :success | ||
assert_select "h1 a[href='#{user_path unblocked_user}']", :text => unblocked_user.display_name | ||
assert_select "a.active[href='#{user_received_blocks_path unblocked_user}']" | ||
assert_select "table#block_list tbody", :count => 1 do | ||
assert_select "tr", 1 | ||
assert_select "a[href='#{user_block_path(expired_block)}']", 1 | ||
end | ||
end | ||
|
||
def test_show_paged | ||
user = create(:user) | ||
user_blocks = create_list(:user_block, 50, :user => user).reverse | ||
next_path = user_received_blocks_path(user) | ||
|
||
get next_path | ||
assert_response :success | ||
check_user_blocks_table user_blocks[0...20] | ||
check_no_page_link "Newer Blocks" | ||
next_path = check_page_link "Older Blocks" | ||
|
||
get next_path | ||
assert_response :success | ||
check_user_blocks_table user_blocks[20...40] | ||
check_page_link "Newer Blocks" | ||
next_path = check_page_link "Older Blocks" | ||
|
||
get next_path | ||
assert_response :success | ||
check_user_blocks_table user_blocks[40...50] | ||
check_page_link "Newer Blocks" | ||
check_no_page_link "Older Blocks" | ||
end | ||
|
||
def test_show_invalid_paged | ||
user = create(:user) | ||
|
||
%w[-1 0 fred].each do |id| | ||
get user_received_blocks_path(user, :before => id) | ||
assert_redirected_to :controller => "/errors", :action => :bad_request | ||
|
||
get user_received_blocks_path(user, :after => id) | ||
assert_redirected_to :controller => "/errors", :action => :bad_request | ||
end | ||
end | ||
end | ||
end |