From da98aa556be03967e475279acaac4277607c75a4 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Wed, 25 Sep 2024 17:43:43 +0200 Subject: [PATCH] use update(sorted_column:) and remove obsolete update_sort(column_id:, order:) --- .../notified_toggle_component.html.haml | 8 +++---- .../column_table_header_component.rb | 4 ++-- .../instructeurs/procedures_controller.rb | 6 ++++- app/models/procedure_presentation.rb | 18 -------------- .../procedures_controller_spec.rb | 10 ++++---- spec/models/procedure_presentation_spec.rb | 24 +++---------------- 6 files changed, 19 insertions(+), 51 deletions(-) diff --git a/app/components/dossiers/notified_toggle_component/notified_toggle_component.html.haml b/app/components/dossiers/notified_toggle_component/notified_toggle_component.html.haml index 4a45874c3..272167f90 100644 --- a/app/components/dossiers/notified_toggle_component/notified_toggle_component.html.haml +++ b/app/components/dossiers/notified_toggle_component/notified_toggle_component.html.haml @@ -2,8 +2,8 @@ method: :get, data: { controller: 'autosubmit' } do .fr-fieldset__element.fr-m-0 .fr-checkbox-group.fr-checkbox-group--sm - = hidden_field_tag 'column_id', @procedure.notifications_column.id - = hidden_field_tag 'order', 'asc', id: nil - = check_box_tag 'order', 'desc', @sorted_column.sort_by_notifications? - = label_tag 'order', t('.show_notified_first'), class: 'fr-label' + = hidden_field_tag 'sorted_column[id]', @procedure.notifications_column.id + = hidden_field_tag 'sorted_column[order]', 'asc', id: nil + = check_box_tag 'sorted_column[order]', 'desc', @sorted_column.sort_by_notifications? + = label_tag 'sorted_column[order]', t('.show_notified_first'), class: 'fr-label' = submit_tag t('.show_notified_first'), data: {"checkbox-target": 'submit' }, class: 'visually-hidden' diff --git a/app/components/instructeurs/column_table_header_component.rb b/app/components/instructeurs/column_table_header_component.rb index 6a1575f38..2ecb8f1df 100644 --- a/app/components/instructeurs/column_table_header_component.rb +++ b/app/components/instructeurs/column_table_header_component.rb @@ -10,10 +10,10 @@ class Instructeurs::ColumnTableHeaderComponent < ApplicationComponent private def update_sort_path(column) - column_id = column.id + id = column.id order = opposite_order_for(column) - update_sort_instructeur_procedure_path(@procedure, column_id:, order:) + update_sort_instructeur_procedure_path(@procedure, sorted_column: { id:, order: }) end def opposite_order_for(column) diff --git a/app/controllers/instructeurs/procedures_controller.rb b/app/controllers/instructeurs/procedures_controller.rb index 302bde7b1..91f685dd7 100644 --- a/app/controllers/instructeurs/procedures_controller.rb +++ b/app/controllers/instructeurs/procedures_controller.rb @@ -141,7 +141,7 @@ module Instructeurs end def update_sort - procedure_presentation.update_sort(params[:column_id], params[:order]) + procedure_presentation.update!(sorted_column_params) redirect_back(fallback_location: instructeur_procedure_url(procedure)) end @@ -411,5 +411,9 @@ module Instructeurs def cookies_export_key "exports_#{@procedure.id}_seen_at" end + + def sorted_column_params + params.permit(sorted_column: [:order, :id]) + end end end diff --git a/app/models/procedure_presentation.rb b/app/models/procedure_presentation.rb index dc711e90c..f75a04ed5 100644 --- a/app/models/procedure_presentation.rb +++ b/app/models/procedure_presentation.rb @@ -153,24 +153,6 @@ class ProcedurePresentation < ApplicationRecord end end - def update_sort(column_id, order) - h_id = JSON.parse(column_id, symbolize_names: true) - column = procedure.find_column(h_id:) - order = order.presence || opposite_order_for(column.table, column.column) - - update!( - sort: { - TABLE => column.table, - COLUMN => column.column, - ORDER => order - }, - sorted_column: { - order:, - id: h_id - } - ) - end - def snapshot slice(:filters, :sort, :displayed_fields) end diff --git a/spec/controllers/instructeurs/procedures_controller_spec.rb b/spec/controllers/instructeurs/procedures_controller_spec.rb index d24a519ed..1dcb18a35 100644 --- a/spec/controllers/instructeurs/procedures_controller_spec.rb +++ b/spec/controllers/instructeurs/procedures_controller_spec.rb @@ -886,11 +886,11 @@ describe Instructeurs::ProceduresController, type: :controller do end it 'can change order' do - column_id = procedure.find_column(label: "Nom").id - expect { get :update_sort, params: { procedure_id: procedure.id, column_id:, order: 'asc' } } - .to change { procedure_presentation.sort } - .from({ "column" => "notifications", "order" => "desc", "table" => "notifications" }) - .to({ "column" => "nom", "order" => "asc", "table" => "individual" }) + column = procedure.find_column(label: "Nom") + expect { get :update_sort, params: { procedure_id: procedure.id, sorted_column: { id: column.id, order: 'asc' } } } + .to change { procedure_presentation.sorted_column } + .from(procedure.default_sorted_column) + .to(SortedColumn.new(column:, order: 'asc')) end end diff --git a/spec/models/procedure_presentation_spec.rb b/spec/models/procedure_presentation_spec.rb index 6fbdbf9c2..a7677d4f7 100644 --- a/spec/models/procedure_presentation_spec.rb +++ b/spec/models/procedure_presentation_spec.rb @@ -971,7 +971,7 @@ describe ProcedurePresentation do describe '#update_displayed_fields' do let(:procedure_presentation) do create(:procedure_presentation, assign_to:).tap do |pp| - pp.update_sort(procedure.find_column(label: 'Demandeur').id, 'desc') + pp.update(sorted_column: SortedColumn.new(column: procedure.find_column(label: 'Demandeur'), order: 'desc')) end end @@ -992,26 +992,8 @@ describe ProcedurePresentation do { "column_id" => "self/updated_at", "procedure_id" => procedure.id } ]) - expect(procedure_presentation.sorted_column['id']).to eq("column_id" => "self/id", "procedure_id" => procedure.id) - expect(procedure_presentation.sorted_column['order']).to eq('desc') - end - end - - describe '#update_sort' do - let(:procedure_presentation) { create(:procedure_presentation, assign_to:) } - - subject do - column_id = procedure.find_column(label: 'En construction le').id - procedure_presentation.update_sort(column_id, 'asc') - end - - it 'should update sort and order' do - expect(procedure_presentation.sorted_column).to be_nil - - subject - - expect(procedure_presentation.sorted_column['id']).to eq("column_id" => "self/en_construction_at", "procedure_id" => procedure.id) - expect(procedure_presentation.sorted_column['order']).to eq('asc') + expect(procedure_presentation.sorted_column).to eq(procedure.default_sorted_column) + expect(procedure_presentation.sorted_column.order).to eq('desc') end end end