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?
|
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")}"
|
flash[:alert] = "Importation impossible, veuillez importer un csv #{view_context.link_to('suivant ce modèle', "/csv/#{I18n.locale}/import-groupe-test.csv")}"
|
||||||
else
|
else
|
||||||
result = InstructeursImportService.import_groupes(procedure, groupes_emails)
|
added_instructeurs_by_group, invalid_emails = InstructeursImportService.import_groupes(procedure, groupes_emails)
|
||||||
flash_message_for_import(result)
|
|
||||||
|
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
|
end
|
||||||
|
|
||||||
elsif params[:instructeurs_csv_file]
|
elsif params[:instructeurs_csv_file]
|
||||||
|
|
|
@ -29,12 +29,15 @@ class InstructeursImportService
|
||||||
.map { [_1, emails_in_groupe[_1.label]] }
|
.map { [_1, emails_in_groupe[_1.label]] }
|
||||||
.to_h
|
.to_h
|
||||||
|
|
||||||
|
added_instructeurs_by_group = []
|
||||||
|
|
||||||
target_groupes.each do |groupe_instructeur, emails|
|
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
|
errors << invalid_emails
|
||||||
end
|
end
|
||||||
|
|
||||||
errors.flatten
|
[added_instructeurs_by_group, errors.flatten]
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.import_instructeurs(procedure, emails)
|
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
|
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') }
|
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(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 be_present }
|
||||||
it { expect(flash.notice).to eq("La liste des instructeurs a été importée avec succès") }
|
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
|
end
|
||||||
|
|
||||||
context 'when the csv file length is more than 1 mo' do
|
context 'when the csv file length is more than 1 mo' do
|
||||||
|
|
|
@ -21,7 +21,7 @@ describe InstructeursImportService do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'imports groupes' do
|
it 'imports groupes' do
|
||||||
errors = subject
|
_, errors = subject
|
||||||
|
|
||||||
expect(procedure_groupes.keys).to contain_exactly("Auvergne Rhone-Alpes", "Occitanie", "défaut")
|
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")
|
expect(procedure_groupes["Auvergne Rhone-Alpes"]).to contain_exactly("john@lennon.fr")
|
||||||
|
@ -63,7 +63,7 @@ describe InstructeursImportService do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'ignores or corrects' do
|
it 'ignores or corrects' do
|
||||||
errors = subject
|
_, errors = subject
|
||||||
|
|
||||||
expect(procedure_groupes.keys).to contain_exactly("Occitanie", "défaut")
|
expect(procedure_groupes.keys).to contain_exactly("Occitanie", "défaut")
|
||||||
expect(procedure_groupes["Occitanie"]).to contain_exactly("paul@mccartney.uk", "ringo@starr.uk")
|
expect(procedure_groupes["Occitanie"]).to contain_exactly("paul@mccartney.uk", "ringo@starr.uk")
|
||||||
|
@ -117,7 +117,7 @@ describe InstructeursImportService do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'ignores instructeur' do
|
it 'ignores instructeur' do
|
||||||
errors = subject
|
_, errors = subject
|
||||||
|
|
||||||
expect(procedure_groupes.keys).to contain_exactly("défaut")
|
expect(procedure_groupes.keys).to contain_exactly("défaut")
|
||||||
expect(procedure_groupes["défaut"]).to be_empty
|
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" }] }
|
let(:emails) { [{ "email" => "john@lennon.fr" }, { "email" => "paul@mccartney.uk" }, { "email" => "ringo@starr.uk" }] }
|
||||||
|
|
||||||
it 'imports instructeurs' do
|
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(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([])
|
expect(errors).to match_array([])
|
||||||
|
|
Loading…
Reference in a new issue