Instructeur has_many procedures through groupe_instructeur
This commit is contained in:
parent
25991c2892
commit
85499365a0
7 changed files with 22 additions and 17 deletions
|
@ -6,8 +6,8 @@ class Instructeur < ApplicationRecord
|
|||
before_validation -> { sanitize_email(:email) }
|
||||
|
||||
has_many :assign_to, dependent: :destroy
|
||||
has_many :procedures, through: :assign_to
|
||||
has_many :groupe_instructeurs, through: :assign_to
|
||||
has_many :procedures, through: :groupe_instructeurs
|
||||
|
||||
has_many :assign_to_with_email_notifications, -> { with_email_notifications }, class_name: 'AssignTo', inverse_of: :instructeur
|
||||
has_many :procedures_with_email_notifications, through: :assign_to_with_email_notifications, source: :procedure
|
||||
|
@ -64,7 +64,7 @@ class Instructeur < ApplicationRecord
|
|||
end
|
||||
|
||||
def remove_from_procedure(procedure)
|
||||
!!(procedure.in?(procedures) && procedures.destroy(procedure))
|
||||
!!(procedure.defaut_groupe_instructeur.in?(groupe_instructeurs) && groupe_instructeurs.destroy(procedure.defaut_groupe_instructeur))
|
||||
end
|
||||
|
||||
def last_week_overview
|
||||
|
|
|
@ -103,9 +103,9 @@ describe Instructeurs::ProceduresController, type: :controller do
|
|||
let(:procedure3) { create(:procedure) }
|
||||
|
||||
before do
|
||||
instructeur.procedures << procedure1
|
||||
instructeur.procedures << procedure2
|
||||
instructeur.procedures << procedure3
|
||||
instructeur.groupe_instructeurs << procedure1.defaut_groupe_instructeur
|
||||
instructeur.groupe_instructeurs << procedure2.defaut_groupe_instructeur
|
||||
instructeur.groupe_instructeurs << procedure3.defaut_groupe_instructeur
|
||||
subject
|
||||
end
|
||||
|
||||
|
@ -117,7 +117,7 @@ describe Instructeurs::ProceduresController, type: :controller do
|
|||
let(:dossier) { create(:dossier, state: state, procedure: procedure) }
|
||||
|
||||
before do
|
||||
instructeur.procedures << procedure
|
||||
instructeur.groupe_instructeurs << procedure.defaut_groupe_instructeur
|
||||
dossier
|
||||
end
|
||||
|
||||
|
@ -141,7 +141,7 @@ describe Instructeurs::ProceduresController, type: :controller do
|
|||
create(:dossier, procedure: procedure, state: Dossier.states.fetch(:en_instruction))
|
||||
create(:dossier, procedure: procedure, state: Dossier.states.fetch(:sans_suite), archived: true)
|
||||
|
||||
instructeur.procedures << procedure2
|
||||
instructeur.groupe_instructeurs << procedure2.defaut_groupe_instructeur
|
||||
create(:dossier, :followed, procedure: procedure2, state: Dossier.states.fetch(:en_construction))
|
||||
create(:dossier, procedure: procedure2, state: Dossier.states.fetch(:accepte))
|
||||
instructeur.followed_dossiers << create(:dossier, procedure: procedure2, state: Dossier.states.fetch(:en_instruction))
|
||||
|
|
|
@ -5,7 +5,7 @@ describe Instructeurs::RechercheController, type: :controller do
|
|||
let(:dossier2) { create(:dossier, :en_construction, procedure: dossier.procedure) }
|
||||
let(:instructeur) { create(:instructeur) }
|
||||
|
||||
before { instructeur.procedures << dossier2.procedure }
|
||||
before { instructeur.groupe_instructeurs << dossier2.procedure.defaut_groupe_instructeur }
|
||||
|
||||
describe 'GET #index' do
|
||||
before { sign_in(instructeur.user) }
|
||||
|
|
|
@ -32,7 +32,7 @@ describe InvitesController, type: :controller do
|
|||
|
||||
context 'when instructeur has access to dossier' do
|
||||
before do
|
||||
signed_in_profile.instructeur.procedures << dossier.procedure
|
||||
signed_in_profile.instructeur.groupe_instructeurs << dossier.procedure.defaut_groupe_instructeur
|
||||
end
|
||||
|
||||
it_behaves_like "he can not create invitation"
|
||||
|
|
|
@ -17,7 +17,7 @@ describe RootController, type: :controller do
|
|||
let(:dossier) { create(:dossier, :en_construction, procedure: procedure) }
|
||||
|
||||
before do
|
||||
instructeur.procedures << procedure
|
||||
instructeur.groupe_instructeurs << procedure.defaut_groupe_instructeur
|
||||
sign_in(instructeur.user)
|
||||
end
|
||||
|
||||
|
|
|
@ -615,7 +615,7 @@ describe Dossier do
|
|||
let(:dossier) { create(:dossier, :en_construction, :followed) }
|
||||
let!(:non_following_instructeur) do
|
||||
non_following_instructeur = create(:instructeur)
|
||||
non_following_instructeur.procedures << dossier.procedure
|
||||
non_following_instructeur.groupe_instructeurs << dossier.procedure.defaut_groupe_instructeur
|
||||
non_following_instructeur
|
||||
end
|
||||
|
||||
|
|
|
@ -151,17 +151,21 @@ describe Instructeur, type: :model do
|
|||
after { Timecop.return }
|
||||
|
||||
context 'when no procedure published was active last week' do
|
||||
let!(:procedure) { create(:procedure, :published, instructeurs: [instructeur2], libelle: 'procedure') }
|
||||
let!(:procedure) { create(:procedure, :published, libelle: 'procedure') }
|
||||
|
||||
before { instructeur2.assign_to_procedure(procedure) }
|
||||
|
||||
context 'when the instructeur has no notifications' do
|
||||
it { is_expected.to eq(nil) }
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a procedure published was active' do
|
||||
let!(:procedure) { create(:procedure, :published, instructeurs: [instructeur2], libelle: 'procedure') }
|
||||
let!(:procedure) { create(:procedure, :published, libelle: 'procedure') }
|
||||
let(:procedure_overview) { double('procedure_overview', 'had_some_activities?'.to_sym => true) }
|
||||
|
||||
before :each do
|
||||
instructeur2.assign_to_procedure(procedure)
|
||||
expect_any_instance_of(Procedure).to receive(:procedure_overview).and_return(procedure_overview)
|
||||
end
|
||||
|
||||
|
@ -169,10 +173,11 @@ describe Instructeur, type: :model do
|
|||
end
|
||||
|
||||
context 'when a procedure not published was active with no notifications' do
|
||||
let!(:procedure) { create(:procedure, instructeurs: [instructeur2], libelle: 'procedure') }
|
||||
let!(:procedure) { create(:procedure, libelle: 'procedure') }
|
||||
let(:procedure_overview) { double('procedure_overview', 'had_some_activities?'.to_sym => true) }
|
||||
|
||||
before :each do
|
||||
instructeur2.assign_to_procedure(procedure)
|
||||
allow_any_instance_of(Procedure).to receive(:procedure_overview).and_return(procedure_overview)
|
||||
end
|
||||
|
||||
|
@ -259,7 +264,7 @@ describe Instructeur, type: :model do
|
|||
let!(:dossier) { create(:dossier, :followed, state: Dossier.states.fetch(:en_construction)) }
|
||||
let(:instructeur) { dossier.follows.first.instructeur }
|
||||
let(:procedure) { dossier.procedure }
|
||||
let!(:instructeur_2) { create(:instructeur, procedures: [procedure]) }
|
||||
let!(:instructeur_2) { create(:instructeur, groupe_instructeurs: [procedure.defaut_groupe_instructeur]) }
|
||||
|
||||
let!(:dossier_on_procedure_2) { create(:dossier, :followed, state: Dossier.states.fetch(:en_construction)) }
|
||||
let!(:instructeur_on_procedure_2) { dossier_on_procedure_2.follows.first.instructeur }
|
||||
|
@ -388,7 +393,7 @@ describe Instructeur, type: :model do
|
|||
let(:procedure_to_assign) { create(:procedure) }
|
||||
|
||||
before do
|
||||
create(:assign_to, instructeur: instructeur, procedure: procedure_to_assign, email_notifications_enabled: true)
|
||||
create(:assign_to, instructeur: instructeur, procedure: procedure_to_assign, email_notifications_enabled: true, groupe_instructeur: procedure_to_assign.defaut_groupe_instructeur)
|
||||
end
|
||||
|
||||
context 'when a dossier in construction exists' do
|
||||
|
@ -433,6 +438,6 @@ describe Instructeur, type: :model do
|
|||
private
|
||||
|
||||
def assign(procedure_to_assign)
|
||||
create :assign_to, instructeur: instructeur, procedure: procedure_to_assign
|
||||
create :assign_to, instructeur: instructeur, procedure: procedure_to_assign, groupe_instructeur: procedure_to_assign.defaut_groupe_instructeur
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue