mirror of
https://github.com/glitch-soc/mastodon.git
synced 2026-03-29 03:00:33 +02:00
Add flag to preserve cached media on cleanup (#36200)
Co-authored-by: Daniel King <git@kin.gy>
This commit is contained in:
@@ -73,6 +73,66 @@ RSpec.describe Mastodon::CLI::Media do
|
||||
expect(media_attachment.reload.thumbnail).to be_blank
|
||||
end
|
||||
end
|
||||
|
||||
context 'with --keep-interacted' do
|
||||
let(:options) { { keep_interacted: true } }
|
||||
|
||||
let!(:favourited_media) { Fabricate(:media_attachment, created_at: 1.month.ago, remote_url: 'https://example.com/image.jpg') }
|
||||
let!(:bookmarked_media) { Fabricate(:media_attachment, created_at: 1.month.ago, remote_url: 'https://example.com/image.jpg') }
|
||||
let!(:replied_to_media) { Fabricate(:media_attachment, created_at: 1.month.ago, remote_url: 'https://example.com/image.jpg') }
|
||||
let!(:reblogged_media) { Fabricate(:media_attachment, created_at: 1.month.ago, remote_url: 'https://example.com/image.jpg') }
|
||||
let!(:remote_quoted_media) { Fabricate(:media_attachment, created_at: 1.month.ago, remote_url: 'https://example.com/image.jpg') }
|
||||
let!(:remote_quoting_media) { Fabricate(:media_attachment, created_at: 1.month.ago, remote_url: 'https://example.com/image.jpg') }
|
||||
|
||||
before do
|
||||
local_account = Fabricate(:account, username: 'alice')
|
||||
remote_account = Fabricate(:account, username: 'bob', domain: 'example.com')
|
||||
|
||||
favourited_status = Fabricate(:status, account: remote_account)
|
||||
bookmarked_status = Fabricate(:status, account: remote_account)
|
||||
replied_to_status = Fabricate(:status, account: remote_account)
|
||||
reblogged_status = Fabricate(:status, account: remote_account)
|
||||
|
||||
favourited_media.update!(status: favourited_status)
|
||||
bookmarked_media.update!(status: bookmarked_status)
|
||||
replied_to_media.update!(status: replied_to_status)
|
||||
reblogged_media.update!(status: reblogged_status)
|
||||
|
||||
local_quoting_status = Fabricate(:status, account: local_account)
|
||||
remote_quoted_status = Fabricate(:status, account: remote_account)
|
||||
local_status_being_quoted = Fabricate(:status, account: local_account)
|
||||
remote_quoting_status = Fabricate(:status, account: remote_account)
|
||||
|
||||
remote_quoted_media.update!(status: remote_quoted_status)
|
||||
remote_quoting_media.update!(status: remote_quoting_status)
|
||||
|
||||
non_interacted_status = Fabricate(:status, account: remote_account)
|
||||
|
||||
media_attachment.update(status: non_interacted_status)
|
||||
|
||||
Fabricate(:favourite, account: local_account, status: favourited_status)
|
||||
Fabricate(:bookmark, account: local_account, status: bookmarked_status)
|
||||
Fabricate(:status, account: local_account, in_reply_to_id: replied_to_status.id)
|
||||
Fabricate(:status, account: local_account, reblog: reblogged_status)
|
||||
Fabricate(:quote, account: local_account, status: local_quoting_status, quoted_status: remote_quoted_status)
|
||||
Fabricate(:quote, account: remote_account, status: remote_quoting_status, quoted_status: local_status_being_quoted)
|
||||
end
|
||||
|
||||
it 'keeps media associated with statuses that have been favourited, bookmarked, replied to, or reblogged by a local account' do
|
||||
expect { subject }
|
||||
.to output_results('Removed 1')
|
||||
|
||||
expect(favourited_media.reload.file).to be_present
|
||||
expect(bookmarked_media.reload.file).to be_present
|
||||
expect(replied_to_media.reload.file).to be_present
|
||||
expect(reblogged_media.reload.file).to be_present
|
||||
expect(remote_quoted_media.reload.file).to be_present
|
||||
expect(remote_quoting_media.reload.file).to be_present
|
||||
|
||||
expect(media_attachment.reload.file).to be_blank
|
||||
expect(media_attachment.reload.thumbnail).to be_blank
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user