Show pinned statuses only in the top of the profile page (#4803)
* Show pinned statuses only in the top of the profile page * Refactor AccountsController#show_pinned_statuses?
This commit is contained in:
parent
b6f3869f8d
commit
2293466edd
|
@ -14,7 +14,7 @@ class AccountsController < ApplicationController
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@pinned_statuses = cache_collection(@account.pinned_statuses, Status) unless media_requested?
|
@pinned_statuses = cache_collection(@account.pinned_statuses, Status) if show_pinned_statuses?
|
||||||
@statuses = filtered_statuses.paginate_by_max_id(20, params[:max_id], params[:since_id])
|
@statuses = filtered_statuses.paginate_by_max_id(20, params[:max_id], params[:since_id])
|
||||||
@statuses = cache_collection(@statuses, Status)
|
@statuses = cache_collection(@statuses, Status)
|
||||||
@next_url = next_url unless @statuses.empty?
|
@next_url = next_url unless @statuses.empty?
|
||||||
|
@ -33,6 +33,10 @@ class AccountsController < ApplicationController
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def show_pinned_statuses?
|
||||||
|
[replies_requested?, media_requested?, params[:max_id].present?, params[:since_id].present?].none?
|
||||||
|
end
|
||||||
|
|
||||||
def filtered_statuses
|
def filtered_statuses
|
||||||
default_statuses.tap do |statuses|
|
default_statuses.tap do |statuses|
|
||||||
statuses.merge!(only_media_scope) if media_requested?
|
statuses.merge!(only_media_scope) if media_requested?
|
||||||
|
|
|
@ -61,7 +61,29 @@ RSpec.describe AccountsController, type: :controller do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'html' do
|
context 'html without since_id nor max_id' do
|
||||||
|
before do
|
||||||
|
get :show, params: { username: alice.username }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'assigns @account' do
|
||||||
|
expect(assigns(:account)).to eq alice
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'assigns @pinned_statuses' do
|
||||||
|
pinned_statuses = assigns(:pinned_statuses).to_a
|
||||||
|
expect(pinned_statuses.size).to eq 3
|
||||||
|
expect(pinned_statuses[0]).to eq status7
|
||||||
|
expect(pinned_statuses[1]).to eq status5
|
||||||
|
expect(pinned_statuses[2]).to eq status6
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns http success' do
|
||||||
|
expect(response).to have_http_status(:success)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'html with since_id and max_id' do
|
||||||
before do
|
before do
|
||||||
get :show, params: { username: alice.username, max_id: status4.id, since_id: status1.id }
|
get :show, params: { username: alice.username, max_id: status4.id, since_id: status1.id }
|
||||||
end
|
end
|
||||||
|
@ -77,12 +99,9 @@ RSpec.describe AccountsController, type: :controller do
|
||||||
expect(statuses[1]).to eq status2
|
expect(statuses[1]).to eq status2
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'assigns @pinned_statuses' do
|
it 'assigns an empty array to @pinned_statuses' do
|
||||||
pinned_statuses = assigns(:pinned_statuses).to_a
|
pinned_statuses = assigns(:pinned_statuses).to_a
|
||||||
expect(pinned_statuses.size).to eq 3
|
expect(pinned_statuses.size).to eq 0
|
||||||
expect(pinned_statuses[0]).to eq status7
|
|
||||||
expect(pinned_statuses[1]).to eq status5
|
|
||||||
expect(pinned_statuses[2]).to eq status6
|
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns http success' do
|
it 'returns http success' do
|
||||||
|
|
Reference in a new issue