From fde433a7cf6841f543857c3496d83fcf5b6ef594 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Mon, 12 Apr 2021 10:35:52 +0200 Subject: [PATCH] do not ask for avis if the dossier is absent --- app/mailers/avis_mailer.rb | 10 ++++++---- spec/mailers/avis_mailer_spec.rb | 10 +++++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/mailers/avis_mailer.rb b/app/mailers/avis_mailer.rb index 7b616afee..63d8b470c 100644 --- a/app/mailers/avis_mailer.rb +++ b/app/mailers/avis_mailer.rb @@ -5,10 +5,12 @@ class AvisMailer < ApplicationMailer layout 'mailers/layout' def avis_invitation(avis) - @avis = avis - email = @avis.expert&.email - subject = "Donnez votre avis sur le dossier nº #{@avis.dossier.id} (#{@avis.dossier.procedure.libelle})" + if avis.dossier.present? + @avis = avis + email = @avis.expert&.email + subject = "Donnez votre avis sur le dossier nº #{@avis.dossier.id} (#{@avis.dossier.procedure.libelle})" - mail(to: email, subject: subject) + mail(to: email, subject: subject) + end end end diff --git a/spec/mailers/avis_mailer_spec.rb b/spec/mailers/avis_mailer_spec.rb index 247606c45..6eac2062f 100644 --- a/spec/mailers/avis_mailer_spec.rb +++ b/spec/mailers/avis_mailer_spec.rb @@ -6,7 +6,7 @@ RSpec.describe AvisMailer, type: :mailer do let(:experts_procedure) { create(:experts_procedure, expert: expert, procedure: dossier.procedure) } let(:avis) { create(:avis, dossier: dossier, claimant: claimant, experts_procedure: experts_procedure, introduction: 'intro') } - subject { described_class.avis_invitation(avis) } + subject { described_class.avis_invitation(avis.reload) } it { expect(subject.subject).to eq("Donnez votre avis sur le dossier nº #{avis.dossier.id} (#{avis.dossier.procedure.libelle})") } it { expect(subject.body).to have_text("Vous avez été invité par\r\n#{avis.claimant.email}\r\nà donner votre avis sur le dossier nº #{avis.dossier.id} de la démarche :\r\n#{avis.dossier.procedure.libelle}") } @@ -16,5 +16,13 @@ RSpec.describe AvisMailer, type: :mailer do context 'when the recipient is not already registered' do it { expect(subject.body).to include(sign_up_expert_avis_url(avis.dossier.procedure.id, avis.id, avis.expert.email)) } end + + context 'when the dossier has been deleted before the avis was sent' do + before { dossier.update(hidden_at: Time.zone.now) } + + it 'doesn’t send the email' do + expect(subject.body).to be_blank + end + end end end