feat(groupe instructeurs import): notify added instructeurs
This commit is contained in:
parent
a6e01d98ea
commit
4ea1d7d33b
4 changed files with 24 additions and 9 deletions
|
@ -217,8 +217,15 @@ module Administrateurs
|
|||
if groupes_emails_has_keys.blank?
|
||||
flash[:alert] = "Importation impossible, veuillez importer un csv #{view_context.link_to('suivant ce modèle', "/csv/#{I18n.locale}/import-groupe-test.csv")}"
|
||||
else
|
||||
result = InstructeursImportService.import_groupes(procedure, groupes_emails)
|
||||
flash_message_for_import(result)
|
||||
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
|
||||
end
|
||||
|
||||
flash_message_for_import(invalid_emails)
|
||||
end
|
||||
|
||||
elsif params[:instructeurs_csv_file]
|
||||
|
|
|
@ -29,12 +29,15 @@ class InstructeursImportService
|
|||
.map { [_1, emails_in_groupe[_1.label]] }
|
||||
.to_h
|
||||
|
||||
added_instructeurs_by_group = []
|
||||
|
||||
target_groupes.each do |groupe_instructeur, emails|
|
||||
_, invalid_emails = groupe_instructeur.add_instructeurs(emails:)
|
||||
added_instructeurs, invalid_emails = groupe_instructeur.add_instructeurs(emails:)
|
||||
added_instructeurs_by_group << [groupe_instructeur, added_instructeurs]
|
||||
errors << invalid_emails
|
||||
end
|
||||
|
||||
errors.flatten
|
||||
[added_instructeurs_by_group, errors.flatten]
|
||||
end
|
||||
|
||||
def self.import_instructeurs(procedure, emails)
|
||||
|
|
|
@ -428,11 +428,16 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
|
|||
context 'when the content of csv contains special characters' do
|
||||
let(:csv_file) { fixture_file_upload('spec/fixtures/files/groupe_avec_caracteres_speciaux.csv', 'text/csv') }
|
||||
|
||||
before { subject }
|
||||
before do
|
||||
allow(GroupeInstructeurMailer).to receive(:notify_added_instructeurs)
|
||||
.and_return(double(deliver_later: true))
|
||||
subject
|
||||
end
|
||||
|
||||
it { expect(procedure.groupe_instructeurs.pluck(:label)).to match_array(["Auvergne-Rhône-Alpes", "Vendée", "défaut"]) }
|
||||
it { expect(flash.notice).to be_present }
|
||||
it { expect(flash.notice).to eq("La liste des instructeurs a été importée avec succès") }
|
||||
it { expect(GroupeInstructeurMailer).to have_received(:notify_added_instructeurs).twice }
|
||||
end
|
||||
|
||||
context 'when the csv file length is more than 1 mo' do
|
||||
|
|
|
@ -21,7 +21,7 @@ describe InstructeursImportService do
|
|||
end
|
||||
|
||||
it 'imports groupes' do
|
||||
errors = subject
|
||||
_, errors = subject
|
||||
|
||||
expect(procedure_groupes.keys).to contain_exactly("Auvergne Rhone-Alpes", "Occitanie", "défaut")
|
||||
expect(procedure_groupes["Auvergne Rhone-Alpes"]).to contain_exactly("john@lennon.fr")
|
||||
|
@ -63,7 +63,7 @@ describe InstructeursImportService do
|
|||
end
|
||||
|
||||
it 'ignores or corrects' do
|
||||
errors = subject
|
||||
_, errors = subject
|
||||
|
||||
expect(procedure_groupes.keys).to contain_exactly("Occitanie", "défaut")
|
||||
expect(procedure_groupes["Occitanie"]).to contain_exactly("paul@mccartney.uk", "ringo@starr.uk")
|
||||
|
@ -117,7 +117,7 @@ describe InstructeursImportService do
|
|||
end
|
||||
|
||||
it 'ignores instructeur' do
|
||||
errors = subject
|
||||
_, errors = subject
|
||||
|
||||
expect(procedure_groupes.keys).to contain_exactly("défaut")
|
||||
expect(procedure_groupes["défaut"]).to be_empty
|
||||
|
@ -136,7 +136,7 @@ describe InstructeursImportService do
|
|||
let(:emails) { [{ "email" => "john@lennon.fr" }, { "email" => "paul@mccartney.uk" }, { "email" => "ringo@starr.uk" }] }
|
||||
|
||||
it 'imports instructeurs' do
|
||||
errors = subject
|
||||
_, errors = subject
|
||||
expect(procedure_non_routee.defaut_groupe_instructeur.instructeurs.pluck(:email)).to contain_exactly("john@lennon.fr", "paul@mccartney.uk", "ringo@starr.uk")
|
||||
|
||||
expect(errors).to match_array([])
|
||||
|
|
Loading…
Reference in a new issue