diff --git a/app/models/address_proxy.rb b/app/models/address_proxy.rb index 0a2fb3392..efc3767f4 100644 --- a/app/models/address_proxy.rb +++ b/app/models/address_proxy.rb @@ -32,10 +32,14 @@ class AddressProxy @city_name = etablissement.localite @postal_code = etablissement.code_postal @city_code = etablissement.code_insee_localite - @departement_name = APIGeoService.departement_name_by_postal_code(@postal_code) - @departement_code = APIGeoService.departement_code(@departement_name) - @region_code = APIGeoService.region_code_by_departement(@departement_code) - @region_name = APIGeoService.region_name(@region_code) + if @postal_code + @departement_name = APIGeoService.departement_name_by_postal_code(@postal_code) + @departement_code = APIGeoService.departement_code(@departement_name) + @region_code = APIGeoService.region_code_by_departement(@departement_code) + @region_name = APIGeoService.region_name(@region_code) + else # adresse without postal_code, ex: + @departement_name, @departement_code, @region_code, @region_name = nil + end end end diff --git a/spec/views/shared/dossiers/_normalized_address.html.haml_spec.rb b/spec/views/shared/dossiers/_normalized_address.html.haml_spec.rb index 1ce482ca4..9e1a722e3 100644 --- a/spec/views/shared/dossiers/_normalized_address.html.haml_spec.rb +++ b/spec/views/shared/dossiers/_normalized_address.html.haml_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true describe 'shared/dossiers/normalized_address', type: :view do - before { render 'shared/dossiers/normalized_address', address: } + let(:subject) { render 'shared/dossiers/normalized_address', address: } context 'given an champ' do let(:procedure) { create(:procedure, types_de_champ_public: [{ type: :siret }]) } @@ -10,7 +10,7 @@ describe 'shared/dossiers/normalized_address', type: :view do it 'render address' do AddressProxy::ADDRESS_PARTS.each do |address_part| - expect(rendered).to have_text(address_part) + expect(subject).to have_text(address_part) end end end @@ -20,12 +20,22 @@ describe 'shared/dossiers/normalized_address', type: :view do let(:address) { AddressProxy.new(etablissement) } it 'render address' do - expect(rendered).to have_text("6 RUE RAOUL NORDLING") - expect(rendered).to have_text("BOIS COLOMBES 92270") - expect(rendered).to have_text("92009") - expect(rendered).to have_text("92270") - expect(rendered).to have_text("Hauts-de-Seine – 92") - expect(rendered).to have_text("Île-de-France – 11") + expect(subject).to have_text("6 RUE RAOUL NORDLING") + expect(subject).to have_text("BOIS COLOMBES 92270") + expect(subject).to have_text("92009") + expect(subject).to have_text("92270") + expect(subject).to have_text("Hauts-de-Seine – 92") + expect(subject).to have_text("Île-de-France – 11") + end + end + + context 'given a partial etablissement address' do + let(:etablissement) { create(:etablissement) } + before { allow(etablissement).to receive(:code_postal).and_return(nil) } + let(:address) { AddressProxy.new(etablissement) } + + it 'render address' do + expect { subject }.not_to raise_error end end end