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
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