Fix updating collection items when position is unknown (#38962)

This commit is contained in:
David Roetzel authored and GitHub committed 2026-05-11 06:08:44 +00:00
1 parent e7ed8bb682
commit b1f7c9641f
2 files changed
+16 -6

No files matched your search

@@ -16,10 +16,10 @@ class ActivityPub::ProcessFeaturedItemService
with_redis_lock("collection_item:#{@item_json['id']}") do
@collection_item = existing_item || pre_approved_item || new_item
@collection_item.position = position unless position.nil?
@collection_item.update!(
uri: @item_json['id'],
object_uri: value_or_id(@item_json['featuredObject']),
position:
object_uri: value_or_id(@item_json['featuredObject'])
)
@approval_uri = @item_json['featureAuthorization']
@@ -72,15 +72,25 @@ RSpec.describe ActivityPub::ProcessFeaturedItemService do
end
end
context 'when item exists at a different position' do
context 'when item exists' do
let!(:collection_item) do
Fabricate(:collection_item, collection:, uri: featured_item_json['id'], position: 2)
end
it 'updates the position' do
expect { subject.call(collection, object, position:) }.to_not change(collection.collection_items, :count)
context 'when no position is given' do
it 'does not change the position' do
expect { subject.call(collection, object) }.to_not change(collection.collection_items, :count)
expect(collection_item.reload.position).to eq 3
expect(collection_item.reload.position).to eq 2
end
end
context 'when a different position is given' do
it 'updates the position' do
expect { subject.call(collection, object, position:) }.to_not change(collection.collection_items, :count)
expect(collection_item.reload.position).to eq 3
end
end
end