From a4db911585a71eddea97004d96f653a33efd6f70 Mon Sep 17 00:00:00 2001 From: Colin Darie Date: Tue, 16 Jan 2024 17:54:53 +0100 Subject: [PATCH] perf(admin): remove 2 useless zones queries on each admin page due to navigation --- app/models/procedures_filter.rb | 3 +++ .../administrateurs/_main_navigation.html.haml | 2 +- .../procedures_controller_spec.rb | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/app/models/procedures_filter.rb b/app/models/procedures_filter.rb index 2def83fc0..988003257 100644 --- a/app/models/procedures_filter.rb +++ b/app/models/procedures_filter.rb @@ -5,6 +5,9 @@ class ProceduresFilter def initialize(admin, params) @admin = admin + + params[:zone_ids] = admin.zones.pluck(:id) if params[:zone_ids] == 'admin_default' + @params = params.permit(:page, :libelle, :email, :from_publication_date, :service_siret, :service_departement, tags: [], zone_ids: [], statuses: []) end diff --git a/app/views/administrateurs/_main_navigation.html.haml b/app/views/administrateurs/_main_navigation.html.haml index 90a3a2a2d..a1336604f 100644 --- a/app/views/administrateurs/_main_navigation.html.haml +++ b/app/views/administrateurs/_main_navigation.html.haml @@ -2,7 +2,7 @@ %ul.fr-nav__list %li.fr-nav__item= link_to 'Mes démarches', admin_procedures_path, class:'fr-nav__link', 'aria-current': current_page?(controller: 'administrateurs/procedures', action: :index) ? 'page' : nil - if Rails.application.config.ds_zonage_enabled - %li.fr-nav__item= link_to 'Toutes les démarches', all_admin_procedures_path(zone_ids: current_administrateur.zones), class:'fr-nav__link', 'aria-current': current_page?(all_admin_procedures_path) ? 'page' : nil + %li.fr-nav__item= link_to 'Toutes les démarches', all_admin_procedures_path(zone_ids: :admin_default), class:'fr-nav__link', 'aria-current': current_page?(all_admin_procedures_path) ? 'page' : nil - if current_administrateur.groupe_gestionnaire_id %li.fr-nav__item= link_to 'Mon groupe gestionnaire', admin_groupe_gestionnaire_path, class:'fr-nav__link', 'aria-current': current_page?(admin_groupe_gestionnaire_path) ? 'page' : nil diff --git a/spec/controllers/administrateurs/procedures_controller_spec.rb b/spec/controllers/administrateurs/procedures_controller_spec.rb index 96d2ed283..e76d035d5 100644 --- a/spec/controllers/administrateurs/procedures_controller_spec.rb +++ b/spec/controllers/administrateurs/procedures_controller_spec.rb @@ -116,6 +116,23 @@ describe Administrateurs::ProceduresController, type: :controller do expect(assigns(:procedures).any? { |p| p.id == draft_procedure.id }).to be_falsey end + context 'for default admin zones' do + let(:zone1) { create(:zone) } + let(:zone2) { create(:zone) } + let!(:procedure1) { create(:procedure, :published, zones: [zone1]) } + let!(:procedure2) { create(:procedure, :published, zones: [zone1, zone2]) } + let!(:admin_procedure) { create(:procedure, :published, zones: [zone2], administrateur: admin) } + + subject { get :all, params: { zone_ids: :admin_default } } + + it 'display only procedures for specified zones' do + subject + expect(assigns(:procedures).any? { |p| p.id == procedure2.id }).to be_truthy + expect(assigns(:procedures).any? { |p| p.id == admin_procedure.id }).to be_truthy + expect(assigns(:procedures).any? { |p| p.id == procedure1.id }).to be_falsey + end + end + context "for specific zones" do let(:zone1) { create(:zone) } let(:zone2) { create(:zone) }