|
|
|
@ -291,14 +291,109 @@ RSpec.describe FeedManager do |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
describe '#push_to_list' do |
|
|
|
|
let(:owner) { Fabricate(:account, username: 'owner') } |
|
|
|
|
let(:alice) { Fabricate(:account, username: 'alice') } |
|
|
|
|
let(:bob) { Fabricate(:account, username: 'bob') } |
|
|
|
|
let(:eve) { Fabricate(:account, username: 'eve') } |
|
|
|
|
let(:list) { Fabricate(:list, account: owner) } |
|
|
|
|
|
|
|
|
|
before do |
|
|
|
|
owner.follow!(alice) |
|
|
|
|
owner.follow!(bob) |
|
|
|
|
owner.follow!(eve) |
|
|
|
|
|
|
|
|
|
list.accounts << alice |
|
|
|
|
list.accounts << bob |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it "does not push when the given status's reblog is already inserted" do |
|
|
|
|
list = Fabricate(:list) |
|
|
|
|
reblog = Fabricate(:status) |
|
|
|
|
status = Fabricate(:status, reblog: reblog) |
|
|
|
|
FeedManager.instance.push_to_list(list, status) |
|
|
|
|
|
|
|
|
|
expect(FeedManager.instance.push_to_list(list, reblog)).to eq false |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context 'when replies policy is set to no replies' do |
|
|
|
|
before do |
|
|
|
|
list.replies_policy = :no_replies |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'pushes statuses that are not replies' do |
|
|
|
|
status = Fabricate(:status, text: 'Hello world', account: bob) |
|
|
|
|
expect(FeedManager.instance.push_to_list(list, status)).to eq true |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'pushes statuses that are replies to list owner' do |
|
|
|
|
status = Fabricate(:status, text: 'Hello world', account: owner) |
|
|
|
|
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) |
|
|
|
|
expect(FeedManager.instance.push_to_list(list, reply)).to eq true |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'does not push replies to another member of the list' do |
|
|
|
|
status = Fabricate(:status, text: 'Hello world', account: alice) |
|
|
|
|
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) |
|
|
|
|
expect(FeedManager.instance.push_to_list(list, reply)).to eq false |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context 'when replies policy is set to list-only replies' do |
|
|
|
|
before do |
|
|
|
|
list.replies_policy = :list_replies |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'pushes statuses that are not replies' do |
|
|
|
|
status = Fabricate(:status, text: 'Hello world', account: bob) |
|
|
|
|
expect(FeedManager.instance.push_to_list(list, status)).to eq true |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'pushes statuses that are replies to list owner' do |
|
|
|
|
status = Fabricate(:status, text: 'Hello world', account: owner) |
|
|
|
|
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) |
|
|
|
|
expect(FeedManager.instance.push_to_list(list, reply)).to eq true |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'pushes replies to another member of the list' do |
|
|
|
|
status = Fabricate(:status, text: 'Hello world', account: alice) |
|
|
|
|
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) |
|
|
|
|
expect(FeedManager.instance.push_to_list(list, reply)).to eq true |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'does not push replies to someone not a member of the list' do |
|
|
|
|
status = Fabricate(:status, text: 'Hello world', account: eve) |
|
|
|
|
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) |
|
|
|
|
expect(FeedManager.instance.push_to_list(list, reply)).to eq false |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
context 'when replies policy is set to any reply' do |
|
|
|
|
before do |
|
|
|
|
list.replies_policy = :all_replies |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'pushes statuses that are not replies' do |
|
|
|
|
status = Fabricate(:status, text: 'Hello world', account: bob) |
|
|
|
|
expect(FeedManager.instance.push_to_list(list, status)).to eq true |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'pushes statuses that are replies to list owner' do |
|
|
|
|
status = Fabricate(:status, text: 'Hello world', account: owner) |
|
|
|
|
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) |
|
|
|
|
expect(FeedManager.instance.push_to_list(list, reply)).to eq true |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'pushes replies to another member of the list' do |
|
|
|
|
status = Fabricate(:status, text: 'Hello world', account: alice) |
|
|
|
|
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) |
|
|
|
|
expect(FeedManager.instance.push_to_list(list, reply)).to eq true |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
it 'pushes replies to someone not a member of the list' do |
|
|
|
|
status = Fabricate(:status, text: 'Hello world', account: eve) |
|
|
|
|
reply = Fabricate(:status, text: 'Nay', thread: status, account: bob) |
|
|
|
|
expect(FeedManager.instance.push_to_list(list, reply)).to eq true |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
describe '#merge_into_timeline' do |
|
|
|
|