fix(dossier): do not send notification on expiration when dossier is already deleted
This commit is contained in:
parent
d1a941d908
commit
3d8471e064
2 changed files with 23 additions and 0 deletions
|
@ -117,6 +117,7 @@ class ExpiredDossiersDeletionService
|
||||||
|
|
||||||
def self.group_by_user_email(dossiers, notify_on_closed_procedures_to_user: false)
|
def self.group_by_user_email(dossiers, notify_on_closed_procedures_to_user: false)
|
||||||
dossiers
|
dossiers
|
||||||
|
.visible_by_user
|
||||||
.with_notifiable_procedure(notify_on_closed: notify_on_closed_procedures_to_user)
|
.with_notifiable_procedure(notify_on_closed: notify_on_closed_procedures_to_user)
|
||||||
.includes(:user, :procedure)
|
.includes(:user, :procedure)
|
||||||
.group_by(&:user)
|
.group_by(&:user)
|
||||||
|
@ -125,6 +126,7 @@ class ExpiredDossiersDeletionService
|
||||||
|
|
||||||
def self.group_by_fonctionnaire_email(dossiers)
|
def self.group_by_fonctionnaire_email(dossiers)
|
||||||
dossiers
|
dossiers
|
||||||
|
.visible_by_administration
|
||||||
.with_notifiable_procedure(notify_on_closed: true)
|
.with_notifiable_procedure(notify_on_closed: true)
|
||||||
.includes(:followers_instructeurs, procedure: [:administrateurs])
|
.includes(:followers_instructeurs, procedure: [:administrateurs])
|
||||||
.each_with_object(Hash.new { |h, k| h[k] = Set.new }) do |dossier, h|
|
.each_with_object(Hash.new { |h, k| h[k] = Set.new }) do |dossier, h|
|
||||||
|
|
|
@ -416,5 +416,26 @@ describe ExpiredDossiersDeletionService do
|
||||||
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with([deleted_dossier_1], dossier_1.procedure.administrateurs.first.email) }
|
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with([deleted_dossier_1], dossier_1.procedure.administrateurs.first.email) }
|
||||||
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with([deleted_dossier_2], dossier_2.procedure.administrateurs.first.email) }
|
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with([deleted_dossier_2], dossier_2.procedure.administrateurs.first.email) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'with 1 dossier deleted by user and 1 dossier deleted by administration' do
|
||||||
|
let!(:dossier_1) { create(:dossier, :accepte, procedure: procedure, user: user, hidden_by_administration_at: 1.hour.ago, termine_close_to_expiration_notice_sent_at: (warning_period + 1.day).ago) }
|
||||||
|
let!(:dossier_2) { create(:dossier, :refuse, procedure: procedure_2, user: user, hidden_by_user_at: 1.hour.ago, termine_close_to_expiration_notice_sent_at: (warning_period + 1.day).ago) }
|
||||||
|
let(:deleted_dossier_1) { DeletedDossier.find_by(dossier_id: dossier_1.id) }
|
||||||
|
let(:deleted_dossier_2) { DeletedDossier.find_by(dossier_id: dossier_2.id) }
|
||||||
|
|
||||||
|
let!(:instructeur) { create(:instructeur) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
instructeur.followed_dossiers << dossier_1 << dossier_2
|
||||||
|
ExpiredDossiersDeletionService.delete_expired_termine_and_notify
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_user).once }
|
||||||
|
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_user).with(match_array([deleted_dossier_1]), user.email) }
|
||||||
|
|
||||||
|
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).twice }
|
||||||
|
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with(match_array([deleted_dossier_2]), instructeur.email) }
|
||||||
|
it { expect(DossierMailer).to have_received(:notify_automatic_deletion_to_administration).with([deleted_dossier_2], dossier_2.procedure.administrateurs.first.email) }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue