[#10951] Create a cron job to warn user that old brouillon is deleted
This commit is contained in:
parent
38e9ca4979
commit
5ab0899a49
6 changed files with 84 additions and 1 deletions
43
spec/jobs/cron/purge_old_brouillon_dossiers_job_spec.rb
Normal file
43
spec/jobs/cron/purge_old_brouillon_dossiers_job_spec.rb
Normal file
|
@ -0,0 +1,43 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
RSpec.describe Cron::PurgeOldBrouillonDossiersJob, type: :job do
|
||||
let(:procedure) { create(:procedure) }
|
||||
|
||||
let!(:recent_brouillon) { travel_to(3.months.ago) { create(:dossier, :brouillon, procedure: procedure) } }
|
||||
let!(:old_brouillon) { travel_to(5.months.ago) { create(:dossier, :brouillon, procedure: procedure) } }
|
||||
let!(:very_old_brouillon) { travel_to(6.months.ago) { create(:dossier, :brouillon, procedure: procedure) } }
|
||||
let!(:old_en_construction) { travel_to(5.months.ago) { create(:dossier, :en_construction, procedure: procedure) } }
|
||||
|
||||
subject(:perform_job) { described_class.perform_now }
|
||||
|
||||
describe '#perform' do
|
||||
before do
|
||||
allow(DossierMailer).to receive(:notify_old_brouillon_after_deletion).and_return(double(deliver_later: true))
|
||||
end
|
||||
|
||||
it 'hides only old brouillon dossiers' do
|
||||
expect { perform_job }.to change { Dossier.visible_by_user.count }.by(-2)
|
||||
|
||||
expect(Dossier.visible_by_user.pluck(:id)).to match_array([recent_brouillon.id, old_en_construction.id])
|
||||
end
|
||||
|
||||
it 'sends notification emails for each hidden dossier' do
|
||||
perform_job
|
||||
|
||||
expect(DossierMailer).to have_received(:notify_old_brouillon_after_deletion).with(old_brouillon).once
|
||||
expect(DossierMailer).to have_received(:notify_old_brouillon_after_deletion).with(very_old_brouillon).once
|
||||
expect(DossierMailer).not_to have_received(:notify_old_brouillon_after_deletion).with(recent_brouillon)
|
||||
expect(DossierMailer).not_to have_received(:notify_old_brouillon_after_deletion).with(old_en_construction)
|
||||
end
|
||||
|
||||
it 'sets the correct hidden_by attributes' do
|
||||
perform_job
|
||||
|
||||
[old_brouillon, very_old_brouillon].each do |dossier|
|
||||
dossier.reload
|
||||
expect(dossier.hidden_by_expired_at).to be_present
|
||||
expect(dossier.hidden_by_reason).to eq("not_modified_for_a_long_time")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue