From 53ce0e05f6b440cf17fe2497902a53b06614a866 Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Fri, 6 Dec 2024 16:14:56 +0100 Subject: [PATCH] Do not notify not visible dossiers --- .../notify_old_brouillon_dossiers_soon_deleted_job.rb | 1 + app/jobs/cron/purge_old_brouillon_dossiers_job.rb | 1 + ...notify_old_brouillon_dossiers_soon_deleted_job_spec.rb | 8 ++++++-- spec/jobs/cron/purge_old_brouillon_dossiers_job_spec.rb | 4 ++++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/jobs/cron/notify_old_brouillon_dossiers_soon_deleted_job.rb b/app/jobs/cron/notify_old_brouillon_dossiers_soon_deleted_job.rb index 95e54617c..61dc27654 100644 --- a/app/jobs/cron/notify_old_brouillon_dossiers_soon_deleted_job.rb +++ b/app/jobs/cron/notify_old_brouillon_dossiers_soon_deleted_job.rb @@ -5,6 +5,7 @@ class Cron::NotifyOldBrouillonDossiersSoonDeletedJob < Cron::CronJob def perform Dossier + .visible_by_user .state_brouillon .where(updated_at: ..3.months.ago) .where("notified_soon_deleted_sent_at IS NULL OR notified_soon_deleted_sent_at < updated_at") diff --git a/app/jobs/cron/purge_old_brouillon_dossiers_job.rb b/app/jobs/cron/purge_old_brouillon_dossiers_job.rb index 147b16a29..a53da2910 100644 --- a/app/jobs/cron/purge_old_brouillon_dossiers_job.rb +++ b/app/jobs/cron/purge_old_brouillon_dossiers_job.rb @@ -5,6 +5,7 @@ class Cron::PurgeOldBrouillonDossiersJob < Cron::CronJob def perform Dossier + .visible_by_user .state_brouillon .where(updated_at: ..(3.months + 2.weeks).ago) .find_each do |dossier| diff --git a/spec/jobs/cron/notify_old_brouillon_dossiers_soon_deleted_job_spec.rb b/spec/jobs/cron/notify_old_brouillon_dossiers_soon_deleted_job_spec.rb index ddb3c3bea..de342cf8a 100644 --- a/spec/jobs/cron/notify_old_brouillon_dossiers_soon_deleted_job_spec.rb +++ b/spec/jobs/cron/notify_old_brouillon_dossiers_soon_deleted_job_spec.rb @@ -18,6 +18,8 @@ RSpec.describe Cron::NotifyOldBrouillonDossiersSoonDeletedJob, type: :job do end let!(:recent_draft) { travel_to(2.months.ago) { create(:dossier, :brouillon) } } let!(:old_non_draft) { travel_to(4.months.ago) { create(:dossier, :en_construction) } } + let!(:not_visible_dossier) { travel_to(6.months.ago) { create(:dossier, :brouillon, :hidden_by_user) } } + let!(:not_visible_dossier2) { travel_to(6.months.ago) { create(:dossier, :brouillon, :hidden_by_expired) } } it "sends notifications only for eligible draft dossiers" do expect(DossierMailer).to receive(:notify_old_brouillon_soon_deleted) @@ -30,8 +32,10 @@ RSpec.describe Cron::NotifyOldBrouillonDossiersSoonDeletedJob, type: :job do .and_return(double(deliver_later: true)) .once - expect(DossierMailer).not_to receive(:notify_old_brouillon_soon_deleted) - .with(old_draft_recently_notified) + [old_draft_recently_notified, not_visible_dossier, not_visible_dossier2].each do |dossier| + expect(DossierMailer).not_to receive(:notify_old_brouillon_soon_deleted) + .with(dossier) + end job.perform diff --git a/spec/jobs/cron/purge_old_brouillon_dossiers_job_spec.rb b/spec/jobs/cron/purge_old_brouillon_dossiers_job_spec.rb index 7d5edbb90..e2b9c535b 100644 --- a/spec/jobs/cron/purge_old_brouillon_dossiers_job_spec.rb +++ b/spec/jobs/cron/purge_old_brouillon_dossiers_job_spec.rb @@ -7,6 +7,8 @@ RSpec.describe Cron::PurgeOldBrouillonDossiersJob, type: :job do 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) } } + let!(:not_visible_dossier) { travel_to(6.months.ago) { create(:dossier, :brouillon, :hidden_by_user, procedure: procedure) } } + let!(:not_visible_dossier2) { travel_to(6.months.ago) { create(:dossier, :brouillon, :hidden_by_expired, procedure: procedure) } } subject(:perform_job) { described_class.perform_now } @@ -28,6 +30,8 @@ RSpec.describe Cron::PurgeOldBrouillonDossiersJob, type: :job do 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) + expect(DossierMailer).not_to have_received(:notify_old_brouillon_after_deletion).with(not_visible_dossier) + expect(DossierMailer).not_to have_received(:notify_old_brouillon_after_deletion).with(not_visible_dossier2) end it 'sets the correct hidden_by attributes' do