Examples for Status.as_public_timeline.

Also adjust the examples for Status.as_tag_timeline to match the
nomenclature used in .as_public_timeline (e.g. "account" -> "viewer").
main
David Yip 2017-12-14 02:57:59 -06:00
parent e35a350119
commit 6abb0950c6
No known key found for this signature in database
GPG Key ID: 7DA0036508FCC0CC
1 changed files with 32 additions and 6 deletions

View File

@ -586,6 +586,32 @@ RSpec.describe Status, type: :model do
end
end
end
context 'with local-only statuses' do
let(:status) { Fabricate(:status, local_only: true) }
subject { Status.as_public_timeline(viewer) }
context 'without a viewer' do
let(:viewer) { nil }
it 'excludes local-only statuses' do
expect(subject).to_not include(status)
end
end
context 'with a viewer' do
let(:viewer) { Fabricate(:account, username: 'viewer') }
it 'includes local-only statuses' do
expect(subject).to include(status)
end
end
# TODO: What happens if the viewer is remote?
# Can the viewer be remote?
# What prevents the viewer from being remote?
end
end
describe '.as_tag_timeline' do
@ -612,19 +638,19 @@ RSpec.describe Status, type: :model do
let(:tag) { Fabricate(:tag) }
let(:status) { Fabricate(:status, local_only: true, tags: [tag]) }
context 'if account is nil' do
let(:account) { nil }
context 'without a viewer' do
let(:viewer) { nil }
it 'filters the local-only status out of the result set' do
expect(Status.as_tag_timeline(tag, account)).not_to include(status)
expect(Status.as_tag_timeline(tag, viewer)).not_to include(status)
end
end
context 'if account is not nil and local' do
let(:account) { Fabricate(:account, domain: nil) }
context 'with a viewer' do
let(:viewer) { Fabricate(:account, username: 'viewer', domain: nil) }
it 'keeps the local-only status in the result set' do
expect(Status.as_tag_timeline(tag, account)).to include(status)
expect(Status.as_tag_timeline(tag, viewer)).to include(status)
end
end
end