From a3bdcc71e74e66d1607d2490e197e675ae8b2b7b Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Tue, 24 Mar 2026 17:42:57 +0100 Subject: [PATCH] Fix serialization when an account is missing (#38370) --- .../collection_with_accounts_serializer.rb | 2 +- ...ollection_with_accounts_serializer_spec.rb | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/serializers/rest/collection_with_accounts_serializer.rb b/app/serializers/rest/collection_with_accounts_serializer.rb index 5d05a32d68..be0b955022 100644 --- a/app/serializers/rest/collection_with_accounts_serializer.rb +++ b/app/serializers/rest/collection_with_accounts_serializer.rb @@ -10,6 +10,6 @@ class REST::CollectionWithAccountsSerializer < ActiveModel::Serializer end def accounts - [object.account] + object.collection_items.map(&:account) + [object.account] + object.collection_items.filter_map(&:account) end end diff --git a/spec/serializers/rest/collection_with_accounts_serializer_spec.rb b/spec/serializers/rest/collection_with_accounts_serializer_spec.rb index 6a2b868397..205674737d 100644 --- a/spec/serializers/rest/collection_with_accounts_serializer_spec.rb +++ b/spec/serializers/rest/collection_with_accounts_serializer_spec.rb @@ -26,11 +26,14 @@ RSpec.describe REST::CollectionWithAccountsSerializer do discoverable: false, tag:) end - - before do - accounts[1..2].each do |account| + let(:collection_items) do + accounts[1..2].map do |account| Fabricate(:collection_item, collection:, account:) end + end + + before do + collection_items collection.reload end @@ -56,4 +59,14 @@ RSpec.describe REST::CollectionWithAccountsSerializer do ) expect(subject['accounts'].size).to eq 3 end + + context 'when collection includes pending items without account' do + let(:collection_items) do + [Fabricate(:collection_item, collection:, account: nil, object_uri: 'https://example.com/actor/1', state: :pending)] + end + + it 'renders successfully' do + expect(subject).to be_a Hash + end + end end