fix(groupe instructeur mailer): do not notify if no added instructeurs

This commit is contained in:
Eric Leroy-Terquem 2023-03-08 10:47:22 +01:00
parent f317f28ff5
commit 9e0753a710
4 changed files with 47 additions and 11 deletions

View file

@ -212,10 +212,11 @@ module Administrateurs
added_instructeurs_by_group, invalid_emails = InstructeursImportService.import_groupes(procedure, groupes_emails)
added_instructeurs_by_group.each do |groupe, added_instructeurs|
GroupeInstructeurMailer
.notify_added_instructeurs(groupe, added_instructeurs, current_administrateur.email)
.deliver_later
if added_instructeurs.present?
GroupeInstructeurMailer
.notify_added_instructeurs(groupe, added_instructeurs, current_administrateur.email)
.deliver_later
end
flash_message_for_import(invalid_emails)
end
@ -223,11 +224,11 @@ module Administrateurs
instructors_emails = csv_content.map(&:to_h)
added_instructeurs, invalid_emails = InstructeursImportService.import_instructeurs(procedure, instructors_emails)
GroupeInstructeurMailer
.notify_added_instructeurs(groupe_instructeur, added_instructeurs, current_administrateur.email)
.deliver_later
if added_instructeurs.present?
GroupeInstructeurMailer
.notify_added_instructeurs(groupe_instructeur, added_instructeurs, current_administrateur.email)
.deliver_later
end
flash_message_for_import(invalid_emails)
else
flash_message_for_invalid_csv

View file

@ -414,7 +414,7 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
it { expect { subject }.not_to raise_error }
it { expect(response.status).to eq(302) }
it { expect(flash.alert).to be_present }
it { expect(flash.alert).to eq("Importation impossible, veuillez importer un csv suivant <a href=\"/csv/import-instructeurs-test.csv\">ce modèle</a> pour une procédure classique ou <a href=\"/csv/fr/import-groupe-test.csv\">celui-ci</a> pour une procédure routée") }
it { expect(flash.alert).to eq("Importation impossible, veuillez importer un csv suivant <a href=\"/csv/import-instructeurs-test.csv\">ce modèle</a> pour une procédure sans routage ou <a href=\"/csv/fr/import-groupe-test.csv\">celui-ci</a> pour une procédure routée") }
end
context 'when the file content type is application/vnd.ms-excel' do
@ -468,7 +468,7 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
before { subject }
it { expect(flash.alert).to be_present }
it { expect(flash.alert).to eq("Importation impossible, veuillez importer un csv suivant <a href=\"/csv/import-instructeurs-test.csv\">ce modèle</a> pour une procédure classique ou <a href=\"/csv/fr/import-groupe-test.csv\">celui-ci</a> pour une procédure routée") }
it { expect(flash.alert).to eq("Importation impossible, veuillez importer un csv suivant <a href=\"/csv/import-instructeurs-test.csv\">ce modèle</a> pour une procédure sans routage ou <a href=\"/csv/fr/import-groupe-test.csv\">celui-ci</a> pour une procédure routée") }
end
context 'when procedure is closed' do
@ -480,6 +480,20 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
it { expect(procedure.groupe_instructeurs.first.label).to eq("Afrique") }
it { expect(flash.alert).to eq("Import terminé. Cependant les emails suivants ne sont pas pris en compte: kara") }
end
context 'when emails are invalid' do
let(:procedure) { create(:procedure, :closed, administrateurs: [admin]) }
let(:csv_file) { fixture_file_upload('spec/fixtures/files/groupe-instructeur-emails-invalides.csv', 'text/csv') }
before do
allow(GroupeInstructeurMailer).to receive(:notify_added_instructeurs)
.and_return(double(deliver_later: true))
subject
end
it { expect(flash.alert).to include("Import terminé. Cependant les emails suivants ne sont pas pris en compte:") }
it { expect(GroupeInstructeurMailer).not_to have_received(:notify_added_instructeurs) }
end
end
context 'unrouted procedures' do
@ -551,6 +565,19 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
it { expect(flash.alert).to be_present }
it { expect(flash.alert).to eq("Importation impossible : veuillez importer un fichier CSV") }
end
context 'when emails are invalid' do
let(:csv_file) { fixture_file_upload('spec/fixtures/files/instructeurs-emails-invalides.csv', 'text/csv') }
before do
allow(GroupeInstructeurMailer).to receive(:notify_added_instructeurs)
.and_return(double(deliver_later: true))
subject
end
it { expect(flash.alert).to include("Import terminé. Cependant les emails suivants ne sont pas pris en compte:") }
it { expect(GroupeInstructeurMailer).not_to have_received(:notify_added_instructeurs) }
end
end
end

View file

@ -0,0 +1,4 @@
Email,Groupe
instructeur1, Paris
instructeur2,Paris
instructeur3,Marseille
1 Email Groupe
2 instructeur1 Paris
3 instructeur2 Paris
4 instructeur3 Marseille

View file

@ -0,0 +1,4 @@
Email
instructeur1.test
instructeur2
instructeur3
1 Email
2 instructeur1.test
3 instructeur2
4 instructeur3