Add collection reach finder (#39346)

This commit is contained in:
David Roetzel authored and GitHub committed 2026-06-09 14:22:21 +00:00
1 parent 4ee893461d
commit 200fda1cdc
19 files changed
+98 -20

No files matched your search

@@ -25,9 +25,9 @@ RSpec.describe AddAccountToCollectionService do
it 'federates an `Add` activity and schedules a notification' do
subject.call(collection, account)
expect(ActivityPub::AccountRawDistributionWorker)
expect(ActivityPub::CollectionRawDistributionWorker)
.to have_enqueued_sidekiq_job
.with(anything, collection.account_id)
.with(anything, collection.id)
expect(LocalNotificationWorker)
.to have_enqueued_sidekiq_job
.with(account.id, anything, 'CollectionItem', 'added_to_collection')
@@ -32,7 +32,7 @@ RSpec.describe CreateCollectionService do
it 'federates an `Add` activity' do
subject.call(base_params, author)
expect(ActivityPub::AccountRawDistributionWorker).to have_enqueued_sidekiq_job
expect(ActivityPub::CollectionRawDistributionWorker).to have_enqueued_sidekiq_job
end
context 'when given account ids' do
@@ -17,7 +17,7 @@ RSpec.describe DeleteCollectionItemService do
it 'federates a `Remove` activity' do
subject.call(collection_item)
expect(ActivityPub::AccountRawDistributionWorker).to have_enqueued_sidekiq_job
expect(ActivityPub::CollectionRawDistributionWorker).to have_enqueued_sidekiq_job
end
context 'when `revoke` is set to true' do
@@ -36,7 +36,7 @@ RSpec.describe DeleteCollectionItemService do
it 'destroys the collection withouth federating anything' do
expect { subject.call(collection_item, revoke: true) }.to change(collection.collection_items, :count).by(-1)
expect(ActivityPub::AccountRawDistributionWorker).to_not have_enqueued_sidekiq_job
expect(ActivityPub::CollectionRawDistributionWorker).to_not have_enqueued_sidekiq_job
end
end
end
@@ -7,15 +7,20 @@ RSpec.describe DeleteCollectionService do
let!(:collection) { Fabricate(:collection) }
before do
Fabricate.times(2, :collection_item, collection:)
end
describe '#call' do
it 'destroys the collection' do
expect { subject.call(collection) }.to change(Collection, :count).by(-1)
end
it 'federates a `Remove` activity' do
it "federates a `Remove` activity to the account's reach plus each collection member" do
subject.call(collection)
expect(ActivityPub::AccountRawDistributionWorker).to have_enqueued_sidekiq_job
expect(ActivityPub::DeliveryWorker).to have_enqueued_sidekiq_job.exactly(2).times
end
end
end
@@ -21,7 +21,7 @@ RSpec.describe RevokeCollectionItemService do
subject.call(collection_item)
expect(ActivityPub::DeliveryWorker).to have_enqueued_sidekiq_job.with(instance_of(String), collection_item.account_id, 'https://example.com/actor/1/inbox')
expect(ActivityPub::AccountRawDistributionWorker).to have_enqueued_sidekiq_job
expect(ActivityPub::CollectionRawDistributionWorker).to have_enqueued_sidekiq_job
end
end
end
@@ -14,14 +14,14 @@ RSpec.describe UpdateCollectionService do
expect { subject.call(collection, { name: 'Newly updated name' }) }
.to change(collection, :name).to('Newly updated name')
.and enqueue_sidekiq_job(LocalNotificationWorker).with(collection_item.account_id, collection.id, collection.class.name, 'collection_update')
.and enqueue_sidekiq_job(ActivityPub::AccountRawDistributionWorker)
.and enqueue_sidekiq_job(ActivityPub::CollectionRawDistributionWorker)
end
context 'when nothing changed' do
it 'does not federate an activity' do
subject.call(collection, { name: collection.name })
expect(ActivityPub::AccountRawDistributionWorker).to_not have_enqueued_sidekiq_job
expect(ActivityPub::CollectionRawDistributionWorker).to_not have_enqueued_sidekiq_job
expect(LocalNotificationWorker).to_not have_enqueued_sidekiq_job
end
end