From 11065946cee0f40ad25ee3f346a54b4e3e4c133c Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Thu, 4 May 2023 18:24:18 +0200 Subject: [PATCH] fix(instructeur): fix dossiers suivis filter (merge behavior change in rails 7) --- app/models/dossier.rb | 2 +- spec/models/procedure_presentation_spec.rb | 41 ++++++++++++++++------ 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 7ad38bb52..6b2163240 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -432,8 +432,8 @@ class Dossier < ApplicationRecord when 'suivis' instructeur .followed_dossiers - .en_cours .merge(visible_by_administration) + .en_cours when 'traites' visible_by_administration.termine when 'tous' diff --git a/spec/models/procedure_presentation_spec.rb b/spec/models/procedure_presentation_spec.rb index ad421307e..fe2feb065 100644 --- a/spec/models/procedure_presentation_spec.rb +++ b/spec/models/procedure_presentation_spec.rb @@ -829,30 +829,49 @@ describe ProcedurePresentation do end describe '#filtered_sorted_ids' do + let(:procedure_presentation) { create(:procedure_presentation, assign_to:) } let(:dossier_1) { create(:dossier) } let(:dossier_2) { create(:dossier) } let(:dossier_3) { create(:dossier) } let(:dossiers) { Dossier.where(id: [dossier_1, dossier_2, dossier_3].map(&:id)) } let(:sorted_ids) { [dossier_2, dossier_3, dossier_1].map(&:id) } + let(:statut) { 'tous' } - subject { procedure_presentation.filtered_sorted_ids(dossiers, 'tous') } + subject { procedure_presentation.filtered_sorted_ids(dossiers, statut) } - before do - expect(procedure_presentation).to receive(:sorted_ids).and_return(sorted_ids) - end - - it { is_expected.to eq(sorted_ids) } - - context 'when a filter is present' do - let(:filtered_ids) { [dossier_1, dossier_2, dossier_3].map(&:id) } + context 'with no filters' do + let(:statut) { 'suivis' } + let(:dossiers) { procedure.dossiers } before do - procedure_presentation.filters['tous'] = 'some_filter' - expect(procedure_presentation).to receive(:filtered_ids).and_return(filtered_ids) + create(:follow, dossier: en_construction_dossier, instructeur: procedure_presentation.instructeur) + create(:follow, dossier: accepte_dossier, instructeur: procedure_presentation.instructeur) + end + + let(:en_construction_dossier) { create(:dossier, :en_construction, procedure:) } + let(:accepte_dossier) { create(:dossier, :accepte, procedure:) } + + it { is_expected.to contain_exactly(en_construction_dossier.id) } + end + + context 'with mocked sorted_ids' do + before do + expect(procedure_presentation).to receive(:sorted_ids).and_return(sorted_ids) end it { is_expected.to eq(sorted_ids) } + + context 'when a filter is present' do + let(:filtered_ids) { [dossier_1, dossier_2, dossier_3].map(&:id) } + + before do + procedure_presentation.filters['tous'] = 'some_filter' + expect(procedure_presentation).to receive(:filtered_ids).and_return(filtered_ids) + end + + it { is_expected.to eq(sorted_ids) } + end end end