feat(conditional): can condition on region champ value

This commit is contained in:
Eric Leroy-Terquem 2023-10-17 11:14:58 +02:00
parent 870efba29b
commit 90524cb541
2 changed files with 20 additions and 3 deletions

View file

@ -6,7 +6,8 @@ class Logic::ChampValue < Logic::Term
:decimal_number, :decimal_number,
:drop_down_list, :drop_down_list,
:multiple_drop_down_list, :multiple_drop_down_list,
:departements :departements,
:regions
) )
CHAMP_VALUE_TYPE = { CHAMP_VALUE_TYPE = {
@ -61,7 +62,7 @@ class Logic::ChampValue < Logic::Term
CHAMP_VALUE_TYPE.fetch(:boolean) CHAMP_VALUE_TYPE.fetch(:boolean)
when MANAGED_TYPE_DE_CHAMP.fetch(:integer_number), MANAGED_TYPE_DE_CHAMP.fetch(:decimal_number) when MANAGED_TYPE_DE_CHAMP.fetch(:integer_number), MANAGED_TYPE_DE_CHAMP.fetch(:decimal_number)
CHAMP_VALUE_TYPE.fetch(:number) CHAMP_VALUE_TYPE.fetch(:number)
when MANAGED_TYPE_DE_CHAMP.fetch(:drop_down_list), MANAGED_TYPE_DE_CHAMP.fetch(:departements) when MANAGED_TYPE_DE_CHAMP.fetch(:drop_down_list),MANAGED_TYPE_DE_CHAMP.fetch(:departements), MANAGED_TYPE_DE_CHAMP.fetch(:regions)
CHAMP_VALUE_TYPE.fetch(:enum) CHAMP_VALUE_TYPE.fetch(:enum)
when MANAGED_TYPE_DE_CHAMP.fetch(:multiple_drop_down_list) when MANAGED_TYPE_DE_CHAMP.fetch(:multiple_drop_down_list)
CHAMP_VALUE_TYPE.fetch(:enums) CHAMP_VALUE_TYPE.fetch(:enums)
@ -95,8 +96,12 @@ class Logic::ChampValue < Logic::Term
def options(type_de_champs) def options(type_de_champs)
tdc = type_de_champ(type_de_champs) tdc = type_de_champ(type_de_champs)
if tdc.departement?
case tdc.type_champ
when MANAGED_TYPE_DE_CHAMP.fetch(:departements)
APIGeoService.departements.map { ["#{_1[:code]} #{_1[:name]}", _1[:code]] } APIGeoService.departements.map { ["#{_1[:code]} #{_1[:name]}", _1[:code]] }
when MANAGED_TYPE_DE_CHAMP.fetch(:regions)
APIGeoService.regions.map { ["#{_1[:code]} #{_1[:name]}", _1[:code]] }
else else
opts = tdc.drop_down_list_enabled_non_empty_options.map { |option| [option, option] } opts = tdc.drop_down_list_enabled_non_empty_options.map { |option| [option, option] }
if tdc.drop_down_other? if tdc.drop_down_other?

View file

@ -92,6 +92,18 @@ describe TypesDeChampEditor::ConditionsComponent, type: :component do
expect(page).to have_select('type_de_champ[condition_form][rows][][value]', options: (['Sélectionner'] + departement_options)) expect(page).to have_select('type_de_champ[condition_form][rows][][value]', options: (['Sélectionner'] + departement_options))
end end
end end
context 'regions' do
let(:regions) { create(:type_de_champ_regions) }
let(:upper_tdcs) { [regions] }
let(:condition) { empty_operator(champ_value(regions.stable_id), constant(true)) }
let(:region_options) { APIGeoService.regions.map { "#{_1[:code]} #{_1[:name]}" } }
it do
expect(page).to have_select('type_de_champ[condition_form][rows][][operator_name]', with_options: ['Est'])
expect(page).to have_select('type_de_champ[condition_form][rows][][value]', options: (['Sélectionner'] + region_options))
end
end
end end
context 'and 2 conditions' do context 'and 2 conditions' do