From 24eca40f660acf81e480f72255d9a65be092b7e7 Mon Sep 17 00:00:00 2001 From: Lisa Durand Date: Tue, 2 May 2023 10:32:38 +0200 Subject: [PATCH] add from_depose_at filter --- .../user_filter_component.html.haml | 5 +++++ app/controllers/users/dossiers_controller.rb | 1 + app/models/dossiers_filter.rb | 12 ++++++++++-- spec/system/users/list_dossiers_spec.rb | 17 ++++++++++++++--- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/app/components/dossiers/user_filter_component/user_filter_component.html.haml b/app/components/dossiers/user_filter_component/user_filter_component.html.haml index a1be394b4..704d7c0dc 100644 --- a/app/components/dossiers/user_filter_component/user_filter_component.html.haml +++ b/app/components/dossiers/user_filter_component/user_filter_component.html.haml @@ -16,6 +16,11 @@ = f.label 'from_created_at_date', 'Dossier créé depuis le', class: 'fr-label' = f.date_field 'from_created_at_date', value: @filter.from_created_at_date, class: 'fr-input' + .fr-col-12.fr-col-md-3 + .fr-input-group + = f.label 'from_depose_at_date', 'Dossier déposé depuis le', class: 'fr-label' + = f.date_field 'from_depose_at_date', value: @filter.from_depose_at_date, class: 'fr-input' + .fr-mb-2w = f.submit 'Appliquer les filtres', class: 'fr-btn fr-btn--sm' = link_to 'Réinitialiser les filtres', dossiers_path(statut: @statut), class: 'fr-btn fr-btn--sm fr-btn--tertiary-no-outline' diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index 72a4b0567..f967fc59c 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -61,6 +61,7 @@ module Users dossiers_result = dossiers dossiers_result = dossiers_result.where(state: filter.states) if filter.states.present? dossiers_result = dossiers_result.where('created_at >= ?', filter.from_created_at_date) if filter.from_created_at_date.present? + dossiers_result = dossiers_result.where('depose_at >= ?', filter.from_depose_at_date) if filter.from_depose_at_date.present? dossiers_result end diff --git a/app/models/dossiers_filter.rb b/app/models/dossiers_filter.rb index 32b30f114..00cffdb0a 100644 --- a/app/models/dossiers_filter.rb +++ b/app/models/dossiers_filter.rb @@ -5,11 +5,11 @@ class DossiersFilter def initialize(user, params) @user = user - @params = params.permit(:page, :from_created_at_date, states: []) + @params = params.permit(:page, :from_created_at_date, :from_depose_at_date, states: []) end def filter_params - params[:from_created_at_date].presence || params[:states].presence + params[:from_created_at_date].presence || params[:from_depose_at_date].presence || params[:states].presence end def states @@ -27,4 +27,12 @@ class DossiersFilter rescue Date::Error nil end + + def from_depose_at_date + return if params[:from_depose_at_date].blank? + + Date.parse(params[:from_depose_at_date]) + rescue Date::Error + nil + end end diff --git a/spec/system/users/list_dossiers_spec.rb b/spec/system/users/list_dossiers_spec.rb index 52a702e0a..917edf7f1 100644 --- a/spec/system/users/list_dossiers_spec.rb +++ b/spec/system/users/list_dossiers_spec.rb @@ -57,21 +57,27 @@ describe 'user access to the list of their dossiers', js: true do end context 'when user uses filter' do - scenario 'user filters by brouillon state on tab "en-cours"' do + scenario 'user filters state on tab "en-cours"' do expect(page).to have_text('4 en cours') expect(page).to have_text('2 traités') expect(page).to have_text('4 sur 4 dossiers') + expect(page).to have_text('Brouillon') + expect(page).to have_text('En Construction') + expect(page).to have_text('En Instruction') find("label", text: "Brouillon").click click_on('Appliquer les filtres') expect(page).to have_text('1 dossier') expect(page).to have_checked_field('Brouillon') end - scenario 'user filters by brouillon state on tab "traité"' do + scenario 'user filters state on tab "traité"' do visit dossiers_path(statut: 'traites') expect(page).to have_text('4 en cours') expect(page).to have_text('2 traités') expect(page).to have_text('2 sur 2 dossiers') + expect(page).to have_text('Accepte') + expect(page).to have_text('Refuse') + expect(page).to have_text('Sans Suite') find("label", text: "Refuse").click click_on('Appliquer les filtres') expect(page).to have_text('1 dossier') @@ -90,8 +96,9 @@ describe 'user access to the list of their dossiers', js: true do expect(page).to have_text('3 sur 3 dossiers') end - scenario 'user filters by states and created at' do + scenario 'user uses multiple filters' do dossier_en_construction.update!(created_at: Date.yesterday) + dossier_en_instruction.update!(depose_at: Date.yesterday) expect(page).to have_text('4 sur 4 dossiers') fill_in 'from_created_at_date', with: Date.today @@ -102,6 +109,10 @@ describe 'user access to the list of their dossiers', js: true do find("label", text: "En Instruction").click click_on('Appliquer les filtres') expect(page).to have_text('2 sur 2 dossiers') + + fill_in 'from_depose_at_date', with: Date.today + click_on('Appliquer les filtres') + expect(page).to have_text('1 dossier') end end