return
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 = cache_collection(@statuses, Status)
@next_url = next_url unless @statuses.empty?
private
+ def show_pinned_statuses?
+ [replies_requested?, media_requested?, params[:max_id].present?, params[:since_id].present?].none?
+ end
+
def filtered_statuses
default_statuses.tap do |statuses|
statuses.merge!(only_media_scope) if media_requested?
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
get :show, params: { username: alice.username, max_id: status4.id, since_id: status1.id }
end
expect(statuses[1]).to eq status2
end
- it 'assigns @pinned_statuses' do
+ it 'assigns an empty array to @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
+ expect(pinned_statuses.size).to eq 0
end
it 'returns http success' do