Merge pull request #8658 from E-L-T/notify-instructeur-when-added-or-removed-from-api

feat(API): notify instructeurs when added or removed from procedure
This commit is contained in:
Eric Leroy-Terquem 2023-06-26 09:37:15 +00:00 committed by GitHub
commit 3f55c71bc8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 7 deletions

View file

@ -13,7 +13,12 @@ module Mutations
ids, emails = partition_instructeurs_by(instructeurs)
_, invalid_emails = groupe_instructeur.add_instructeurs(ids:, emails:)
groupe_instructeur.reload
if instructeurs.present?
groupe_instructeur.reload
GroupeInstructeurMailer
.notify_added_instructeurs(groupe_instructeur, instructeurs, current_administrateur.email)
.deliver_later
end
result = { groupe_instructeur: }

View file

@ -12,8 +12,18 @@ module Mutations
ids, emails = partition_instructeurs_by(instructeurs)
instructeurs = groupe_instructeur.instructeurs.find_all_by_identifier(ids:, emails:)
instructeurs.each { groupe_instructeur.remove(_1) }
groupe_instructeur.reload
if instructeurs.present?
instructeurs.each { groupe_instructeur.remove(_1) }
groupe_instructeur.reload
instructeurs.each do |instructeur|
GroupeInstructeurMailer
.notify_removed_instructeur(groupe_instructeur, instructeur, current_administrateur.email)
.deliver_later
end
end
{ groupe_instructeur: }
end
end

View file

@ -734,6 +734,11 @@ describe API::V2::GraphqlController do
let(:variables) { { input: { groupeInstructeurId: groupe_instructeur.to_typed_id, instructeurs: [{ email: }, { email: 'yolo' }, { id: existing_instructeur.to_typed_id }] }, includeInstructeurs: true } }
let(:operation_name) { 'groupeInstructeurAjouterInstructeurs' }
before do
allow(GroupeInstructeurMailer).to receive(:notify_added_instructeurs)
.and_return(double(deliver_later: true))
end
it {
expect(gql_errors).to be_nil
expect(gql_data[:groupeInstructeurAjouterInstructeurs][:errors]).to be_nil
@ -748,22 +753,27 @@ describe API::V2::GraphqlController do
let(:email) { 'test@test.com' }
let(:groupe_instructeur) { procedure.groupe_instructeurs.first }
let(:existing_instructeur) { groupe_instructeur.instructeurs.first }
let(:new_instructeur) { create(:instructeur) }
let(:variables) { { input: { groupeInstructeurId: groupe_instructeur.to_typed_id, instructeurs: [{ email: }, { id: new_instructeur.to_typed_id }] }, includeInstructeurs: true } }
let(:instructeur_2) { create(:instructeur) }
let(:instructeur_3) { create(:instructeur) }
let(:variables) { { input: { groupeInstructeurId: groupe_instructeur.to_typed_id, instructeurs: [{ email: }, { id: instructeur_2.to_typed_id }, { id: instructeur_3.to_typed_id }] }, includeInstructeurs: true } }
let(:operation_name) { 'groupeInstructeurSupprimerInstructeurs' }
before do
allow(GroupeInstructeurMailer).to receive(:notify_removed_instructeur)
.and_return(double(deliver_later: true))
existing_instructeur
groupe_instructeur.add(new_instructeur)
groupe_instructeur.add(instructeur_2)
groupe_instructeur.add(instructeur_3)
end
it {
expect(groupe_instructeur.reload.instructeurs.count).to eq(2)
expect(groupe_instructeur.reload.instructeurs.count).to eq(3)
expect(gql_errors).to be_nil
expect(gql_data[:groupeInstructeurSupprimerInstructeurs][:errors]).to be_nil
expect(gql_data[:groupeInstructeurSupprimerInstructeurs][:groupeInstructeur][:id]).to eq(groupe_instructeur.to_typed_id)
expect(groupe_instructeur.instructeurs.count).to eq(1)
expect(gql_data[:groupeInstructeurSupprimerInstructeurs][:groupeInstructeur][:instructeurs]).to eq([{ id: existing_instructeur.to_typed_id, email: existing_instructeur.email }])
expect(GroupeInstructeurMailer).to have_received(:notify_removed_instructeur).twice
}
end