send notif only to the right instructeurs

after a dossier creation, only the instructeurs that belong to the group
instructeur of the dossier, and who want notif will be notified by mail
This commit is contained in:
Christophe Robillard 2020-04-23 11:52:21 +02:00
parent d927118221
commit 339066778d
3 changed files with 29 additions and 3 deletions

View file

@ -153,7 +153,7 @@ module Users
if passage_en_construction? && errors.blank?
@dossier.en_construction!
NotificationMailer.send_initiated_notification(@dossier).deliver_later
@dossier.procedure.instructeurs.with_instant_email_dossier_notifications.each do |instructeur|
@dossier.groupe_instructeur.instructeurs.with_instant_email_dossier_notifications.each do |instructeur|
DossierMailer.notify_new_dossier_depose_to_instructeur(@dossier, instructeur.email).deliver_later
end
return redirect_to(merci_dossier_path(@dossier))

View file

@ -454,6 +454,28 @@ describe Users::DossiersController, type: :controller do
end
end
context 'with procedure routee' do
let(:procedure) { create(:procedure, :routee, :with_type_de_champ) }
let(:dossier_group) { create(:groupe_instructeur, procedure: procedure) }
let(:another_group) { create(:groupe_instructeur, procedure: procedure) }
let(:instructeur_of_dossier) { create(:instructeur) }
let(:instructeur_in_another_group) { create(:instructeur) }
let!(:dossier) { create(:dossier, groupe_instructeur: dossier_group, user: user) }
before do
allow(DossierMailer).to receive(:notify_new_dossier_depose_to_instructeur).and_return(double(deliver_later: nil))
create(:assign_to, instructeur: instructeur_of_dossier, procedure: dossier.procedure, instant_email_dossier_notifications_enabled: true, groupe_instructeur: dossier_group)
create(:assign_to, instructeur: instructeur_in_another_group, procedure: dossier.procedure, instant_email_dossier_notifications_enabled: true, groupe_instructeur: another_group)
end
it "sends notification mail to instructeurs in the correct group instructeur" do
subject
expect(DossierMailer).to have_received(:notify_new_dossier_depose_to_instructeur).once.with(dossier, instructeur_of_dossier.email)
expect(DossierMailer).not_to have_received(:notify_new_dossier_depose_to_instructeur).with(dossier, instructeur_in_another_group.email)
end
end
context "on an closed procedure" do
before { dossier.procedure.close! }

View file

@ -1,7 +1,11 @@
FactoryBot.define do
factory :assign_to do
after(:build) do |assign_to, _evaluator|
assign_to.groupe_instructeur = assign_to.procedure.defaut_groupe_instructeur
after(:build) do |assign_to, evaluator|
if evaluator.groupe_instructeur.persisted?
assign_to.groupe_instructeur = evaluator.groupe_instructeur
else
assign_to.groupe_instructeur = assign_to.procedure.defaut_groupe_instructeur
end
end
end
end