diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2022-09-27 03:08:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-27 03:08:19 +0200 |
commit | 5c9abdeff1d0cf3e14d84c5ae298e6a5beccaf18 (patch) | |
tree | b4bad153eec9f2a39d96a9da342e1618ac43740b /spec/lib/vacuum/preview_cards_vacuum_spec.rb | |
parent | 3e0999cd1139d638332d62129dbf0b37263802fd (diff) |
Add retention policy for cached content and media (#19232)
Diffstat (limited to 'spec/lib/vacuum/preview_cards_vacuum_spec.rb')
-rw-r--r-- | spec/lib/vacuum/preview_cards_vacuum_spec.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/spec/lib/vacuum/preview_cards_vacuum_spec.rb b/spec/lib/vacuum/preview_cards_vacuum_spec.rb new file mode 100644 index 000000000..4a4a599fa --- /dev/null +++ b/spec/lib/vacuum/preview_cards_vacuum_spec.rb @@ -0,0 +1,36 @@ +require 'rails_helper' + +RSpec.describe Vacuum::PreviewCardsVacuum do + let(:retention_period) { 7.days } + + subject { described_class.new(retention_period) } + + describe '#perform' do + let!(:orphaned_preview_card) { Fabricate(:preview_card, created_at: 2.days.ago) } + let!(:old_preview_card) { Fabricate(:preview_card, updated_at: (retention_period + 1.day).ago) } + let!(:new_preview_card) { Fabricate(:preview_card) } + + before do + old_preview_card.statuses << Fabricate(:status) + new_preview_card.statuses << Fabricate(:status) + + subject.perform + end + + it 'deletes cache of preview cards last updated before the retention period' do + expect(old_preview_card.reload.image).to be_blank + end + + it 'does not delete cache of preview cards last updated within the retention period' do + expect(new_preview_card.reload.image).to_not be_blank + end + + it 'does not delete attached preview cards' do + expect(new_preview_card.reload).to be_persisted + end + + it 'deletes preview cards not attached to any status' do + expect { orphaned_preview_card.reload }.to raise_error ActiveRecord::RecordNotFound + end + end +end |