Merge pull request #8581 from E-L-T/do-not-notify-instructeurs-when-adding-other-instructeurs

feat(groupe instructeurs): remove mailing when adding instructeurs
This commit is contained in:
Colin Darie 2023-02-08 11:04:13 +01:00 committed by GitHub
commit 453732257d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 11 additions and 56 deletions

View file

@ -123,10 +123,6 @@ module Administrateurs
instructeurs.each { groupe_instructeur.add(_1) }
flash[:notice] = if procedure.routing_enabled?
GroupeInstructeurMailer
.add_instructeurs(groupe_instructeur, instructeurs, current_administrateur.email)
.deliver_later
t('.assignment',
count: instructeurs.size,
emails: instructeurs.map(&:email).join(', '),

View file

@ -22,9 +22,6 @@ module Instructeurs
else
groupe_instructeur.add(instructeur)
flash[:notice] = "Linstructeur « #{instructeur_email} » a été affecté au groupe."
GroupeInstructeurMailer
.add_instructeurs(groupe_instructeur, [instructeur], current_user.email)
.deliver_later
end
redirect_to instructeur_groupe_path(procedure, groupe_instructeur)

View file

@ -26,12 +26,6 @@ module Mutations
result[:warnings] = [warning]
end
if groupe_instructeur.procedure.routing_enabled? && instructeurs.present?
GroupeInstructeurMailer
.add_instructeurs(groupe_instructeur, instructeurs, current_administrateur.email)
.deliver_later
end
result
end
end

View file

@ -1,17 +1,6 @@
class GroupeInstructeurMailer < ApplicationMailer
layout 'mailers/layout'
def add_instructeurs(group, new_instructeurs, current_instructeur_email)
@new_instructeur_emails = new_instructeurs.map(&:email)
@group = group
@current_instructeur_email = current_instructeur_email
subject = "Ajout dun instructeur dans le groupe \"#{group.label}\""
emails = @group.instructeurs.map(&:email)
mail(bcc: emails, subject: subject)
end
def remove_instructeurs(group, removed_instructeurs, current_instructeur_email)
@removed_instructeur_emails = removed_instructeurs.map(&:email)
@group = group
@ -22,15 +11,4 @@ class GroupeInstructeurMailer < ApplicationMailer
emails = @group.instructeurs.map(&:email)
mail(bcc: emails, subject: subject)
end
def remove_instructeur(group, instructeur, current_instructeur_email)
@email = instructeur.email
@group = group
@current_instructeur_email = current_instructeur_email
subject = "Suppression dun instructeur dans le groupe \"#{group.label}\""
emails = @group.instructeurs.map(&:email)
mail(bcc: emails, subject: subject)
end
end

View file

@ -263,12 +263,8 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
emails: new_instructeur_emails.to_json
}
end
before do
gi_1_2.instructeurs << instructeur
allow(GroupeInstructeurMailer).to receive(:add_instructeurs)
.and_return(double(deliver_later: true))
end
before { gi_1_2.instructeurs << instructeur }
context 'of a news instructeurs' do
let(:new_instructeur_emails) { ['new_i1@mail.com', 'new_i2@mail.com'] }
@ -277,13 +273,6 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
it { expect(flash.notice).to be_present }
it { expect(response).to redirect_to(admin_procedure_groupe_instructeur_path(procedure, gi_1_2)) }
it { expect(procedure.routing_enabled?).to be_truthy }
it "calls GroupeInstructeurMailer with the right groupe and instructeurs" do
expect(GroupeInstructeurMailer).to have_received(:add_instructeurs).with(
gi_1_2,
satisfy { |instructeurs| instructeurs.all? { |i| new_instructeur_emails.include?(i.email) } },
admin.email
)
end
end
context 'of an instructeur already in the group' do

View file

@ -1,20 +1,21 @@
RSpec.describe GroupeInstructeurMailer, type: :mailer do
describe '#add_instructeurs' do
describe '#remove_instructeurs' do
let(:groupe_instructeur) do
gi = GroupeInstructeur.create(label: 'gi1', procedure: create(:procedure))
gi.instructeurs << create(:instructeur, email: 'int1@g')
gi.instructeurs << create(:instructeur, email: 'int2@g')
gi.instructeurs << instructeurs_to_remove
gi
end
let(:instructeur_1) { create(:instructeur) }
let(:instructeur_2) { create(:instructeur) }
let(:instructeur_1) { create(:instructeur, email: 'int3@g') }
let(:instructeur_2) { create(:instructeur, email: 'int4@g') }
let(:instructeurs) { [instructeur_1, instructeur_2] }
let(:instructeurs_to_remove) { [instructeur_1, instructeur_2] }
let(:current_instructeur_email) { 'toto@email.com' }
subject { described_class.add_instructeurs(groupe_instructeur, instructeurs, current_instructeur_email) }
subject { described_class.remove_instructeurs(groupe_instructeur, instructeurs_to_remove, current_instructeur_email) }
it { expect(subject.body).to include('Bonjour') }
it { expect(subject.bcc).to match_array(['int1@g', 'int2@g']) }
it { expect(subject.body).to include('Les instructeurs int3@g, int4@g ont été retirés du groupe') }
it { expect(subject.bcc).to match_array(['int1@g', 'int2@g', 'int3@g', 'int4@g']) }
end
end

View file

@ -1,9 +1,9 @@
class GroupeInstructeurMailerPreview < ActionMailer::Preview
def add_instructeurs
def remove_instructeurs
procedure = Procedure.new(id: 1, libelle: 'une superbe procedure')
groupe = GroupeInstructeur.new(id: 1, label: 'Val-De-Marne', procedure:)
current_instructeur_email = 'admin@dgfip.com'
instructeurs = Instructeur.limit(2)
GroupeInstructeurMailer.add_instructeurs(groupe, instructeurs, current_instructeur_email)
GroupeInstructeurMailer.remove_instructeurs(groupe, instructeurs, current_instructeur_email)
end
end