Instructeur has_many procedures through groupe_instructeur

This commit is contained in:
simon lehericey 2019-08-20 18:03:33 +02:00
parent 25991c2892
commit 85499365a0
7 changed files with 22 additions and 17 deletions

View file

@ -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

View file

@ -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))

View file

@ -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) }

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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