From 6b2051b7b3d13d5425c8c86c9ae03baaedc6b603 Mon Sep 17 00:00:00 2001 From: Claire Date: Thu, 23 Oct 2025 13:51:23 +0200 Subject: [PATCH] Fix bookmarks export when one bookmarked status is soft-deleted (#36576) --- app/models/export.rb | 2 +- spec/models/export_spec.rb | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/models/export.rb b/app/models/export.rb index 6ed9f60c7..b430a2a0d 100644 --- a/app/models/export.rb +++ b/app/models/export.rb @@ -12,7 +12,7 @@ class Export def to_bookmarks_csv CSV.generate do |csv| account.bookmarks.includes(:status).reorder(id: :desc).each do |bookmark| - csv << [ActivityPub::TagManager.instance.uri_for(bookmark.status)] + csv << [ActivityPub::TagManager.instance.uri_for(bookmark.status)] if bookmark.status.present? end end end diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb index 81aaf8858..ce4c96608 100644 --- a/spec/models/export_spec.rb +++ b/spec/models/export_spec.rb @@ -14,15 +14,20 @@ RSpec.describe Export do end describe '#to_bookmarks_csv' do - before { Fabricate.times(2, :bookmark, account: account) } - + let!(:bookmark) { Fabricate(:bookmark, account: account) } let(:export) { CSV.parse(subject.to_bookmarks_csv) } + let!(:second_bookmark) { Fabricate(:bookmark, account: account) } + let!(:bookmark_of_soft_deleted) { Fabricate(:bookmark, account: account) } + + before do + bookmark_of_soft_deleted.status.discard + end it 'returns a csv of bookmarks' do expect(export) .to contain_exactly( - include(/statuses/), - include(/statuses/) + [ActivityPub::TagManager.instance.uri_for(bookmark.status)], + [ActivityPub::TagManager.instance.uri_for(second_bookmark.status)] ) end end