add possible values

This commit is contained in:
sebastiencarceles 2023-02-24 10:09:19 +01:00
parent 40b7ea3af2
commit 76c9d1ada5
4 changed files with 29 additions and 3 deletions

View file

@ -1,4 +1,10 @@
class TypesDeChamp::PrefillCommuneTypeDeChamp < TypesDeChamp::PrefillTypeDeChamp class TypesDeChamp::PrefillCommuneTypeDeChamp < TypesDeChamp::PrefillTypeDeChamp
def possible_values
departements.map do |departement|
"#{departement[:code]} (#{departement[:name]}) : https://geo.api.gouv.fr/communes?codeDepartement=#{departement[:code]}"
end
end
def transform_value_to_assignable_attributes(value) def transform_value_to_assignable_attributes(value)
return if value.blank? || !value.is_a?(Array) return if value.blank? || !value.is_a?(Array)
return if (departement_code = value.first).blank? return if (departement_code = value.first).blank?
@ -30,4 +36,8 @@ class TypesDeChamp::PrefillCommuneTypeDeChamp < TypesDeChamp::PrefillTypeDeChamp
value: "#{commune_name} (#{postal_code})" value: "#{commune_name} (#{postal_code})"
) )
end end
def departements
@departements ||= APIGeoService.departements.sort_by { _1[:code] }
end
end end

View file

@ -129,14 +129,14 @@ en:
yes_no_html: '"true" for Yes, "false" pour No' yes_no_html: '"true" for Yes, "false" pour No'
checkbox_html: '"true" to check, "false" to uncheck' checkbox_html: '"true" to check, "false" to uncheck'
pays_html: An <a href="https://en.wikipedia.org/wiki/ISO_3166-2" target="_blank" rel="noopener noreferrer">ISO 3166-2 country code</a> pays_html: An <a href="https://en.wikipedia.org/wiki/ISO_3166-2" target="_blank" rel="noopener noreferrer">ISO 3166-2 country code</a>
regions_html: An <a href="https://fr.wikipedia.org/wiki/R%C3%A9gion_fran%C3%A7aise" target="_blank" rel="noopener noreferrer">INSEE region code</a>
departements_html: A <a href="https://fr.wikipedia.org/wiki/Num%C3%A9rotation_des_d%C3%A9partements_fran%C3%A7ais" target="_blank">department number</a> departements_html: A <a href="https://fr.wikipedia.org/wiki/Num%C3%A9rotation_des_d%C3%A9partements_fran%C3%A7ais" target="_blank">department number</a>
communes_html: An array of the department code and the <a href="https://geo.api.gouv.fr/communes" target="_blank" rel="noopener noreferrer">INSEE commune code</a>.
drop_down_list_html: A choice among those selected when the procedure was created drop_down_list_html: A choice among those selected when the procedure was created
date_html: ISO8601 date date_html: ISO8601 date
datetime_html: ISO8601 datetime datetime_html: ISO8601 datetime
drop_down_list_other_html: Any value drop_down_list_other_html: Any value
repetition_html: A array of hashes with possible values for each field of the repetition. repetition_html: A array of hashes with possible values for each field of the repetition.
regions_html: An <a href="https://fr.wikipedia.org/wiki/R%C3%A9gion_fran%C3%A7aise" target="_blank" rel="noopener noreferrer">INSEE region code</a>
regions_html: An <a href="https://fr.wikipedia.org/wiki/R%C3%A9gion_fran%C3%A7aise" target="_blank" rel="noopener noreferrer">INSEE region code</a>
epci_html: An array of the department code and the <a href="https://geo.api.gouv.fr/epcis" target="_blank" rel="noopener noreferrer">EPCI one</a>. epci_html: An array of the department code and the <a href="https://geo.api.gouv.fr/epcis" target="_blank" rel="noopener noreferrer">EPCI one</a>.
examples: examples:
title: Example title: Example

View file

