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

This commit is contained in:
David Roetzel 2026-05-11 08:08:44 +02:00 committed by GitHub
parent e7ed8bb682
commit b1f7c9641f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 16 additions and 6 deletions

View File

@ -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']

View File

@ -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