diff --git a/app/mailers/dossier_mailer.rb b/app/mailers/dossier_mailer.rb index a217f4d16..36d4bd17d 100644 --- a/app/mailers/dossier_mailer.rb +++ b/app/mailers/dossier_mailer.rb @@ -134,7 +134,8 @@ class DossierMailer < ApplicationMailer def default_i18n_subject(interpolations = {}) if interpolations[:state] mailer_scope = self.class.mailer_name.tr('/', '.') - I18n.t("subject_#{interpolations[:state]}", interpolations.merge(scope: [mailer_scope, action_name])) + state = interpolations[:state].in?(Dossier::TERMINE) ? 'termine' : interpolations[:state] + I18n.t("subject_#{state}", interpolations.merge(scope: [mailer_scope, action_name])) else super end diff --git a/app/views/dossier_mailer/notify_near_deletion_to_administration.html.haml b/app/views/dossier_mailer/notify_near_deletion_to_administration.html.haml index 62b0156ff..485757f6d 100644 --- a/app/views/dossier_mailer/notify_near_deletion_to_administration.html.haml +++ b/app/views/dossier_mailer/notify_near_deletion_to_administration.html.haml @@ -4,7 +4,10 @@ Bonjour, %p - = t('.header_en_construction', count: @dossiers.count) + - if @state == Dossier.states.fetch(:en_construction) + = t('.header_en_construction', count: @dossiers.count) + - else + = t('.header_termine', count: @dossiers.count) %ul - @dossiers.each do |d| %li @@ -13,5 +16,7 @@ %p - if @state == Dossier.states.fetch(:en_construction) = sanitize(t('.footer_en_construction', count: @dossiers.count)) + - else + = sanitize(t('.footer_termine', count: @dossiers.count)) = render partial: "layouts/mailers/signature" diff --git a/app/views/dossier_mailer/notify_near_deletion_to_user.html.haml b/app/views/dossier_mailer/notify_near_deletion_to_user.html.haml index efe0c668d..83455024a 100644 --- a/app/views/dossier_mailer/notify_near_deletion_to_user.html.haml +++ b/app/views/dossier_mailer/notify_near_deletion_to_user.html.haml @@ -4,7 +4,10 @@ Bonjour, %p - = t('.header_en_construction', count: @dossiers.count) + - if @state == Dossier.states.fetch(:en_construction) + = t('.header_en_construction', count: @dossiers.count) + - else + = t('.header_termine', count: @dossiers.count) %ul - @dossiers.each do |d| %li 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 e3d24481c..c1bd54250 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 @@ -4,9 +4,18 @@ fr: subject_en_construction: one: Un dossier en construction va bientôt être supprimé other: Des dossiers en construction vont bientôt être supprimés + subject_termine: + one: Un dossier dont le traitement est terminé va bientôt être supprimé + other: Des dossiers dont le traitement est terminé vont bientôt être supprimés header_en_construction: one: "Le dossier en construction suivant sera bientôt automatiquement supprimé :" other: "Les dossiers en construction suivant seront bientôt automatiquement supprimés :" + header_termine: + 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." + footer_termine: + one: "Vous avez un mois pour archiver le dossier." + other: "Vous avez un mois 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 e81cad44d..3a0098335 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 @@ -4,9 +4,15 @@ fr: subject_en_construction: one: Un dossier en construction va bientôt être supprimé other: Des dossiers en construction vont bientôt être supprimés + subject_termine: + one: Un dossier dont le traitement est terminé va bientôt être supprimé + other: Des dossiers dont le traitement est terminé vont bientôt être supprimés header_en_construction: one: "Afin de limiter la conservation de vos données personnelles, le dossier en construction suivant sera bientôt automatiquement supprimé :" other: "Afin de limiter la conservation de vos données personnelles, les dossiers en construction suivant seront bientôt automatiquement supprimés :" + header_termine: + 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." diff --git a/spec/mailers/dossier_mailer_spec.rb b/spec/mailers/dossier_mailer_spec.rb index 7ba807f9a..d7ab78474 100644 --- a/spec/mailers/dossier_mailer_spec.rb +++ b/spec/mailers/dossier_mailer_spec.rb @@ -102,6 +102,19 @@ RSpec.describe DossierMailer, type: :mailer do it { expect(subject.body).to include(dossier.procedure.libelle) } it { expect(subject.body).to include("nous nous excusons de la gène occasionnée") } end + + describe 'termine' do + let(:dossier) { create(:dossier, :accepte) } + let(:deleted_dossier) { DeletedDossier.create_from_dossier(dossier, :expired) } + + subject { described_class.notify_automatic_deletion_to_user([deleted_dossier], dossier.user.email) } + + it { expect(subject.to).to eq([dossier.user.email]) } + it { expect(subject.subject).to eq("Un dossier a été supprimé automatiquement") } + it { expect(subject.body).to include("n° #{dossier.id} ") } + it { expect(subject.body).to include(dossier.procedure.libelle) } + it { expect(subject.body).not_to include("nous nous excusons de la gène occasionnée") } + end end describe '.notify_automatic_deletion_to_administration' do @@ -126,6 +139,18 @@ RSpec.describe DossierMailer, type: :mailer do it { expect(subject.body).to include("PDF") } it { expect(subject.body).to include("Vous avez un mois pour commencer l’instruction du dossier.") } end + + describe 'termine' do + let(:dossier) { create(:dossier, :accepte) } + + subject { described_class.notify_near_deletion_to_administration([dossier], dossier.user.email) } + + it { expect(subject.subject).to eq("Un dossier dont le traitement est terminé va bientôt être supprimé") } + 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.") } + end end describe '.notify_near_deletion_to_user' do @@ -141,6 +166,19 @@ RSpec.describe DossierMailer, type: :mailer do 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.") } end + + describe 'termine' do + let(:dossier) { create(:dossier, :accepte) } + + subject { described_class.notify_near_deletion_to_user([dossier], dossier.user.email) } + + it { expect(subject.to).to eq([dossier.user.email]) } + it { expect(subject.subject).to eq("Un dossier dont le traitement est terminé va bientôt être supprimé") } + 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.") } + end end describe '.notify_groupe_instructeur_changed_to_instructeur' do diff --git a/spec/mailers/previews/dossier_mailer_preview.rb b/spec/mailers/previews/dossier_mailer_preview.rb index fdda28d6c..c7e0a9e2d 100644 --- a/spec/mailers/previews/dossier_mailer_preview.rb +++ b/spec/mailers/previews/dossier_mailer_preview.rb @@ -28,6 +28,14 @@ class DossierMailerPreview < ActionMailer::Preview DossierMailer.notify_near_deletion_to_administration([dossier_en_construction, dossier_en_construction], administration_email) end + def notify_termine_near_deletion_to_user + DossierMailer.notify_near_deletion_to_user([dossier_accepte], usager_email) + end + + def notify_termine_near_deletion_to_administration + DossierMailer.notify_near_deletion_to_administration([dossier_accepte, dossier_accepte], administration_email) + end + def notify_brouillon_deletion DossierMailer.notify_brouillon_deletion([dossier.hash_for_deletion_mail], usager_email) end @@ -83,6 +91,10 @@ class DossierMailerPreview < ActionMailer::Preview Dossier.new(id: 47882, state: :en_construction, procedure: procedure, user: User.new(email: "usager@example.com")) end + def dossier_accepte + Dossier.new(id: 47882, state: :accepte, procedure: procedure, user: User.new(email: "usager@example.com")) + end + def procedure Procedure.new(id: 1234, libelle: 'Dotation d’Équipement des Territoires Ruraux - Exercice 2019', service: service, logo: Rack::Test::UploadedFile.new("./spec/fixtures/files/logo_test_procedure.png", 'image/png'), auto_archive_on: Time.zone.today + Dossier::REMAINING_DAYS_BEFORE_CLOSING.days) end