@ -120,13 +120,14 @@ fr:
yes_no_html: '"true" pour Oui, "false" pour Non' yes_no_html: '"true" pour Oui, "false" pour Non'
checkbox_html: '"true" pour coché, "false" pour décoché' checkbox_html: '"true" pour coché, "false" pour décoché'
pays_html: Un <a href="https://en.wikipedia.org/wiki/ISO_3166-2" target="_blank" rel="noopener noreferrer">code pays ISO 3166-2</a> pays_html: Un <a href="https://en.wikipedia.org/wiki/ISO_3166-2" target="_blank" rel="noopener noreferrer">code pays ISO 3166-2</a>
regions_html: Un <a href="https://fr.wikipedia.org/wiki/R%C3%A9gion_fran%C3%A7aise" target="_blank" rel="noopener noreferrer">code INSEE de région</a>
departements_html: Un <a href="https://fr.wikipedia.org/wiki/Num%C3%A9rotation_des_d%C3%A9partements_fran%C3%A7ais" target="_blank">numéro de département</a> departements_html: Un <a href="https://fr.wikipedia.org/wiki/Num%C3%A9rotation_des_d%C3%A9partements_fran%C3%A7ais" target="_blank">numéro de département</a>
communes_html: Un tableau contenant le code de département et <a href="https://geo.api.gouv.fr/communes" target="_blank" rel="noopener noreferrer">le code INSEE de la commune</a>.
drop_down_list_html: Un choix parmi ceux sélectionnés à la création de la procédure drop_down_list_html: Un choix parmi ceux sélectionnés à la création de la procédure
datetime_html: Datetime au format ISO8601 datetime_html: Datetime au format ISO8601
date_html: Date au format ISO8601 date_html: Date au format ISO8601
drop_down_list_other_html: Toute valeur drop_down_list_other_html: Toute valeur
repetition_html: Un tableau de dictionnaires avec les valeurs possibles pour chaque champ de la répétition. repetition_html: Un tableau de dictionnaires avec les valeurs possibles pour chaque champ de la répétition.
regions_html: Un <a href="https://fr.wikipedia.org/wiki/R%C3%A9gion_fran%C3%A7aise" target="_blank" rel="noopener noreferrer">code INSEE de région</a>
epci_html: Un tableau contenant le code de département et <a href="https://geo.api.gouv.fr/epcis" target="_blank" rel="noopener noreferrer">celui de l'EPCI</a>. epci_html: Un tableau contenant le code de département et <a href="https://geo.api.gouv.fr/epcis" target="_blank" rel="noopener noreferrer">celui de l'EPCI</a>.
examples: examples:
title: Exemple title: Exemple

View file

@ -15,6 +15,15 @@ RSpec.describe TypesDeChamp::PrefillCommuneTypeDeChamp do
it { is_expected.to be_kind_of(TypesDeChamp::PrefillTypeDeChamp) } it { is_expected.to be_kind_of(TypesDeChamp::PrefillTypeDeChamp) }
end end
describe '#possible_values', vcr: { cassette_name: 'api_geo_departements' } do
let(:expected_values) do
departements.map { |departement| "#{departement[:code]} (#{departement[:name]}) : https://geo.api.gouv.fr/communes?codeDepartement=#{departement[:code]}" }
end
subject(:possible_values) { described_class.new(type_de_champ).possible_values }
it { expect(possible_values).to match(expected_values) }
end
describe '#transform_value_to_assignable_attributes' do describe '#transform_value_to_assignable_attributes' do
subject(:transform_value_to_assignable_attributes) do subject(:transform_value_to_assignable_attributes) do
described_class.build(type_de_champ).transform_value_to_assignable_attributes(value) described_class.build(type_de_champ).transform_value_to_assignable_attributes(value)
@ -99,4 +108,10 @@ RSpec.describe TypesDeChamp::PrefillCommuneTypeDeChamp do
end end
end end
end end
private
def departements
APIGeoService.departements.sort_by { _1[:code] }
end
end end