Merge pull request #10930 from colinux/fix-dropdown-list-filter-length

ETQ instructeur je peux filtrer un champ "choix simple" avec un long libellé d'option
This commit is contained in:
Colin Darie 2024-10-14 19:18:35 +00:00 committed by GitHub
commit ed6a254135
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 11 additions and 7 deletions

View file

@ -8,7 +8,7 @@ class ProcedurePresentation < ApplicationRecord
SLASH = '/' SLASH = '/'
TYPE_DE_CHAMP = 'type_de_champ' TYPE_DE_CHAMP = 'type_de_champ'
FILTERS_VALUE_MAX_LENGTH = 100 FILTERS_VALUE_MAX_LENGTH = 4048
# https://www.postgresql.org/docs/current/datatype-numeric.html # https://www.postgresql.org/docs/current/datatype-numeric.html
PG_INTEGER_MAX_VALUE = 2147483647 PG_INTEGER_MAX_VALUE = 2147483647

View file

@ -906,12 +906,12 @@ describe Instructeurs::ProceduresController, type: :controller do
subject do subject do
column = procedure.find_column(label: "Nom").id column = procedure.find_column(label: "Nom").id
post :add_filter, params: { procedure_id: procedure.id, column:, value: "n" * 110, statut: "a-suivre" } post :add_filter, params: { procedure_id: procedure.id, column:, value: "n" * 4100, statut: "a-suivre" }
end end
it 'should render the error' do it 'should render the error' do
subject subject
expect(flash.alert[0]).to include("Le filtre Nom est trop long (maximum: 100 caractères)") expect(flash.alert[0]).to include("Le filtre Nom est trop long (maximum: 4048 caractères)")
end end
end end
end end

View file

@ -42,12 +42,16 @@ describe ProcedurePresentation do
end end
context 'of filters' do context 'of filters' do
it { expect(build(:procedure_presentation, filters: { "suivis" => [{ table: "user", column: "reset_password_token", "order" => "asc" }] })).to be_invalid } it do
it { expect(build(:procedure_presentation, filters: { "suivis" => [{ table: "user", column: "email", "value" => "exceedingly long filter value" * 10 }] })).to be_invalid } expect(build(:procedure_presentation, filters: { "suivis" => [{ table: "user", column: "reset_password_token", "order" => "asc" }] })).to be_invalid
expect(build(:procedure_presentation, filters: { "suivis" => [{ table: "user", column: "email", "value" => "exceedingly long filter value" * 1000 }] })).to be_invalid
end
describe 'check_filters_max_integer' do describe 'check_filters_max_integer' do
it { expect(build(:procedure_presentation, filters: { "suivis" => [{ table: "self", column: "id", "value" => ProcedurePresentation::PG_INTEGER_MAX_VALUE.to_s }] })).to be_invalid } it do
it { expect(build(:procedure_presentation, filters: { "suivis" => [{ table: "self", column: "id", "value" => (ProcedurePresentation::PG_INTEGER_MAX_VALUE - 1).to_s }] })).to be_valid } expect(build(:procedure_presentation, filters: { "suivis" => [{ table: "self", column: "id", "value" => ProcedurePresentation::PG_INTEGER_MAX_VALUE.to_s }] })).to be_invalid
expect(build(:procedure_presentation, filters: { "suivis" => [{ table: "self", column: "id", "value" => (ProcedurePresentation::PG_INTEGER_MAX_VALUE - 1).to_s }] })).to be_valid
end
end end
end end
end end