hide dossier with accuse de lecture in user list when using state filter

This commit is contained in:
Lisa Durand 2024-04-02 12:08:03 +02:00
parent 5bbc4cab50
commit 1cf3db5899
2 changed files with 39 additions and 20 deletions

View file

@ -23,6 +23,7 @@ class DossiersFilter
dossiers_result = dossiers dossiers_result = dossiers
dossiers_result = dossiers_result.where(state: state) if state.present? && state != Dossier::A_CORRIGER dossiers_result = dossiers_result.where(state: state) if state.present? && state != Dossier::A_CORRIGER
dossiers_result = dossiers_result.with_pending_corrections if state.present? && state == Dossier::A_CORRIGER dossiers_result = dossiers_result.with_pending_corrections if state.present? && state == Dossier::A_CORRIGER
dossiers_result = exclude_accuse_lecture(dossiers_result) if state.present? && Dossier::TERMINE.include?(state)
dossiers_result = dossiers_result.where('dossiers.created_at >= ?', from_created_at_date) if from_created_at_date.present? dossiers_result = dossiers_result.where('dossiers.created_at >= ?', from_created_at_date) if from_created_at_date.present?
dossiers_result = dossiers_result.where('dossiers.depose_at >= ?', from_depose_at_date) if from_depose_at_date.present? dossiers_result = dossiers_result.where('dossiers.depose_at >= ?', from_depose_at_date) if from_depose_at_date.present?
dossiers_result dossiers_result
@ -47,4 +48,8 @@ class DossiersFilter
rescue Date::Error rescue Date::Error
nil nil
end end
def exclude_accuse_lecture(dossiers)
dossiers.joins(:procedure).where.not('dossiers.accuse_lecture_agreement_at IS NULL AND procedures.accuse_lecture = TRUE ')
end
end end

View file

@ -1,5 +1,6 @@
describe 'user access to the list of their dossiers', js: true do describe 'user access to the list of their dossiers', js: true do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:procedure_accuse_lecture) { create(:procedure, :accuse_lecture) }
let!(:dossier_brouillon) { create(:dossier, user: user) } let!(:dossier_brouillon) { create(:dossier, user: user) }
let!(:dossier_en_construction) { create(:dossier, :with_populated_champs, :en_construction, user: user) } let!(:dossier_en_construction) { create(:dossier, :with_populated_champs, :en_construction, user: user) }
let!(:dossier_en_construction_2) { create(:dossier, :en_construction, user: user) } let!(:dossier_en_construction_2) { create(:dossier, :en_construction, user: user) }
@ -9,6 +10,8 @@ describe 'user access to the list of their dossiers', js: true do
let!(:dossier_a_corriger) { create(:dossier_correction, dossier: dossier_en_construction_2) } let!(:dossier_a_corriger) { create(:dossier_correction, dossier: dossier_en_construction_2) }
let!(:dossier_archived) { create(:dossier, :en_instruction, :archived, user: user) } let!(:dossier_archived) { create(:dossier, :en_instruction, :archived, user: user) }
let!(:dossier_for_tiers) { create(:dossier, :en_instruction, :for_tiers_with_notification, user: user) } let!(:dossier_for_tiers) { create(:dossier, :en_instruction, :for_tiers_with_notification, user: user) }
let!(:dossier_en_construction_with_accuse_lecture) { create(:dossier, :en_construction, user: user, procedure: procedure_accuse_lecture) }
let!(:dossier_accepte_with_accuse_lecture) { create(:dossier, :accepte, user: user, procedure: procedure_accuse_lecture) }
let(:dossiers_per_page) { 25 } let(:dossiers_per_page) { 25 }
let(:last_updated_dossier) { dossier_en_construction } let(:last_updated_dossier) { dossier_en_construction }
@ -31,8 +34,8 @@ describe 'user access to the list of their dossiers', js: true do
expect(page).to have_content(dossier_en_construction.procedure.libelle) expect(page).to have_content(dossier_en_construction.procedure.libelle)
expect(page).to have_content(dossier_en_instruction.procedure.libelle) expect(page).to have_content(dossier_en_instruction.procedure.libelle)
expect(page).to have_content(dossier_archived.procedure.libelle) expect(page).to have_content(dossier_archived.procedure.libelle)
expect(page).to have_text('6 en cours') expect(page).to have_text('7 en cours')
expect(page).to have_text('2 traités') expect(page).to have_text('3 traités')
end end
it 'the list must be ordered by last updated' do it 'the list must be ordered by last updated' do
@ -55,8 +58,8 @@ describe 'user access to the list of their dossiers', js: true do
page.click_link("Suivant") page.click_link("Suivant")
page.click_link("Suivant") page.click_link("Suivant")
expect(page).to have_link(dossier_en_instruction.procedure.libelle) expect(page).to have_link(dossier_en_instruction.procedure.libelle)
expect(page).to have_text('6 en cours') expect(page).to have_text('7 en cours')
expect(page).to have_text('2 traités') expect(page).to have_text('3 traités')
end end
end end
@ -70,9 +73,9 @@ describe 'user access to the list of their dossiers', js: true do
context 'when user uses filter' do context 'when user uses filter' do
scenario 'user filters state on tab "en-cours"' do scenario 'user filters state on tab "en-cours"' do
expect(page).to have_text('6 en cours') expect(page).to have_text('7 en cours')
expect(page).to have_text('2 traités') expect(page).to have_text('3 traités')
expect(page).to have_text('6 sur 6 dossiers') expect(page).to have_text('7 sur 7 dossiers')
click_on('Sélectionner un filtre') click_on('Sélectionner un filtre')
expect(page).to have_select 'Statut', selected: 'Sélectionner un statut', options: ['Sélectionner un statut', 'Brouillon', 'En construction', 'En instruction', 'À corriger'] expect(page).to have_select 'Statut', selected: 'Sélectionner un statut', options: ['Sélectionner un statut', 'Brouillon', 'En construction', 'En instruction', 'À corriger']
@ -92,9 +95,9 @@ describe 'user access to the list of their dossiers', js: true do
scenario 'user filters state on tab "traité"' do scenario 'user filters state on tab "traité"' do
visit dossiers_path(statut: 'traites') visit dossiers_path(statut: 'traites')
expect(page).to have_text('6 en cours') expect(page).to have_text('7 en cours')
expect(page).to have_text('2 traités') expect(page).to have_text('3 traités')
expect(page).to have_text('2 sur 2 dossiers') expect(page).to have_text('3 sur 3 dossiers')
click_on('Sélectionner un filtre') click_on('Sélectionner un filtre')
expect(page).to have_select 'Statut', selected: 'Sélectionner un statut', options: ['Sélectionner un statut', 'Accepté', 'Refusé', 'Classé sans suite'] expect(page).to have_select 'Statut', selected: 'Sélectionner un statut', options: ['Sélectionner un statut', 'Accepté', 'Refusé', 'Classé sans suite']
@ -105,18 +108,29 @@ describe 'user access to the list of their dossiers', js: true do
click_on('Sélectionner un filtre') click_on('Sélectionner un filtre')
click_on('Annuler') click_on('Annuler')
expect(page).to have_text('2 sur 2 dossiers')
click_on('Sélectionner un filtre')
expect(page).to have_select 'Statut', selected: 'Sélectionner un statut', options: ['Sélectionner un statut', 'Accepté', 'Refusé', 'Classé sans suite']
select('Accepté', from: 'Statut')
click_on('Appliquer les filtres')
# we expect 1 dossier because we want do hide decision for dossier with accuse de lecture
expect(page).to have_text('1 dossier')
expect(page).to have_select 'Statut', selected: 'Accepté', options: ['Sélectionner un statut', 'Accepté', 'Refusé', 'Classé sans suite']
click_on('Sélectionner un filtre')
click_on('Annuler')
expect(page).to have_text('3 sur 3 dossiers')
expect(page).to have_select 'Statut', selected: 'Sélectionner un statut', options: ['Sélectionner un statut', 'Accepté', 'Refusé', 'Classé sans suite'] expect(page).to have_select 'Statut', selected: 'Sélectionner un statut', options: ['Sélectionner un statut', 'Accepté', 'Refusé', 'Classé sans suite']
end end
scenario 'user filters by created_at' do scenario 'user filters by created_at' do
dossier_en_construction.update!(created_at: Date.yesterday) dossier_en_construction.update!(created_at: Date.yesterday)
expect(page).to have_text('6 sur 6 dossiers') expect(page).to have_text('7 sur 7 dossiers')
click_on('Sélectionner un filtre') click_on('Sélectionner un filtre')
fill_in 'from_created_at_date', with: Date.today fill_in 'from_created_at_date', with: Date.today
click_on('Appliquer les filtres') click_on('Appliquer les filtres')
expect(page).to have_text('5 sur 5 dossiers') expect(page).to have_text('6 sur 6 dossiers')
end end
scenario 'user uses multiple filters' do scenario 'user uses multiple filters' do
@ -124,26 +138,26 @@ describe 'user access to the list of their dossiers', js: true do
expect(page).to have_select 'Statut', selected: 'Sélectionner un statut', options: ['Sélectionner un statut', 'Brouillon', 'En construction', 'En instruction', 'À corriger'] expect(page).to have_select 'Statut', selected: 'Sélectionner un statut', options: ['Sélectionner un statut', 'Brouillon', 'En construction', 'En instruction', 'À corriger']
expect(page).to have_text('6 sur 6 dossiers') expect(page).to have_text('7 sur 7 dossiers')
click_on('Sélectionner un filtre') click_on('Sélectionner un filtre')
fill_in 'from_created_at_date', with: Date.today fill_in 'from_created_at_date', with: Date.today
click_on('Appliquer les filtres') click_on('Appliquer les filtres')
expect(page).to have_text('5 sur 5 dossiers') expect(page).to have_text('6 sur 6 dossiers')
expect(page).to have_text('1 filtre actif') expect(page).to have_text('1 filtre actif')
click_on('Sélectionner un filtre') click_on('Sélectionner un filtre')
select('En construction', from: 'Statut') select('En construction', from: 'Statut')
click_on('Appliquer les filtres') click_on('Appliquer les filtres')
expect(page).to have_text('1 dossier') expect(page).to have_text('2 dossiers')
expect(page).to have_text('2 filtres actifs') expect(page).to have_text('2 filtres actifs')
click_on('Sélectionner un filtre') click_on('Sélectionner un filtre')
fill_in 'from_depose_at_date', with: Date.today fill_in 'from_depose_at_date', with: Date.today
click_on('Appliquer les filtres') click_on('Appliquer les filtres')
expect(page).to have_text('1 dossier') expect(page).to have_text('2 sur 2 dossiers')
expect(page).to have_text('3 filtres actifs') expect(page).to have_text('3 filtres actifs')
click_on('3 filtres actifs') click_on('3 filtres actifs')
expect(page).to have_text('6 sur 6 dossiers') expect(page).to have_text('7 sur 7 dossiers')
expect(page).not_to have_text('5 filtres actifs') expect(page).not_to have_text('5 filtres actifs')
end end
end end
@ -285,8 +299,8 @@ describe 'user access to the list of their dossiers', js: true do
describe "filter by procedure" do describe "filter by procedure" do
context "when dossiers are on different procedures" do context "when dossiers are on different procedures" do
it "can filter by procedure" do it "can filter by procedure" do
expect(page).to have_text('6 en cours') expect(page).to have_text('7 en cours')
expect(page).to have_text('2 traités') expect(page).to have_text('3 traités')
expect(page).to have_select('procedure_id', selected: 'Toutes les démarches') expect(page).to have_select('procedure_id', selected: 'Toutes les démarches')
select dossier_brouillon.procedure.libelle, from: 'procedure_id' select dossier_brouillon.procedure.libelle, from: 'procedure_id'
expect(page).to have_text('1 en cours') expect(page).to have_text('1 en cours')