2019-12-16 17:47:08 +01:00
|
|
|
|
RSpec.describe GroupeInstructeurMailer, type: :mailer do
|
2023-02-15 11:57:35 +01:00
|
|
|
|
describe '#notify_removed_instructeur' do
|
|
|
|
|
let(:procedure) { create(:procedure) }
|
2023-02-14 11:17:52 +01:00
|
|
|
|
let(:groupe_instructeur) do
|
2023-02-15 11:57:35 +01:00
|
|
|
|
gi = GroupeInstructeur.create(label: 'gi1', procedure: procedure)
|
2023-02-14 11:17:52 +01:00
|
|
|
|
gi.instructeurs << create(:instructeur, email: 'int1@g')
|
|
|
|
|
gi.instructeurs << create(:instructeur, email: 'int2@g')
|
2023-02-15 11:57:35 +01:00
|
|
|
|
gi.instructeurs << instructeur_to_remove
|
2023-02-14 11:17:52 +01:00
|
|
|
|
gi
|
|
|
|
|
end
|
2023-02-15 11:57:35 +01:00
|
|
|
|
let(:instructeur_to_remove) { create(:instructeur, email: 'int3@g') }
|
2023-02-14 11:17:52 +01:00
|
|
|
|
|
|
|
|
|
let(:current_instructeur_email) { 'toto@email.com' }
|
|
|
|
|
|
2023-02-15 11:57:35 +01:00
|
|
|
|
subject { described_class.notify_removed_instructeur(groupe_instructeur, instructeur_to_remove, current_instructeur_email) }
|
2023-02-14 11:17:52 +01:00
|
|
|
|
|
2023-02-15 11:57:35 +01:00
|
|
|
|
before { groupe_instructeur.remove(instructeur_to_remove) }
|
|
|
|
|
|
|
|
|
|
context 'when instructeur is fully removed form procedure' do
|
2023-02-17 15:24:12 +01:00
|
|
|
|
it { expect(subject.body).to include('Vous avez été désaffecté(e) de la démarche') }
|
2023-02-15 11:57:35 +01:00
|
|
|
|
it { expect(subject.to).to include('int3@g') }
|
|
|
|
|
it { expect(subject.to).not_to include('int1@g', 'int2@g') }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
context 'when instructeur is removed from one group but still affected to procedure' do
|
|
|
|
|
let!(:groupe_instructeur_2) do
|
|
|
|
|
gi2 = GroupeInstructeur.create(label: 'gi2', procedure: procedure)
|
|
|
|
|
gi2.instructeurs << instructeur_to_remove
|
|
|
|
|
gi2
|
|
|
|
|
end
|
|
|
|
|
|
2023-02-17 15:24:12 +01:00
|
|
|
|
it { expect(subject.body).to include('Vous avez été retiré(e) du groupe « gi1 » par « toto@email.com »') }
|
2023-02-15 11:57:35 +01:00
|
|
|
|
it { expect(subject.to).to include('int3@g') }
|
|
|
|
|
it { expect(subject.to).not_to include('int1@g', 'int2@g') }
|
|
|
|
|
end
|
2019-12-16 17:47:08 +01:00
|
|
|
|
end
|
2023-02-17 15:24:12 +01:00
|
|
|
|
|
|
|
|
|
describe '#notify_added_instructeurs' do
|
|
|
|
|
let(:procedure) { create(:procedure) }
|
|
|
|
|
|
|
|
|
|
let(:instructeurs_to_add) { [create(:instructeur, email: 'int3@g'), create(:instructeur, email: 'int4@g')] }
|
|
|
|
|
|
|
|
|
|
let(:current_instructeur_email) { 'toto@email.com' }
|
|
|
|
|
|
|
|
|
|
subject { described_class.notify_added_instructeurs(procedure.defaut_groupe_instructeur, instructeurs_to_add, current_instructeur_email) }
|
|
|
|
|
|
|
|
|
|
before { instructeurs_to_add.each { procedure.defaut_groupe_instructeur.add(_1) } }
|
|
|
|
|
|
|
|
|
|
context 'when there is only one group on procedure' do
|
|
|
|
|
it { expect(subject.body).to include('Vous avez été affecté(e) à la démarche') }
|
|
|
|
|
it { expect(subject.bcc).to match_array(['int3@g', 'int4@g']) }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
context 'when there are many groups on procedure' do
|
|
|
|
|
let!(:groupe_instructeur_2) do
|
|
|
|
|
GroupeInstructeur.create(label: 'gi2', procedure: procedure)
|
|
|
|
|
end
|
|
|
|
|
it { expect(subject.body).to include('Vous avez été ajouté(e) au groupe') }
|
|
|
|
|
it { expect(subject.bcc).to match_array(['int3@g', 'int4@g']) }
|
|
|
|
|
end
|
|
|
|
|
end
|
2019-12-16 17:47:08 +01:00
|
|
|
|
end
|