feat(mail): from and link with host for recipient in dossier_mailer

This commit is contained in:
Colin Darie 2024-03-27 09:16:40 +01:00
parent 3512e071d3
commit f8a9e72aa2
No known key found for this signature in database
GPG key ID: 8C76CADD40253590
7 changed files with 75 additions and 9 deletions

View file

@ -65,8 +65,4 @@ RSpec.describe DeviseUserMailer, type: :mailer do
end
end
end
def header_value(name, message)
message.header.fields.find { _1.name == name }.value
end
end

View file

@ -12,18 +12,28 @@ RSpec.describe DossierMailer, type: :mailer do
end
describe '.notify_new_draft' do
let(:dossier) { create(:dossier, procedure: create(:simple_procedure, :with_auto_archive)) }
let(:user) { create(:user) }
let(:dossier) { create(:dossier, procedure: create(:simple_procedure, :with_auto_archive), user:) }
subject { described_class.with(dossier:).notify_new_draft }
it { expect(subject.subject).to include("brouillon") }
it { expect(subject.subject).to include(dossier.procedure.libelle) }
it { expect(subject.body).to include(dossier.procedure.libelle) }
it { expect(subject.body).to include(dossier_url(dossier)) }
it { expect(subject.body).to include(dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY"))) }
it { expect(subject.body).to include("Vous pouvez déposer votre dossier jusquau") }
it { expect(subject.body).to include("heure de") }
it_behaves_like 'a dossier notification'
context "user prefers new domain" do
let(:user) { create(:user, preferred_domain: :demarches_gouv_fr) }
it do
expect(subject.body).to include(dossier_url(dossier, host: ENV.fetch('APP_HOST')))
expect(header_value("From", subject)).to include("ne-pas-repondre@demarches.gouv.fr")
end
end
end
describe '.notify_new_answer with dossier brouillon' do
@ -36,7 +46,7 @@ RSpec.describe DossierMailer, type: :mailer do
it { expect(subject.subject).to include("Nouveau message") }
it { expect(subject.subject).to include(dossier.id.to_s) }
it { expect(subject.body).to include(dossier.procedure.service.email) }
it { expect(subject.body).not_to include(messagerie_dossier_url(dossier)) }
it { expect(subject.body).not_to include(messagerie_dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY"))) }
it_behaves_like 'a dossier notification'
@ -54,7 +64,7 @@ RSpec.describe DossierMailer, type: :mailer do
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)) }
it { expect(subject.body).to include(messagerie_dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY"))) }
it_behaves_like 'a dossier notification'
end
@ -280,6 +290,11 @@ RSpec.describe DossierMailer, type: :mailer do
it { expect(subject.body).to include(procedure.libelle.to_s) }
end
context 'when recipient has preferred domain' do
let(:dossier_transfer) { create(:dossier_transfer, email: create(:user, preferred_domain: :demarches_gouv_fr).email) }
it { expect(subject.body).to include(dossiers_url(statut: "dossiers-transferes", host: ENV.fetch("APP_HOST"))) }
end
context 'when it is a transfer of multiple dossiers' do
let!(:dossier2) { create(:dossier, user: user, transfer: dossier_transfer, procedure: procedure) }
it { expect(subject.subject).to include("Vous avez une demande de transfert en attente.") }

5
spec/support/mailer.rb Normal file
View file

@ -0,0 +1,5 @@
# frozen_string_literal: true
def header_value(name, message)
message.header.fields.find { _1.name == name }.value
end