2018-07-16 14:39:04 +02:00
|
|
|
|
RSpec.describe DossierMailer, type: :mailer do
|
2019-08-06 11:02:54 +02:00
|
|
|
|
let(:to_email) { 'instructeur@exemple.gouv.fr' }
|
2018-07-16 14:39:04 +02:00
|
|
|
|
|
2019-07-22 15:49:11 +02:00
|
|
|
|
shared_examples 'a dossier notification' do
|
2019-09-10 13:29:06 +02:00
|
|
|
|
it 'is sent from a no-reply address' do
|
|
|
|
|
expect(subject.from.first).to eq(Mail::Address.new(NO_REPLY_EMAIL).address)
|
|
|
|
|
end
|
|
|
|
|
|
2019-07-22 15:49:11 +02:00
|
|
|
|
it 'includes the contact informations in the footer' do
|
|
|
|
|
expect(subject.body).to include('ne pas répondre')
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2018-11-20 11:50:25 +01:00
|
|
|
|
describe '.notify_new_draft' do
|
|
|
|
|
let(:dossier) { create(:dossier, procedure: build(:simple_procedure)) }
|
|
|
|
|
|
|
|
|
|
subject { described_class.notify_new_draft(dossier) }
|
|
|
|
|
|
|
|
|
|
it { expect(subject.subject).to include("brouillon") }
|
2018-11-20 17:45:50 +01:00
|
|
|
|
it { expect(subject.subject).to include(dossier.procedure.libelle) }
|
2018-11-20 11:50:25 +01:00
|
|
|
|
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
|
|
|
|
it { expect(subject.body).to include(dossier_url(dossier)) }
|
2019-07-22 15:49:11 +02:00
|
|
|
|
|
|
|
|
|
it_behaves_like 'a dossier notification'
|
2018-11-20 11:50:25 +01:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe '.notify_new_answer' do
|
|
|
|
|
let(:dossier) { create(:dossier, procedure: build(:simple_procedure)) }
|
|
|
|
|
|
|
|
|
|
subject { described_class.notify_new_answer(dossier) }
|
|
|
|
|
|
|
|
|
|
it { expect(subject.subject).to include("Nouveau message") }
|
|
|
|
|
it { expect(subject.subject).to include(dossier.id.to_s) }
|
|
|
|
|
it { expect(subject.body).to include(messagerie_dossier_url(dossier)) }
|
2019-07-22 15:49:11 +02:00
|
|
|
|
|
|
|
|
|
it_behaves_like 'a dossier notification'
|
2018-11-20 11:50:25 +01:00
|
|
|
|
end
|
|
|
|
|
|
2018-07-16 14:39:04 +02:00
|
|
|
|
describe '.notify_deletion_to_user' do
|
|
|
|
|
let(:deleted_dossier) { build(:deleted_dossier) }
|
|
|
|
|
|
|
|
|
|
subject { described_class.notify_deletion_to_user(deleted_dossier, to_email) }
|
|
|
|
|
|
2019-07-17 13:42:14 +02:00
|
|
|
|
it { expect(subject.subject).to eq("Votre dossier nº #{deleted_dossier.dossier_id} a bien été supprimé") }
|
2018-07-16 14:39:04 +02:00
|
|
|
|
it { expect(subject.body).to include("Votre dossier") }
|
|
|
|
|
it { expect(subject.body).to include(deleted_dossier.dossier_id) }
|
|
|
|
|
it { expect(subject.body).to include("a bien été supprimé") }
|
2018-07-16 15:38:03 +02:00
|
|
|
|
it { expect(subject.body).to include(deleted_dossier.procedure.libelle) }
|
2018-07-16 14:39:04 +02:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe '.notify_deletion_to_administration' do
|
|
|
|
|
let(:deleted_dossier) { build(:deleted_dossier) }
|
|
|
|
|
|
|
|
|
|
subject { described_class.notify_deletion_to_administration(deleted_dossier, to_email) }
|
|
|
|
|
|
2020-03-19 09:49:25 +01:00
|
|
|
|
it { expect(subject.subject).to eq("Le dossier nº #{deleted_dossier.dossier_id} a été supprimé à la demande de l’usager") }
|
|
|
|
|
it { expect(subject.body).to include("À la demande de l’usager") }
|
2018-07-16 14:39:04 +02:00
|
|
|
|
it { expect(subject.body).to include(deleted_dossier.dossier_id) }
|
2018-07-16 15:38:03 +02:00
|
|
|
|
it { expect(subject.body).to include(deleted_dossier.procedure.libelle) }
|
2018-07-16 14:39:04 +02:00
|
|
|
|
end
|
|
|
|
|
|
2019-09-10 11:05:04 +02:00
|
|
|
|
describe '.notify_revert_to_instruction' do
|
|
|
|
|
let(:dossier) { create(:dossier, procedure: build(:simple_procedure)) }
|
|
|
|
|
|
|
|
|
|
subject { described_class.notify_revert_to_instruction(dossier) }
|
|
|
|
|
|
|
|
|
|
it { expect(subject.subject).to include('réexaminé') }
|
|
|
|
|
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
|
|
|
|
it { expect(subject.body).to include(dossier_url(dossier)) }
|
|
|
|
|
|
|
|
|
|
it_behaves_like 'a dossier notification'
|
|
|
|
|
end
|
2019-12-03 15:51:16 +01:00
|
|
|
|
|
|
|
|
|
describe '.notify_brouillon_near_deletion' do
|
|
|
|
|
let(:dossier) { create(:dossier) }
|
|
|
|
|
|
|
|
|
|
before do
|
|
|
|
|
duree = dossier.procedure.duree_conservation_dossiers_dans_ds
|
|
|
|
|
@date_suppression = dossier.created_at + duree.months
|
|
|
|
|
end
|
|
|
|
|
|
2020-03-19 09:49:25 +01:00
|
|
|
|
subject { described_class.notify_brouillon_near_deletion([dossier], dossier.user.email) }
|
2019-12-03 15:51:16 +01:00
|
|
|
|
|
|
|
|
|
it { expect(subject.body).to include("n° #{dossier.id} ") }
|
|
|
|
|
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
|
|
|
|
end
|
2019-11-28 18:03:23 +01:00
|
|
|
|
|
|
|
|
|
describe '.notify_brouillon_deletion' do
|
|
|
|
|
let(:dossier) { create(:dossier) }
|
|
|
|
|
|
2020-03-19 09:49:25 +01:00
|
|
|
|
subject { described_class.notify_brouillon_deletion([dossier.hash_for_deletion_mail], dossier.user.email) }
|
2019-11-28 18:03:23 +01:00
|
|
|
|
|
|
|
|
|
it { expect(subject.subject).to eq("Un dossier en brouillon a été supprimé automatiquement") }
|
|
|
|
|
it { expect(subject.body).to include("n° #{dossier.id} (#{dossier.procedure.libelle})") }
|
|
|
|
|
end
|
2020-02-18 17:15:32 +01:00
|
|
|
|
|
|
|
|
|
describe '.notify_automatic_deletion_to_user' do
|
|
|
|
|
let(:dossier) { create(:dossier) }
|
2020-03-19 11:53:25 +01:00
|
|
|
|
let(:deleted_dossier) { DeletedDossier.create_from_dossier(dossier, :expired) }
|
2020-02-18 17:15:32 +01:00
|
|
|
|
|
|
|
|
|
before do
|
|
|
|
|
duree = dossier.procedure.duree_conservation_dossiers_dans_ds
|
|
|
|
|
@date_suppression = dossier.created_at + duree.months
|
|
|
|
|
end
|
|
|
|
|
|
2020-03-19 09:49:25 +01:00
|
|
|
|
subject { described_class.notify_automatic_deletion_to_user([deleted_dossier], dossier.user.email) }
|
2020-02-18 17:15:32 +01:00
|
|
|
|
|
2020-03-05 16:41:08 +01:00
|
|
|
|
it { expect(subject.to).to eq([dossier.user.email]) }
|
2020-02-18 17:15:32 +01:00
|
|
|
|
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).to include("nous nous excusons de la gène occasionnée") }
|
|
|
|
|
end
|
2020-02-18 17:18:06 +01:00
|
|
|
|
|
|
|
|
|
describe '.notify_automatic_deletion_to_administration' do
|
|
|
|
|
let(:dossier) { create(:dossier) }
|
2020-03-19 11:53:25 +01:00
|
|
|
|
let(:deleted_dossier) { DeletedDossier.create_from_dossier(dossier, :expired) }
|
2020-02-18 17:18:06 +01:00
|
|
|
|
|
2020-03-19 09:49:25 +01:00
|
|
|
|
subject { described_class.notify_automatic_deletion_to_administration([deleted_dossier], dossier.user.email) }
|
2020-02-18 17:18:06 +01:00
|
|
|
|
|
|
|
|
|
it { expect(subject.subject).to eq("Un dossier a été supprimé automatiquement") }
|
|
|
|
|
it { expect(subject.body).to include("n° #{dossier.id} (#{dossier.procedure.libelle})") }
|
|
|
|
|
end
|
2020-02-18 17:18:14 +01:00
|
|
|
|
|
|
|
|
|
describe '.notify_en_construction_near_deletion_to_administration' do
|
|
|
|
|
let(:dossier) { create(:dossier) }
|
|
|
|
|
|
|
|
|
|
before do
|
|
|
|
|
duree = dossier.procedure.duree_conservation_dossiers_dans_ds
|
|
|
|
|
@date_suppression = dossier.created_at + duree.months
|
|
|
|
|
end
|
|
|
|
|
|
2020-03-19 09:49:25 +01:00
|
|
|
|
subject { described_class.notify_en_construction_near_deletion_to_administration([dossier], dossier.user.email) }
|
2020-02-18 17:18:14 +01:00
|
|
|
|
|
|
|
|
|
it { expect(subject.subject).to eq("Un dossier en construction 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") }
|
2020-03-26 16:59:53 +01:00
|
|
|
|
it { expect(subject.body).to include("Vous avez <b>un mois</b> pour commencer l’instruction du dossier.") }
|
2020-02-18 17:18:14 +01:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe '.notify_en_construction_near_deletion_to_user' do
|
|
|
|
|
let(:dossier) { create(:dossier) }
|
|
|
|
|
|
|
|
|
|
before do
|
|
|
|
|
duree = dossier.procedure.duree_conservation_dossiers_dans_ds
|
|
|
|
|
@date_suppression = dossier.created_at + duree.months
|
|
|
|
|
end
|
|
|
|
|
|
2020-03-19 09:49:25 +01:00
|
|
|
|
subject { described_class.notify_en_construction_near_deletion_to_user([dossier], dossier.user.email) }
|
2020-02-18 17:18:14 +01:00
|
|
|
|
|
2020-03-05 16:41:08 +01:00
|
|
|
|
it { expect(subject.to).to eq([dossier.user.email]) }
|
2020-02-18 17:18:14 +01:00
|
|
|
|
it { expect(subject.subject).to eq("Un dossier en construction 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") }
|
2020-03-19 09:49:25 +01:00
|
|
|
|
it { expect(subject.body).to include("Vous pouvez retrouver votre dossier pendant encore <b>un mois</b>. Vous n’avez rien à faire.") }
|
2020-02-18 17:18:14 +01:00
|
|
|
|
end
|
2020-02-25 18:16:21 +01:00
|
|
|
|
|
|
|
|
|
describe '.notify_groupe_instructeur_changed_to_instructeur' do
|
|
|
|
|
let(:dossier) { create(:dossier) }
|
|
|
|
|
let(:instructeur) { create(:instructeur) }
|
|
|
|
|
|
|
|
|
|
subject { described_class.notify_groupe_instructeur_changed(instructeur, dossier) }
|
|
|
|
|
|
|
|
|
|
it { expect(subject.subject).to eq("Un dossier a changé de groupe instructeur") }
|
|
|
|
|
it { expect(subject.body).to include("n°#{dossier.id}") }
|
|
|
|
|
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
|
|
|
|
it { expect(subject.body).to include("Suite à cette modification, vous ne suivez plus ce dossier.") }
|
|
|
|
|
end
|
2018-07-16 14:39:04 +02:00
|
|
|
|
end
|