unfollow stale instructeurs
when the group instructeur of a dossier is changed, unfollow the instructeurs who don't belong to the new groupe instructeur
This commit is contained in:
parent
f7a4759664
commit
fb3d7e45ba
2 changed files with 26 additions and 0 deletions
|
@ -213,6 +213,7 @@ class Dossier < ApplicationRecord
|
|||
before_save :build_default_champs, if: Proc.new { groupe_instructeur_id_was.nil? }
|
||||
before_save :update_search_terms
|
||||
|
||||
after_save :unfollow_stale_instructeurs
|
||||
after_save :send_dossier_received
|
||||
after_save :send_web_hook
|
||||
after_create :send_draft_notification_email
|
||||
|
@ -645,6 +646,14 @@ class Dossier < ApplicationRecord
|
|||
end
|
||||
end
|
||||
|
||||
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)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.send_brouillon_expiration_notices
|
||||
brouillons = Dossier
|
||||
.brouillon_close_to_expiration
|
||||
|
|
|
@ -398,6 +398,23 @@ describe Dossier do
|
|||
it { is_expected.to match([dossier3, dossier4, dossier2]) }
|
||||
end
|
||||
|
||||
describe "#unfollow_stale_instructeurs" do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:instructeur) { create(:instructeur) }
|
||||
let(:new_groupe_instructeur) { create(:groupe_instructeur) }
|
||||
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)) }
|
||||
|
||||
it "unfollows stale instructeurs when groupe instructeur change" do
|
||||
instructeur.follow(dossier)
|
||||
instructeur2.follow(dossier)
|
||||
dossier.reload.update(groupe_instructeur: new_groupe_instructeur)
|
||||
|
||||
expect(dossier.reload.followers_instructeurs).not_to include(instructeur)
|
||||
expect(dossier.reload.followers_instructeurs).to include(instructeur2)
|
||||
end
|
||||
end
|
||||
|
||||
describe "#send_dossier_received" do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:dossier) { create(:dossier, procedure: procedure, state: Dossier.states.fetch(:en_construction)) }
|
||||
|
|
Loading…
Reference in a new issue