diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index f94983007..88ea0db37 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -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)) diff --git a/spec/controllers/users/dossiers_controller_spec.rb b/spec/controllers/users/dossiers_controller_spec.rb index c2990c13c..8f56f1f38 100644 --- a/spec/controllers/users/dossiers_controller_spec.rb +++ b/spec/controllers/users/dossiers_controller_spec.rb @@ -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! } diff --git a/spec/factories/assign_to.rb b/spec/factories/assign_to.rb index 759c32d52..64955c283 100644 --- a/spec/factories/assign_to.rb +++ b/spec/factories/assign_to.rb @@ -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