diff --git a/app/graphql/types/address_type.rb b/app/graphql/types/address_type.rb index 60f3370f3..18f26f878 100644 --- a/app/graphql/types/address_type.rb +++ b/app/graphql/types/address_type.rb @@ -25,5 +25,29 @@ module Types field :region_code, String, "n° de region", null: true field :geometry, Types::GeoJSON, "coordonnées géographique", null: true + + def city_name + if object['department_code'].present? && object['city_code'].present? + APIGeoService.commune_name(object.fetch('department_code'), object.fetch('city_code')) + else + object['city_name'] + end + end + + def department_name + if object['department_code'].present? + APIGeoService.departement_name(object.fetch('department_code')) + else + object['department_name'] + end + end + + def region_name + if object['region_code'].present? + APIGeoService.region_name(object.fetch('region_code')) + else + object['region_name'] + end + end end end diff --git a/app/graphql/types/personne_morale_type.rb b/app/graphql/types/personne_morale_type.rb index e18af503c..097ce7a9e 100644 --- a/app/graphql/types/personne_morale_type.rb +++ b/app/graphql/types/personne_morale_type.rb @@ -131,7 +131,7 @@ module Types postal_code: object.code_postal.presence || '', city_name: object.localite.presence || '', city_code: object.code_insee_localite.presence || '' - } + }.with_indifferent_access end def entreprise diff --git a/app/models/champs/rna_champ.rb b/app/models/champs/rna_champ.rb index c4b507ec5..e6bd55ec4 100644 --- a/app/models/champs/rna_champ.rb +++ b/app/models/champs/rna_champ.rb @@ -41,6 +41,6 @@ class Champs::RNAChamp < Champ postal_code: address["code_postal"], city_name: address["commune"], city_code: address["code_insee"] - } + }.with_indifferent_access end end diff --git a/app/models/champs/rnf_champ.rb b/app/models/champs/rnf_champ.rb index 7b5106fb8..823c0b92c 100644 --- a/app/models/champs/rnf_champ.rb +++ b/app/models/champs/rnf_champ.rb @@ -106,7 +106,7 @@ class Champs::RNFChamp < Champ department_code: address["departmentCode"], region_name: address["regionName"], region_code: address["regionCode"] - } + }.with_indifferent_access end end diff --git a/spec/graphql/dossier_spec.rb b/spec/graphql/dossier_spec.rb index 3e1baaa20..db98e968c 100644 --- a/spec/graphql/dossier_spec.rb +++ b/spec/graphql/dossier_spec.rb @@ -83,10 +83,17 @@ RSpec.describe Types::DossierType, type: :graphql do expect(data[:dossier][:champs][2][:etablissement][:siret]).to eq dossier.champs_public[2].etablissement.siret expect(data[:dossier][:champs][0][:id]).to eq(data[:dossier][:revision][:champDescriptors][0][:id]) + expect(data[:dossier][:champs][1][:address][:cityName]).to eq('Paris 19e Arrondissement') + expect(data[:dossier][:champs][1][:address][:departmentName]).to eq('Paris') + expect(data[:dossier][:champs][1][:address][:regionName]).to eq('Île-de-France') + expect(data[:dossier][:champs][3][:rna][:id]).to eq('W173847273') expect(data[:dossier][:champs][3][:rna][:title]).to eq('CROIX ROUGE') expect(data[:dossier][:champs][3][:rna][:address][:label]).to eq('12 RUE xyz 75512 Paris 14e') expect(data[:dossier][:champs][3][:rna][:address][:streetNumber]).to eq('12') + expect(data[:dossier][:champs][3][:rna][:address][:cityName]).to eq('Paris 14e') + expect(data[:dossier][:champs][3][:rna][:address][:departmentName]).to eq(nil) + expect(data[:dossier][:champs][3][:rna][:address][:regionName]).to eq(nil) end context 'when etablissement is in degraded mode' do @@ -452,6 +459,8 @@ RSpec.describe Types::DossierType, type: :graphql do cityCode streetName streetNumber + departmentName + regionName } fragment RNAChampFragment on RNAChamp {