Add public_unlisted/login visibilities to public_feed_spec

This commit is contained in:
KMY 2023-08-08 12:34:27 +09:00
parent c090b20f39
commit daa0f170c6
2 changed files with 61 additions and 17 deletions

View file

@ -6,14 +6,36 @@ RSpec.describe PublicFeed do
let(:account) { Fabricate(:account) }
describe '#get' do
subject { described_class.new(nil).get(20).map(&:id) }
subject { described_class.new(viewer).get(20).map(&:id) }
it 'only includes statuses with public visibility' do
public_status = Fabricate(:status, visibility: :public)
private_status = Fabricate(:status, visibility: :private)
let(:viewer) { nil }
expect(subject).to include(public_status.id)
expect(subject).to_not include(private_status.id)
context 'with only includes statuses with public visibility' do
let!(:public_status) { Fabricate(:status, visibility: :public) }
let!(:login_status) { Fabricate(:status, visibility: :login) }
let!(:unlisted_status) { Fabricate(:status, visibility: :unlisted) }
let!(:private_status) { Fabricate(:status, visibility: :private) }
let!(:direct_status) { Fabricate(:status, visibility: :direct) }
it 'without user' do
expect(subject).to include(public_status.id)
expect(subject).to_not include(login_status.id)
expect(subject).to_not include(unlisted_status.id)
expect(subject).to_not include(private_status.id)
expect(subject).to_not include(direct_status.id)
end
context 'with user' do
let(:viewer) { account }
it 'on global timeline' do
expect(subject).to include(public_status.id)
expect(subject).to include(login_status.id)
expect(subject).to_not include(unlisted_status.id)
expect(subject).to_not include(private_status.id)
expect(subject).to_not include(direct_status.id)
end
end
end
it 'does not include replies' do
@ -50,6 +72,7 @@ RSpec.describe PublicFeed do
let!(:remote_account) { Fabricate(:account, domain: 'test.com') }
let!(:local_status) { Fabricate(:status, account: local_account) }
let!(:remote_status) { Fabricate(:status, account: remote_account) }
let!(:public_unlisted_status) { Fabricate(:status, account: local_account, visibility: :public_unlisted) }
context 'without a viewer' do
let(:viewer) { nil }
@ -61,6 +84,10 @@ RSpec.describe PublicFeed do
it 'includes local statuses' do
expect(subject).to include(local_status.id)
end
it 'excludes public_unlisted statuses' do
expect(subject).to_not include(public_unlisted_status.id)
end
end
context 'with a viewer' do
@ -73,6 +100,10 @@ RSpec.describe PublicFeed do
it 'includes local statuses' do
expect(subject).to include(local_status.id)
end
it 'excludes public_unlisted statuses' do
expect(subject).to_not include(public_unlisted_status.id)
end
end
end
@ -83,6 +114,7 @@ RSpec.describe PublicFeed do
let!(:remote_account) { Fabricate(:account, domain: 'test.com') }
let!(:local_status) { Fabricate(:status, account: local_account) }
let!(:remote_status) { Fabricate(:status, account: remote_account) }
let!(:public_unlisted_status) { Fabricate(:status, account: local_account, visibility: :public_unlisted) }
context 'without a viewer' do
let(:viewer) { nil }
@ -91,6 +123,10 @@ RSpec.describe PublicFeed do
expect(subject).to include(local_status.id)
expect(subject).to_not include(remote_status.id)
end
it 'includes public_unlisted statuses' do
expect(subject).to include(public_unlisted_status.id)
end
end
context 'with a viewer' do
@ -106,6 +142,10 @@ RSpec.describe PublicFeed do
expect(subject).to include(local_status.id)
expect(subject).to_not include(remote_status.id)
end
it 'includes public_unlisted statuses' do
expect(subject).to include(public_unlisted_status.id)
end
end
end
@ -116,6 +156,7 @@ RSpec.describe PublicFeed do
let!(:remote_account) { Fabricate(:account, domain: 'test.com') }
let!(:local_status) { Fabricate(:status, account: local_account) }
let!(:remote_status) { Fabricate(:status, account: remote_account) }
let!(:public_unlisted_status) { Fabricate(:status, account: local_account, visibility: :public_unlisted) }
context 'without a viewer' do
let(:viewer) { nil }
@ -124,6 +165,10 @@ RSpec.describe PublicFeed do
expect(subject).to_not include(local_status.id)
expect(subject).to include(remote_status.id)
end
it 'excludes public_unlisted statuses' do
expect(subject).to_not include(public_unlisted_status.id)
end
end
context 'with a viewer' do
@ -133,6 +178,10 @@ RSpec.describe PublicFeed do
expect(subject).to_not include(local_status.id)
expect(subject).to include(remote_status.id)
end
it 'excludes public_unlisted statuses' do
expect(subject).to_not include(public_unlisted_status.id)
end
end
end