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:
commit
3f55c71bc8
3 changed files with 32 additions and 7 deletions
|
@ -13,7 +13,12 @@ module Mutations
|
||||||
ids, emails = partition_instructeurs_by(instructeurs)
|
ids, emails = partition_instructeurs_by(instructeurs)
|
||||||
_, invalid_emails = groupe_instructeur.add_instructeurs(ids:, emails:)
|
_, invalid_emails = groupe_instructeur.add_instructeurs(ids:, emails:)
|
||||||
|
|
||||||
|
if instructeurs.present?
|
||||||
groupe_instructeur.reload
|
groupe_instructeur.reload
|
||||||
|
GroupeInstructeurMailer
|
||||||
|
.notify_added_instructeurs(groupe_instructeur, instructeurs, current_administrateur.email)
|
||||||
|
.deliver_later
|
||||||
|
end
|
||||||
|
|
||||||
result = { groupe_instructeur: }
|
result = { groupe_instructeur: }
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,18 @@ module Mutations
|
||||||
ids, emails = partition_instructeurs_by(instructeurs)
|
ids, emails = partition_instructeurs_by(instructeurs)
|
||||||
instructeurs = groupe_instructeur.instructeurs.find_all_by_identifier(ids:, emails:)
|
instructeurs = groupe_instructeur.instructeurs.find_all_by_identifier(ids:, emails:)
|
||||||
|
|
||||||
|
if instructeurs.present?
|
||||||
instructeurs.each { groupe_instructeur.remove(_1) }
|
instructeurs.each { groupe_instructeur.remove(_1) }
|
||||||
|
|
||||||
groupe_instructeur.reload
|
groupe_instructeur.reload
|
||||||
|
|
||||||
|
instructeurs.each do |instructeur|
|
||||||
|
GroupeInstructeurMailer
|
||||||
|
.notify_removed_instructeur(groupe_instructeur, instructeur, current_administrateur.email)
|
||||||
|
.deliver_later
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
{ groupe_instructeur: }
|
{ groupe_instructeur: }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -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(:variables) { { input: { groupeInstructeurId: groupe_instructeur.to_typed_id, instructeurs: [{ email: }, { email: 'yolo' }, { id: existing_instructeur.to_typed_id }] }, includeInstructeurs: true } }
|
||||||
let(:operation_name) { 'groupeInstructeurAjouterInstructeurs' }
|
let(:operation_name) { 'groupeInstructeurAjouterInstructeurs' }
|
||||||
|
|
||||||
|
before do
|
||||||
|
allow(GroupeInstructeurMailer).to receive(:notify_added_instructeurs)
|
||||||
|
.and_return(double(deliver_later: true))
|
||||||
|
end
|
||||||
|
|
||||||
it {
|
it {
|
||||||
expect(gql_errors).to be_nil
|
expect(gql_errors).to be_nil
|
||||||
expect(gql_data[:groupeInstructeurAjouterInstructeurs][: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(:email) { 'test@test.com' }
|
||||||
let(:groupe_instructeur) { procedure.groupe_instructeurs.first }
|
let(:groupe_instructeur) { procedure.groupe_instructeurs.first }
|
||||||
let(:existing_instructeur) { groupe_instructeur.instructeurs.first }
|
let(:existing_instructeur) { groupe_instructeur.instructeurs.first }
|
||||||
let(:new_instructeur) { create(:instructeur) }
|
let(:instructeur_2) { create(:instructeur) }
|
||||||
let(:variables) { { input: { groupeInstructeurId: groupe_instructeur.to_typed_id, instructeurs: [{ email: }, { id: new_instructeur.to_typed_id }] }, includeInstructeurs: true } }
|
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' }
|
let(:operation_name) { 'groupeInstructeurSupprimerInstructeurs' }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
allow(GroupeInstructeurMailer).to receive(:notify_removed_instructeur)
|
||||||
|
.and_return(double(deliver_later: true))
|
||||||
existing_instructeur
|
existing_instructeur
|
||||||
groupe_instructeur.add(new_instructeur)
|
groupe_instructeur.add(instructeur_2)
|
||||||
|
groupe_instructeur.add(instructeur_3)
|
||||||
end
|
end
|
||||||
|
|
||||||
it {
|
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_errors).to be_nil
|
||||||
expect(gql_data[:groupeInstructeurSupprimerInstructeurs][: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(gql_data[:groupeInstructeurSupprimerInstructeurs][:groupeInstructeur][:id]).to eq(groupe_instructeur.to_typed_id)
|
||||||
expect(groupe_instructeur.instructeurs.count).to eq(1)
|
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(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
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue