[Fix #2580] Filter by created_at / updated_at

This commit is contained in:
Frederic Merizen 2018-10-10 18:18:28 +02:00
parent 165feb20b9
commit 577475f26e
2 changed files with 25 additions and 1 deletions

View file

@ -102,7 +102,8 @@ class ProcedurePresentation < ApplicationRecord
column = sanitized_column(filter)
case table
when 'self'
dossiers.where("? ILIKE ?", filter['column'], "%#{filter['value']}%")
date = filter['value'].to_date rescue nil
dossiers.where("DATE_TRUNC('day', #{column}) = ?", date)
when 'france_connect_information'
dossiers

View file

@ -267,6 +267,29 @@ describe ProcedurePresentation do
subject { procedure_presentation.filtered_ids(procedure.dossiers, 'suivis') }
context 'for self table' do
context 'for created_at column' do
let!(:kept_dossier) { create(:dossier, procedure: procedure, created_at: DateTime.new(2018, 9, 18, 14, 28)) }
let!(:discarded_dossier) { create(:dossier, procedure: procedure, created_at: DateTime.new(2018, 9, 17, 23, 59)) }
let(:filter) { [{ 'table' => 'self', 'column' => 'created_at', 'value' => '18/9/2018' }] }
it { is_expected.to contain_exactly(kept_dossier.id) }
end
context 'for updated_at column' do
let(:kept_dossier) { create(:dossier, procedure: procedure) }
let(:discarded_dossier) { create(:dossier, procedure: procedure) }
let(:filter) { [{ 'table' => 'self', 'column' => 'updated_at', 'value' => '18/9/2018' }] }
before do
kept_dossier.touch(time: DateTime.new(2018, 9, 18, 14, 28))
discarded_dossier.touch(time: DateTime.new(2018, 9, 17, 23, 59))
end
it { is_expected.to contain_exactly(kept_dossier.id) }
end
end
context 'for type_de_champ table' do
let(:kept_dossier) { create(:dossier, procedure: procedure) }
let(:discarded_dossier) { create(:dossier, procedure: procedure) }