context 'when the payload is a Collection with inlined replies' do
context 'when passing the collection itself' do
it 'spawns workers for up to 5 replies on the same server' do
- allow(FetchReplyWorker).to receive(:push_bulk)
+ expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
subject.call(status, payload)
- expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
end
end
end
it 'spawns workers for up to 5 replies on the same server' do
- allow(FetchReplyWorker).to receive(:push_bulk)
+ expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
subject.call(status, collection_uri)
- expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
end
end
end
context 'when passing the collection itself' do
it 'spawns workers for up to 5 replies on the same server' do
- allow(FetchReplyWorker).to receive(:push_bulk)
+ expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
subject.call(status, payload)
- expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
end
end
end
it 'spawns workers for up to 5 replies on the same server' do
- allow(FetchReplyWorker).to receive(:push_bulk)
+ expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
subject.call(status, collection_uri)
- expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
end
end
end
context 'when passing the collection itself' do
it 'spawns workers for up to 5 replies on the same server' do
- allow(FetchReplyWorker).to receive(:push_bulk)
+ expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
subject.call(status, payload)
- expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
end
end
end
it 'spawns workers for up to 5 replies on the same server' do
- allow(FetchReplyWorker).to receive(:push_bulk)
+ expect(FetchReplyWorker).to receive(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
subject.call(status, collection_uri)
- expect(FetchReplyWorker).to have_received(:push_bulk).with(['http://example.com/self-reply-1', 'http://example.com/self-reply-2', 'http://example.com/self-reply-3', 'http://example.com/self-reply-4', 'http://example.com/self-reply-5'])
end
end
end
def json_str_to_hash(str)
JSON.parse(str, symbolize_names: true)
end
+
+def expect_push_bulk_to_match(klass, matcher)
+ expect(Sidekiq::Client).to receive(:push_bulk).with(hash_including({
+ "class" => klass,
+ "args" => matcher
+ }))
+end
describe '#perform' do
before do
- allow(ActivityPub::DeliveryWorker).to receive(:push_bulk)
follower.follow!(account)
end
it 'delivers to followers' do
+ expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), account.id, 'http://example.com']])
subject.perform(status.id)
- expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['http://example.com'])
end
end
end
describe '#perform' do
before do
- allow(ActivityPub::DeliveryWorker).to receive(:push_bulk)
follower.follow!(status.account)
end
end
it 'delivers to followers' do
+ expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), status.account.id, 'http://example.com', anything]])
subject.perform(status.id)
- expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['http://example.com'])
end
end
end
it 'delivers to followers' do
+ expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), status.account.id, 'http://example.com', anything]])
subject.perform(status.id)
- expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['http://example.com'])
end
end
end
it 'delivers to mentioned accounts' do
+ expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), status.account.id, 'https://foo.bar/inbox', anything]])
subject.perform(status.id)
- expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['https://foo.bar/inbox'])
end
end
end
describe '#perform' do
before do
- allow(ActivityPub::DeliveryWorker).to receive(:push_bulk)
follower.follow!(migration.account)
blocker.block!(migration.account)
end
it 'delivers to followers and known blockers' do
+ expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [
+ [kind_of(String), migration.account.id, 'http://example.com'],
+ [kind_of(String), migration.account.id, 'http://example2.com']
+ ])
subject.perform(migration.id)
- expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['http://example.com', 'http://example2.com'])
end
end
end
end
it 'delivers to followers' do
- expect(ActivityPub::DeliveryWorker).to receive(:push_bulk) do |items, &block|
- expect(items.map(&block)).to match([[kind_of(String), status.account.id, 'http://example.com', anything]])
- end
+ expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), status.account.id, 'http://example.com', anything]])
subject.perform(status.id)
end
end
it 'delivers to followers' do
- expect(ActivityPub::DeliveryWorker).to receive(:push_bulk) do |items, &block|
- expect(items.map(&block)).to match([[kind_of(String), status.account.id, 'http://example.com', anything]])
- end
+ expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), status.account.id, 'http://example.com', anything]])
subject.perform(status.id)
end
describe '#perform' do
before do
- allow(ActivityPub::DeliveryWorker).to receive(:push_bulk)
follower.follow!(account)
end
it 'delivers to followers' do
+ expect_push_bulk_to_match(ActivityPub::DeliveryWorker, [[kind_of(String), account.id, 'http://example.com', anything]])
subject.perform(account.id)
- expect(ActivityPub::DeliveryWorker).to have_received(:push_bulk).with(['http://example.com'])
end
end
end
blocking_account.block!(source_account)
muting_account.mute!(source_account)
- allow(UnfollowFollowWorker).to receive(:push_bulk)
allow(BlockService).to receive(:new).and_return(block_service)
allow(block_service).to receive(:call)
end
context 'both accounts are distant' do
describe 'perform' do
it 'calls UnfollowFollowWorker' do
+ expect_push_bulk_to_match(UnfollowFollowWorker, [[local_follower.id, source_account.id, target_account.id, false]])
subject.perform(source_account.id, target_account.id)
- expect(UnfollowFollowWorker).to have_received(:push_bulk).with([local_follower.id])
end
include_examples 'user note handling'
describe 'perform' do
it 'calls UnfollowFollowWorker' do
+ expect_push_bulk_to_match(UnfollowFollowWorker, [[local_follower.id, source_account.id, target_account.id, true]])
subject.perform(source_account.id, target_account.id)
- expect(UnfollowFollowWorker).to have_received(:push_bulk).with([local_follower.id])
end
include_examples 'user note handling'