fix(filters): drop down list filters can have much longer values.

Notre infra supporte des urls d'au moins 8000 caractères, probablement
plus encore, donc on est large.
This commit is contained in:
Colin Darie 2024-10-14 15:36:18 +02:00
parent bac54ba214
commit 1c32a30b80
No known key found for this signature in database
GPG key ID: 4FB865FDBCA4BCC4
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