@ -309,14 +309,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