From 76c9d1ada561c2f9b8b49a6bae3be86d35748a50 Mon Sep 17 00:00:00 2001 From: sebastiencarceles Date: Fri, 24 Feb 2023 10:09:19 +0100 Subject: [PATCH] add possible values --- .../prefill_commune_type_de_champ.rb | 10 ++++++++++ config/locales/en.yml | 4 ++-- config/locales/fr.yml | 3 ++- .../prefill_commune_type_de_champ_spec.rb | 15 +++++++++++++++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/app/models/types_de_champ/prefill_commune_type_de_champ.rb b/app/models/types_de_champ/prefill_commune_type_de_champ.rb index 38335498a..619169da1 100644 --- a/app/models/types_de_champ/prefill_commune_type_de_champ.rb +++ b/app/models/types_de_champ/prefill_commune_type_de_champ.rb @@ -1,4 +1,10 @@ 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) return if value.blank? || !value.is_a?(Array) return if (departement_code = value.first).blank? @@ -30,4 +36,8 @@ class TypesDeChamp::PrefillCommuneTypeDeChamp < TypesDeChamp::PrefillTypeDeChamp value: "#{commune_name} (#{postal_code})" ) end + + def departements + @departements ||= APIGeoService.departements.sort_by { _1[:code] } + end end diff --git a/config/locales/en.yml b/config/locales/en.yml index 1fcf03a7c..42e1bae25 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -129,14 +129,14 @@ en: yes_no_html: '"true" for Yes, "false" pour No' checkbox_html: '"true" to check, "false" to uncheck' pays_html: An ISO 3166-2 country code + regions_html: An INSEE region code departements_html: A department number + communes_html: An array of the department code and the INSEE commune code. drop_down_list_html: A choice among those selected when the procedure was created date_html: ISO8601 date datetime_html: ISO8601 datetime drop_down_list_other_html: Any value repetition_html: A array of hashes with possible values for each field of the repetition. - regions_html: An INSEE region code - regions_html: An INSEE region code epci_html: An array of the department code and the EPCI one. examples: title: Example diff --git a/config/locales/fr.yml b/config/locales/fr.yml index bc9805b48..7188425cc 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -120,13 +120,14 @@ fr: yes_no_html: '"true" pour Oui, "false" pour Non' checkbox_html: '"true" pour coché, "false" pour décoché' pays_html: Un code pays ISO 3166-2 + regions_html: Un code INSEE de région departements_html: Un numéro de département + communes_html: Un tableau contenant le code de département et le code INSEE de la commune. drop_down_list_html: Un choix parmi ceux sélectionnés à la création de la procédure datetime_html: Datetime au format ISO8601 date_html: Date au format ISO8601 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. - regions_html: Un code INSEE de région epci_html: Un tableau contenant le code de département et celui de l'EPCI. examples: title: Exemple diff --git a/spec/models/types_de_champ/prefill_commune_type_de_champ_spec.rb b/spec/models/types_de_champ/prefill_commune_type_de_champ_spec.rb index fb92b1a36..da0d8bcc7 100644 --- a/spec/models/types_de_champ/prefill_commune_type_de_champ_spec.rb +++ b/spec/models/types_de_champ/prefill_commune_type_de_champ_spec.rb @@ -15,6 +15,15 @@ RSpec.describe TypesDeChamp::PrefillCommuneTypeDeChamp do it { is_expected.to be_kind_of(TypesDeChamp::PrefillTypeDeChamp) } 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 subject(:transform_value_to_assignable_attributes) do described_class.build(type_de_champ).transform_value_to_assignable_attributes(value) @@ -99,4 +108,10 @@ RSpec.describe TypesDeChamp::PrefillCommuneTypeDeChamp do end end end + + private + + def departements + APIGeoService.departements.sort_by { _1[:code] } + end end