From 1277500069afc262e5e87bc46d0f324250fe8942 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Wed, 6 Nov 2024 20:57:51 +0100 Subject: [PATCH] inject groupe_instructeurs when possible --- app/models/concerns/columns_concern.rb | 7 ++++++- spec/models/concerns/columns_concern_spec.rb | 22 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/columns_concern.rb b/app/models/concerns/columns_concern.rb index 8ce24202f..99d1f8083 100644 --- a/app/models/concerns/columns_concern.rb +++ b/app/models/concerns/columns_concern.rb @@ -83,7 +83,12 @@ module ColumnsConcern private - def groupe_instructeurs_id_column = Columns::DossierColumn.new(procedure_id: id, table: 'groupe_instructeur', column: 'id', type: :enum) + def groupe_instructeurs_id_column + groupes = Current.user&.instructeur&.groupe_instructeurs || [] + options_for_select = groupes.filter_map { [_1.label, _1.id] if _1.procedure_id == id } + + Columns::DossierColumn.new(procedure_id: id, table: 'groupe_instructeur', column: 'id', type: :enum, options_for_select:) + end def followers_instructeurs_email_column = Columns::DossierColumn.new(procedure_id: id, table: 'followers_instructeurs', column: 'email') diff --git a/spec/models/concerns/columns_concern_spec.rb b/spec/models/concerns/columns_concern_spec.rb index 1f6f0b98b..dffc714ad 100644 --- a/spec/models/concerns/columns_concern_spec.rb +++ b/spec/models/concerns/columns_concern_spec.rb @@ -133,6 +133,28 @@ describe ColumnsConcern do it { is_expected.to include(decision_on, decision_before_field) } end + + context 'when the procedure has several groupe instructeur' do + let(:procedure) { create(:procedure, :routee) } + let(:groupe_1) { procedure.groupe_instructeurs.first } + let(:groupe_2) { procedure.groupe_instructeurs.last } + let(:groupe_instructeur_column) { procedure.find_column(label: "Groupe instructeur") } + + context 'and no instructeur is available in current' do + it { expect(groupe_instructeur_column.options_for_select).to eq([]) } + end + + context 'and instructeur is available in current' do + let(:instructeur) { create(:instructeur) } + + before do + procedure.groupe_instructeurs.each { _1.add(instructeur) } + allow(Current).to receive(:user).and_return(instructeur.user) + end + + it { expect(groupe_instructeur_column.options_for_select).to match_array([groupe_1, groupe_2].map { [_1.label, _1.id] }) } + end + end end describe 'export' do