[Fix #323] Refactor received dossier notification: use a callback

This commit is contained in:
gregoirenovel 2017-05-26 20:01:57 +02:00
parent 67d0fb5ddc
commit 107c322062
3 changed files with 30 additions and 2 deletions

View file

@ -99,8 +99,6 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
dossier.received!
flash.notice = 'Dossier considéré comme reçu.'
NotificationMailer.send_notification(dossier, dossier.procedure.received_mail_template).deliver_now!
redirect_to backoffice_dossier_path(id: dossier.id)
end

View file

@ -78,6 +78,7 @@ class Dossier < ActiveRecord::Base
after_save :build_default_champs, if: Proc.new { procedure_id_changed? }
after_save :build_default_individual, if: Proc.new { procedure.for_individual? }
after_save :send_notification_email
validates :user, presence: true
@ -302,4 +303,10 @@ class Dossier < ActiveRecord::Base
def serialize_value_for_export(value)
value.nil? || value.kind_of?(Time) ? value : value.to_s
end
def send_notification_email
if state_changed? && EN_INSTRUCTION.include?(state)
NotificationMailer.send_notification(self, procedure.received_mail_template).deliver_now!
end
end
end

View file

@ -867,4 +867,27 @@ describe Dossier do
it { is_expected.to include(dossier3)}
it { is_expected.to include(dossier4)}
end
describe "#send_notification_email" do
let(:procedure) { create(:procedure) }
let(:dossier) { create(:dossier, procedure: procedure, state: :initiated) }
before do
ActionMailer::Base.deliveries.clear
end
it "sends an email when the dossier becomes received" do
dossier.received!
mail = ActionMailer::Base.deliveries.last
expect(mail.subject).to eq("Votre dossier TPS nº #{dossier.id} va être instruit")
end
it "does not an email when the dossier becomes closed" do
dossier.closed!
expect(ActionMailer::Base.deliveries.size).to eq(0)
end
end
end