84 lines
2.5 KiB
Ruby
84 lines
2.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe Champs::AddressChamp do
|
|
let(:champ) do
|
|
described_class.new.tap do |champ|
|
|
champ.value = value
|
|
champ.data = data
|
|
champ.validate
|
|
end
|
|
end
|
|
let(:value) { '' }
|
|
let(:data) { nil }
|
|
|
|
context "with value but no data" do
|
|
let(:value) { 'Paris' }
|
|
|
|
it { expect(champ.address_label).to eq('Paris') }
|
|
it { expect(champ.full_address?).to be_falsey }
|
|
end
|
|
|
|
context "with value and data" do
|
|
let(:value) { '33 Rue Rébeval 75019 Paris' }
|
|
let(:data) do
|
|
{
|
|
"type" => "housenumber",
|
|
"label" => "33 Rue Rébeval 75019 Paris",
|
|
"city_code" => "75119",
|
|
"city_name" => "Paris",
|
|
"postal_code" => "75019",
|
|
"region_code" => "11",
|
|
"region_name" => "Île-de-France",
|
|
"street_name" => "Rue Rébeval",
|
|
"street_number" => "33",
|
|
"street_address" => "33 Rue Rébeval",
|
|
"department_code" => "75",
|
|
"department_name" => "Paris"
|
|
}
|
|
end
|
|
|
|
it { expect(champ.address_label).to eq('33 Rue Rébeval 75019 Paris') }
|
|
it { expect(champ.full_address?).to be_truthy }
|
|
it { expect(champ.commune).to eq({ name: 'Paris 19e Arrondissement', code: '75119', postal_code: '75019' }) }
|
|
it { expect(champ.commune_name).to eq('Paris 19e Arrondissement (75019)') }
|
|
end
|
|
|
|
context "with wrong code INSEE" do
|
|
let(:value) { 'Rue du Bois Charles 27700 Les Trois Lacs' }
|
|
let(:data) do
|
|
{
|
|
"type" => "housenumber",
|
|
"label" => "Rue du Bois Charles 27700 Les Trois Lacs",
|
|
"city_code" => "27058",
|
|
"city_name" => "Les Trois Lacs",
|
|
"postal_code" => "27700",
|
|
"department_code" => "27",
|
|
"department_name" => "Eure"
|
|
}
|
|
end
|
|
|
|
it { expect(champ.address_label).to eq('Rue du Bois Charles 27700 Les Trois Lacs') }
|
|
it { expect(champ.full_address?).to be_truthy }
|
|
it { expect(champ.commune).to eq({ name: 'Les Trois Lacs', code: '27676', postal_code: '27700' }) }
|
|
end
|
|
|
|
context "with empty code postal" do
|
|
let(:value) { '15 rue Baudelaire Nouméa' }
|
|
let(:data) do
|
|
{
|
|
"type" => "housenumber",
|
|
"label" => "15 Rue BAUDELAIRE Nouméa",
|
|
"city_code" => "98818",
|
|
"city_name" => "Nouméa",
|
|
"postal_code" => "",
|
|
"department_code" => "988",
|
|
"department_name" => "Nouvelle-Calédonie"
|
|
}
|
|
end
|
|
|
|
it do
|
|
expect(champ.commune).to eq({ name: 'Nouméa', code: '98818', postal_code: '' })
|
|
expect(champ.commune_name).to eq("Nouméa")
|
|
end
|
|
end
|
|
end
|