Cover AccountsController more in spec (#3229)

* Introduce recent scope to Status and StreamEntry

Introduce recent scope to Status and StreamEntry as Account has.

* Cover AccountsController more in AccountsController
This commit is contained in:
Akihiko Odaki 2017-05-23 09:53:01 +09:00 committed by Eugen Rochko
parent 9afd7dadbf
commit 8fd174298d
4 changed files with 38 additions and 9 deletions

View file

@ -6,12 +6,12 @@ class AccountsController < ApplicationController
def show
respond_to do |format|
format.html do
@statuses = @account.statuses.permitted_for(@account, current_account).order(id: :desc).paginate_by_max_id(20, params[:max_id], params[:since_id])
@statuses = @account.statuses.permitted_for(@account, current_account).recent.paginate_by_max_id(20, params[:max_id], params[:since_id])
@statuses = cache_collection(@statuses, Status)
end
format.atom do
@entries = @account.stream_entries.order(id: :desc).where(hidden: false).with_includes.paginate_by_max_id(20, params[:max_id], params[:since_id])
@entries = @account.stream_entries.recent.where(hidden: false).with_includes.paginate_by_max_id(20, params[:max_id], params[:since_id])
render xml: AtomSerializer.render(AtomSerializer.new.feed(@account, @entries.to_a))
end

View file

@ -55,8 +55,9 @@ class Status < ApplicationRecord
validates_with StatusLengthValidator
validates :reblog, uniqueness: { scope: :account }, if: :reblog?
default_scope { order(id: :desc) }
default_scope { recent }
scope :recent, -> { reorder(id: :desc) }
scope :remote, -> { where.not(uri: nil) }
scope :local, -> { where(uri: nil) }

View file

@ -25,6 +25,7 @@ class StreamEntry < ApplicationRecord
STATUS_INCLUDES = [:account, :stream_entry, :conversation, :media_attachments, :tags, mentions: :account, reblog: [:stream_entry, :account, :conversation, :media_attachments, :tags, mentions: :account], thread: [:stream_entry, :account]].freeze
default_scope { where(activity_type: 'Status') }
scope :recent, -> { reorder(id: :desc) }
scope :with_includes, -> { includes(:account, status: STATUS_INCLUDES) }
delegate :target, :title, :content, :thread,