From 8e1bfb469f8a33aaaf1fd1a52993866883ca1533 Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Thu, 26 Aug 2021 10:14:23 +0200 Subject: [PATCH] fix(dossier): send expiration notifications 2 weeks prior to supression instead of a month --- app/models/dossier.rb | 2 +- .../fr.yml | 8 ++--- .../notify_near_deletion_to_user/fr.yml | 4 +-- spec/mailers/dossier_mailer_spec.rb | 8 ++--- spec/models/dossier_spec.rb | 6 ++-- .../expired_dossiers_deletion_service_spec.rb | 34 +++++++++---------- 6 files changed, 31 insertions(+), 31 deletions(-) diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 902dada56..3a1958cb3 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -57,7 +57,7 @@ class Dossier < ApplicationRecord REMAINING_DAYS_BEFORE_CLOSING = 2 INTERVAL_BEFORE_CLOSING = "#{REMAINING_DAYS_BEFORE_CLOSING} days" - INTERVAL_BEFORE_EXPIRATION = '1 month' + INTERVAL_BEFORE_EXPIRATION = '2 weeks' INTERVAL_EXPIRATION = '1 month 5 days' has_one :etablissement, dependent: :destroy diff --git a/config/locales/views/dossier_mailer/notify_near_deletion_to_administration/fr.yml b/config/locales/views/dossier_mailer/notify_near_deletion_to_administration/fr.yml index c1bd54250..6e679332f 100644 --- a/config/locales/views/dossier_mailer/notify_near_deletion_to_administration/fr.yml +++ b/config/locales/views/dossier_mailer/notify_near_deletion_to_administration/fr.yml @@ -14,8 +14,8 @@ fr: one: "Le dossier suivant dont le traitement est terminé sera bientôt automatiquement supprimé :" other: "Les dossiers suivant dont le traitement est terminé seront bientôt automatiquement supprimés :" footer_en_construction: - one: "Vous avez un mois pour commencer l’instruction du dossier." - other: "Vous avez un mois pour commencer l’instruction des dossiers." + one: "Vous avez deux semaines pour commencer l’instruction du dossier." + other: "Vous avez deux semaines pour commencer l’instruction des dossiers." footer_termine: - one: "Vous avez un mois pour archiver le dossier." - other: "Vous avez un mois pour archiver les dossiers." + one: "Vous avez deux semaines pour archiver le dossier." + other: "Vous avez deux semaines pour archiver les dossiers." diff --git a/config/locales/views/dossier_mailer/notify_near_deletion_to_user/fr.yml b/config/locales/views/dossier_mailer/notify_near_deletion_to_user/fr.yml index f168c63dc..32b3aa810 100644 --- a/config/locales/views/dossier_mailer/notify_near_deletion_to_user/fr.yml +++ b/config/locales/views/dossier_mailer/notify_near_deletion_to_user/fr.yml @@ -14,8 +14,8 @@ fr: one: "Afin de limiter la conservation de vos données personnelles, le dossier suivant dont le traitement est terminé sera bientôt automatiquement supprimé :" other: "Afin de limiter la conservation de vos données personnelles, les dossiers suivant dont le traitement est terminé seront bientôt automatiquement supprimés :" footer: - one: "Vous pouvez retrouver votre dossier pendant encore un mois. Vous n’avez rien à faire." - other: "Vous pouvez retrouver vos dossiers pendant encore un mois. Vous n’avez rien à faire." + one: "Vous pouvez retrouver votre dossier pendant encore deux semaines. Vous n’avez rien à faire." + other: "Vous pouvez retrouver vos dossiers pendant encore deux semaines. Vous n’avez rien à faire." footer_en_construction: one: "Si vous souhaitez conserver votre dossier plus longtemps, vous pouvez prolonger sa durée de conservation dans l’interface." other: "Si vous souhaitez conserver vos dossiers plus longtemps, vous pouvez prolonger leur durée de conservation au cas par cas dans l’interface." diff --git a/spec/mailers/dossier_mailer_spec.rb b/spec/mailers/dossier_mailer_spec.rb index db4598fa7..e68a073ee 100644 --- a/spec/mailers/dossier_mailer_spec.rb +++ b/spec/mailers/dossier_mailer_spec.rb @@ -151,7 +151,7 @@ RSpec.describe DossierMailer, type: :mailer do it { expect(subject.body).to include("n° #{dossier.id} ") } it { expect(subject.body).to include(dossier.procedure.libelle) } it { expect(subject.body).to include("PDF") } - it { expect(subject.body).to include("Vous avez un mois pour commencer l’instruction du dossier.") } + it { expect(subject.body).to include("Vous avez deux semaines pour commencer l’instruction du dossier.") } end describe 'termine' do @@ -163,7 +163,7 @@ RSpec.describe DossierMailer, type: :mailer do it { expect(subject.body).to include("n° #{dossier.id} ") } it { expect(subject.body).to include(dossier.procedure.libelle) } it { expect(subject.body).to include("PDF") } - it { expect(subject.body).to include("Vous avez un mois pour archiver le dossier.") } + it { expect(subject.body).to include("Vous avez deux semaines pour archiver le dossier.") } end end @@ -178,7 +178,7 @@ RSpec.describe DossierMailer, type: :mailer do it { expect(subject.body).to include("n° #{dossier.id} ") } it { expect(subject.body).to include(dossier.procedure.libelle) } it { expect(subject.body).to include("PDF") } - it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore un mois. Vous n’avez rien à faire.") } + it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore deux semaines. Vous n’avez rien à faire.") } it { expect(subject.body).to include("Si vous souhaitez conserver votre dossier plus longtemps, vous pouvez prolonger sa durée de conservation dans l’interface.") } end @@ -192,7 +192,7 @@ RSpec.describe DossierMailer, type: :mailer do it { expect(subject.body).to include("n° #{dossier.id} ") } it { expect(subject.body).to include(dossier.procedure.libelle) } it { expect(subject.body).to include("PDF") } - it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore un mois. Vous n’avez rien à faire.") } + it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore deux semaines. Vous n’avez rien à faire.") } end end diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 1a3521090..213cef8b0 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -40,7 +40,7 @@ describe Dossier do describe 'brouillon_close_to_expiration' do let(:procedure) { create(:procedure, :published, duree_conservation_dossiers_dans_ds: 6) } let!(:young_dossier) { create(:dossier, :en_construction, procedure: procedure) } - let!(:expiring_dossier) { create(:dossier, created_at: 170.days.ago, procedure: procedure) } + let!(:expiring_dossier) { create(:dossier, created_at: 175.days.ago, procedure: procedure) } let!(:just_expired_dossier) { create(:dossier, created_at: (6.months + 1.hour + 10.seconds).ago, procedure: procedure) } let!(:long_expired_dossier) { create(:dossier, created_at: 1.year.ago, procedure: procedure) } @@ -66,7 +66,7 @@ describe Dossier do describe 'en_construction_close_to_expiration' do let(:procedure) { create(:procedure, :published, duree_conservation_dossiers_dans_ds: 6) } let!(:young_dossier) { create(:dossier, procedure: procedure) } - let!(:expiring_dossier) { create(:dossier, :en_construction, en_construction_at: 170.days.ago, procedure: procedure) } + let!(:expiring_dossier) { create(:dossier, :en_construction, en_construction_at: 175.days.ago, procedure: procedure) } let!(:just_expired_dossier) { create(:dossier, :en_construction, en_construction_at: (6.months + 1.hour + 10.seconds).ago, procedure: procedure) } let!(:long_expired_dossier) { create(:dossier, :en_construction, en_construction_at: 1.year.ago, procedure: procedure) } @@ -92,7 +92,7 @@ describe Dossier do describe 'en_instruction_close_to_expiration' do let(:procedure) { create(:procedure, :published, duree_conservation_dossiers_dans_ds: 6) } let!(:young_dossier) { create(:dossier, procedure: procedure) } - let!(:expiring_dossier) { create(:dossier, :en_instruction, en_instruction_at: 170.days.ago, procedure: procedure) } + let!(:expiring_dossier) { create(:dossier, :en_instruction, en_instruction_at: 175.days.ago, procedure: procedure) } let!(:just_expired_dossier) { create(:dossier, :en_instruction, en_instruction_at: (6.months + 1.hour + 10.seconds).ago, procedure: procedure) } let!(:long_expired_dossier) { create(:dossier, :en_instruction, en_instruction_at: 1.year.ago, procedure: procedure) } diff --git a/spec/services/expired_dossiers_deletion_service_spec.rb b/spec/services/expired_dossiers_deletion_service_spec.rb index 97de70859..69a5944f1 100644 --- a/spec/services/expired_dossiers_deletion_service_spec.rb +++ b/spec/services/expired_dossiers_deletion_service_spec.rb @@ -8,7 +8,7 @@ describe ExpiredDossiersDeletionService do describe '#process_expired_dossiers_brouillon' do let(:today) { Time.zone.now.at_midnight } - let(:date_close_to_expiration) { Date.today - procedure.duree_conservation_dossiers_dans_ds.months + 1.month } + let(:date_close_to_expiration) { Date.today - procedure.duree_conservation_dossiers_dans_ds.months + 2.weeks } let(:date_expired) { Date.today - procedure.duree_conservation_dossiers_dans_ds.months - 6.days } let(:date_not_expired) { Date.today - procedure.duree_conservation_dossiers_dans_ds.months + 2.months } @@ -56,15 +56,15 @@ describe ExpiredDossiersDeletionService do before { ExpiredDossiersDeletionService.send_brouillon_expiration_notices } - context 'when the dossier is not closed to expiration' do - let(:created_at) { (conservation_par_defaut - 1.month - 1.day).ago } + context 'when the dossier is not close to expiration' do + let(:created_at) { (conservation_par_defaut - 2.weeks - 1.day).ago } it { expect(dossier.reload.brouillon_close_to_expiration_notice_sent_at).to be_nil } it { expect(DossierMailer).not_to have_received(:notify_brouillon_near_deletion) } end - context 'when the dossier is closed to expiration' do - let(:created_at) { (conservation_par_defaut - 1.month + 1.day).ago } + context 'when the dossier is close to expiration' do + let(:created_at) { (conservation_par_defaut - 2.weeks + 1.day).ago } it { expect(dossier.reload.brouillon_close_to_expiration_notice_sent_at).not_to be_nil } it { expect(DossierMailer).to have_received(:notify_brouillon_near_deletion).once } @@ -73,8 +73,8 @@ describe ExpiredDossiersDeletionService do end context 'with 2 dossiers to notice' do - let!(:dossier_1) { create(:dossier, procedure: procedure, user: user, created_at: (conservation_par_defaut - 1.month + 1.day).ago) } - let!(:dossier_2) { create(:dossier, procedure: procedure_2, user: user, created_at: (conservation_par_defaut - 1.month + 1.day).ago) } + let!(:dossier_1) { create(:dossier, procedure: procedure, user: user, created_at: (conservation_par_defaut - 2.weeks + 1.day).ago) } + let!(:dossier_2) { create(:dossier, procedure: procedure_2, user: user, created_at: (conservation_par_defaut - 2.weeks + 1.day).ago) } before { ExpiredDossiersDeletionService.send_brouillon_expiration_notices } @@ -146,7 +146,7 @@ describe ExpiredDossiersDeletionService do before { ExpiredDossiersDeletionService.send_en_construction_expiration_notices } context 'when the dossier is not near deletion' do - let(:en_construction_at) { (conservation_par_defaut - 1.month - 1.day).ago } + let(:en_construction_at) { (conservation_par_defaut - 2.weeks - 1.day).ago } it { expect(dossier.reload.en_construction_close_to_expiration_notice_sent_at).to be_nil } it { expect(DossierMailer).not_to have_received(:notify_near_deletion_to_user) } @@ -154,7 +154,7 @@ describe ExpiredDossiersDeletionService do end context 'when the dossier is near deletion' do - let(:en_construction_at) { (conservation_par_defaut - 1.month + 1.day).ago } + let(:en_construction_at) { (conservation_par_defaut - 2.weeks + 1.day).ago } it { expect(dossier.reload.en_construction_close_to_expiration_notice_sent_at).not_to be_nil } @@ -167,8 +167,8 @@ describe ExpiredDossiersDeletionService do end context 'with 2 dossiers to notice' do - let!(:dossier_1) { create(:dossier, :en_construction, procedure: procedure, user: user, en_construction_at: (conservation_par_defaut - 1.month + 1.day).ago) } - let!(:dossier_2) { create(:dossier, :en_construction, procedure: procedure_2, user: user, en_construction_at: (conservation_par_defaut - 1.month + 1.day).ago) } + let!(:dossier_1) { create(:dossier, :en_construction, procedure: procedure, user: user, en_construction_at: (conservation_par_defaut - 2.weeks + 1.day).ago) } + let!(:dossier_2) { create(:dossier, :en_construction, procedure: procedure_2, user: user, en_construction_at: (conservation_par_defaut - 2.weeks + 1.day).ago) } let!(:instructeur) { create(:instructeur) } @@ -187,7 +187,7 @@ describe ExpiredDossiersDeletionService do context 'when an instructeur is also administrateur' do let!(:administrateur) { procedure.administrateurs.first } - let!(:dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: (conservation_par_defaut - 1.month + 1.day).ago) } + let!(:dossier) { create(:dossier, :en_construction, procedure: procedure, en_construction_at: (conservation_par_defaut - 2.weeks + 1.day).ago) } before do administrateur.instructeur.followed_dossiers << dossier @@ -290,7 +290,7 @@ describe ExpiredDossiersDeletionService do before { ExpiredDossiersDeletionService.send_termine_expiration_notices } context 'when the dossier is not near deletion' do - let(:processed_at) { (conservation_par_defaut - 1.month - 1.day).ago } + let(:processed_at) { (conservation_par_defaut - 2.weeks - 1.day).ago } it { expect(dossier.reload.termine_close_to_expiration_notice_sent_at).to be_nil } it { expect(DossierMailer).not_to have_received(:notify_near_deletion_to_user) } @@ -298,7 +298,7 @@ describe ExpiredDossiersDeletionService do end context 'when the dossier is near deletion' do - let(:processed_at) { (conservation_par_defaut - 1.month + 1.day).ago } + let(:processed_at) { (conservation_par_defaut - 2.weeks + 1.day).ago } it { expect(dossier.reload.termine_close_to_expiration_notice_sent_at).not_to be_nil } @@ -311,8 +311,8 @@ describe ExpiredDossiersDeletionService do end context 'with 2 dossiers to notice' do - let!(:dossier_1) { create(:dossier, :accepte, procedure: procedure, user: user, processed_at: (conservation_par_defaut - 1.month + 1.day).ago) } - let!(:dossier_2) { create(:dossier, :accepte, procedure: procedure_2, user: user, processed_at: (conservation_par_defaut - 1.month + 1.day).ago) } + let!(:dossier_1) { create(:dossier, :accepte, procedure: procedure, user: user, processed_at: (conservation_par_defaut - 2.weeks + 1.day).ago) } + let!(:dossier_2) { create(:dossier, :accepte, procedure: procedure_2, user: user, processed_at: (conservation_par_defaut - 2.weeks + 1.day).ago) } let!(:instructeur) { create(:instructeur) } @@ -331,7 +331,7 @@ describe ExpiredDossiersDeletionService do context 'when an instructeur is also administrateur' do let!(:administrateur) { procedure.administrateurs.first } - let!(:dossier) { create(:dossier, :accepte, procedure: procedure, processed_at: (conservation_par_defaut - 1.month + 1.day).ago) } + let!(:dossier) { create(:dossier, :accepte, procedure: procedure, processed_at: (conservation_par_defaut - 2.weeks + 1.day).ago) } before do administrateur.instructeur.followed_dossiers << dossier