notify instructeur after groupe_instructeur changed
This commit is contained in:
parent
fb3d7e45ba
commit
e0f4957dfd
5 changed files with 39 additions and 1 deletions
|
@ -90,4 +90,12 @@ class DossierMailer < ApplicationMailer
|
|||
|
||||
mail(to: user.email, subject: @subject)
|
||||
end
|
||||
|
||||
def notify_groupe_instructeur_changed(instructeur, dossier)
|
||||
@subject = "Un dossier a changé de groupe instructeur"
|
||||
@dossier_id = dossier.id
|
||||
@demarche = dossier.procedure.libelle
|
||||
|
||||
mail(from: NO_REPLY_EMAIL, to: instructeur.email, subject: @subject)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -649,7 +649,10 @@ class Dossier < ApplicationRecord
|
|||
def unfollow_stale_instructeurs
|
||||
if saved_change_to_groupe_instructeur_id? && saved_change_to_groupe_instructeur_id[0].present?
|
||||
followers_instructeurs.each do |instructeur|
|
||||
instructeur.unfollow(self) unless instructeur.groupe_instructeurs.include?(groupe_instructeur)
|
||||
if instructeur.groupe_instructeurs.exclude?(groupe_instructeur)
|
||||
instructeur.unfollow(self)
|
||||
DossierMailer.notify_groupe_instructeur_changed(instructeur, self).deliver_later
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
- content_for(:title, "#{@subject}")
|
||||
|
||||
%p
|
||||
= "Vous suiviez jusqu'à maintenant le dossier n°#{@dossier_id} de la démarche #{@demarche}."
|
||||
L'usager a modifié le groupe de routage. Son dossier appartient maintenant à un groupe instructeur dont vous ne faites pas partie.
|
||||
%p
|
||||
Suite à cette modification, vous ne suivez plus ce dossier.
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
|
@ -154,4 +154,16 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
it { expect(subject.body).to include("PDF") }
|
||||
it { expect(subject.body).to include("Vous avez <b>un mois</b> pour traiter le dossier.") }
|
||||
end
|
||||
|
||||
describe '.notify_groupe_instructeur_changed_to_instructeur' do
|
||||
let(:dossier) { create(:dossier) }
|
||||
let(:instructeur) { create(:instructeur) }
|
||||
|
||||
subject { described_class.notify_groupe_instructeur_changed(instructeur, dossier) }
|
||||
|
||||
it { expect(subject.subject).to eq("Un dossier a changé de groupe instructeur") }
|
||||
it { expect(subject.body).to include("n°#{dossier.id}") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include("Suite à cette modification, vous ne suivez plus ce dossier.") }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -405,6 +405,10 @@ describe Dossier do
|
|||
let(:instructeur2) { create(:instructeur, groupe_instructeurs: [procedure.defaut_groupe_instructeur, new_groupe_instructeur]) }
|
||||
let(:dossier) { create(:dossier, procedure: procedure, state: Dossier.states.fetch(:en_construction)) }
|
||||
|
||||
before do
|
||||
allow(DossierMailer).to receive(:notify_groupe_instructeur_changed).and_return(double(deliver_later: nil))
|
||||
end
|
||||
|
||||
it "unfollows stale instructeurs when groupe instructeur change" do
|
||||
instructeur.follow(dossier)
|
||||
instructeur2.follow(dossier)
|
||||
|
@ -412,6 +416,8 @@ describe Dossier do
|
|||
|
||||
expect(dossier.reload.followers_instructeurs).not_to include(instructeur)
|
||||
expect(dossier.reload.followers_instructeurs).to include(instructeur2)
|
||||
expect(DossierMailer).to have_received(:notify_groupe_instructeur_changed).with(instructeur, dossier)
|
||||
expect(DossierMailer).not_to have_received(:notify_groupe_instructeur_changed).with(instructeur2, dossier)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue