2016-12-15 17:59:01 +01:00
|
|
|
|
require "spec_helper"
|
2015-12-15 11:02:07 +01:00
|
|
|
|
|
|
|
|
|
RSpec.describe NotificationMailer, type: :mailer do
|
2017-10-13 18:35:12 +02:00
|
|
|
|
shared_examples_for "create a commentaire not notified" do
|
|
|
|
|
it do
|
|
|
|
|
expect { subject.deliver_now }.to change { Commentaire.count }.by(1)
|
|
|
|
|
|
|
|
|
|
subject.deliver_now
|
|
|
|
|
commentaire = Commentaire.last
|
2018-01-08 17:26:13 +01:00
|
|
|
|
expect(commentaire.body).to include(email_template.subject_for_dossier(dossier), email_template.body_for_dossier(dossier))
|
2017-10-13 18:35:12 +02:00
|
|
|
|
expect(commentaire.dossier).to eq(dossier)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
let(:user) { create(:user) }
|
|
|
|
|
let(:dossier) { create(:dossier, user: user) }
|
|
|
|
|
|
2017-03-05 20:20:29 +01:00
|
|
|
|
describe '.send_notification' do
|
2018-01-08 17:26:13 +01:00
|
|
|
|
let(:email_template) { instance_double('email_template', subject_for_dossier: 'subject', body_for_dossier: 'body') }
|
2017-06-09 22:29:48 +02:00
|
|
|
|
|
2018-09-05 15:15:16 +02:00
|
|
|
|
subject(:mail) do
|
2018-05-25 23:08:47 +02:00
|
|
|
|
klass = Class.new(described_class) do
|
|
|
|
|
# We’re testing the (private) method `NotificationMailer#send_notification`.
|
|
|
|
|
#
|
2018-09-05 15:15:37 +02:00
|
|
|
|
# The standard trick to test a private method would be to `send(:send_notification)`, but doesn’t work here,
|
2018-12-20 09:40:05 +01:00
|
|
|
|
# because ActionMailer does some magic to expose public instance methods as class methods.
|
2018-05-25 23:08:47 +02:00
|
|
|
|
# So, we use inheritance instead to make the private method public for testing purposes.
|
|
|
|
|
def send_notification(dossier, template)
|
|
|
|
|
super
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
klass.send_notification(dossier, email_template)
|
|
|
|
|
end
|
2017-03-05 20:20:29 +01:00
|
|
|
|
|
2018-09-05 15:15:16 +02:00
|
|
|
|
it { expect(mail.subject).to eq(email_template.subject_for_dossier) }
|
2018-09-05 15:25:47 +02:00
|
|
|
|
it { expect(mail.body).to include(email_template.body_for_dossier) }
|
2018-12-20 09:49:14 +01:00
|
|
|
|
it { expect(mail.body).to have_link('messagerie') }
|
2018-09-05 15:25:47 +02:00
|
|
|
|
|
2017-10-13 18:35:12 +02:00
|
|
|
|
it_behaves_like "create a commentaire not notified"
|
|
|
|
|
end
|
2017-05-11 18:07:37 +02:00
|
|
|
|
|
2017-10-13 18:35:12 +02:00
|
|
|
|
describe '.send_dossier_received' do
|
2018-09-05 15:15:16 +02:00
|
|
|
|
subject(:mail) { described_class.send_dossier_received(dossier) }
|
2017-10-13 18:35:12 +02:00
|
|
|
|
let(:email_template) { create(:received_mail) }
|
2017-05-11 18:07:37 +02:00
|
|
|
|
|
2017-10-13 18:35:12 +02:00
|
|
|
|
before do
|
|
|
|
|
dossier.procedure.received_mail = email_template
|
2017-05-11 18:07:37 +02:00
|
|
|
|
end
|
2017-10-13 18:35:12 +02:00
|
|
|
|
|
|
|
|
|
it do
|
2018-09-05 15:15:16 +02:00
|
|
|
|
expect(mail.subject).to eq(email_template.subject)
|
2018-09-05 15:25:47 +02:00
|
|
|
|
expect(mail.body).to include(email_template.body)
|
2018-12-20 09:49:14 +01:00
|
|
|
|
expect(mail.body).to have_link('messagerie')
|
2017-10-13 18:35:12 +02:00
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
it_behaves_like "create a commentaire not notified"
|
2017-03-05 20:20:29 +01:00
|
|
|
|
end
|
2015-12-15 11:02:07 +01:00
|
|
|
|
end
|