diff --git a/app/services/dossier_filter_service.rb b/app/services/dossier_filter_service.rb index 982675ade..aeb394ee1 100644 --- a/app/services/dossier_filter_service.rb +++ b/app/services/dossier_filter_service.rb @@ -57,8 +57,8 @@ class DossierFilterService .pluck(:id) .uniq when 'dossier_labels' - dossiers.includes(table) - .order("#{sanitized_column(table, column)} #{order}") + dossiers.includes(:labels) + .order("labels.name #{order}") .pluck(:id) .uniq when 'self', 'user', 'individual', 'etablissement', 'groupe_instructeur' diff --git a/spec/services/dossier_filter_service_spec.rb b/spec/services/dossier_filter_service_spec.rb index 98a80bd8e..437df287e 100644 --- a/spec/services/dossier_filter_service_spec.rb +++ b/spec/services/dossier_filter_service_spec.rb @@ -275,19 +275,24 @@ describe DossierFilterService do context 'for labels table' do let(:column) { procedure.find_column(label: 'Labels') } - let(:order) { 'asc' } let(:label_a) { Label.create(name: "a", color: 'green-bourgeon', procedure:) } let(:label_z) { Label.create(name: "z", color: 'green-bourgeon', procedure:) } - let!(:dossier_a) { create(:dossier, procedure:) } let!(:dossier_z) { create(:dossier, procedure:) } - let(:dossier_label_a) { DossierLabel.create(dossier: dossier_a, label: label_a) } - let(:dossier_label_z) { DossierLabel.create(dossier: dossier_z, label: label_z) } + let!(:dossier_a) { create(:dossier, procedure:) } + let!(:dossier_no_label) { create(:dossier, procedure:) } + let!(:dossier_label_a) { DossierLabel.create(dossier: dossier_a, label: label_a) } + let!(:dossier_label_z) { DossierLabel.create(dossier: dossier_z, label: label_z) } - before do + context 'asc' do + let(:order) { 'asc' } + it { is_expected.to eq([dossier_a, dossier_z, dossier_no_label].map(&:id)) } end - it { is_expected.to eq([dossier_a, dossier_z].map(&:id)) } + context 'desc' do + let(:order) { 'desc' } + it { is_expected.to eq([dossier_no_label, dossier_z, dossier_a].map(&:id)) } + end end context 'for other tables' do