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:
commit
ed6a254135
3 changed files with 11 additions and 7 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue