Add champ address model

This commit is contained in:
Paul Chavard 2021-02-17 13:54:24 +01:00
parent 228a83f8a5
commit 75392272fb
2 changed files with 63 additions and 0 deletions

View file

@ -18,4 +18,47 @@
# type_de_champ_id :integer
#
class Champs::AddressChamp < Champs::TextChamp
def full_address?
data.present?
end
def address
full_address? ? data : nil
end
def address_label
full_address? ? data['label'] : value
end
def search_terms
if full_address?
[data['label'], data['departement'], data['region'], data['city']]
else
[address_label]
end
end
def to_s
address_label
end
def for_tag
address_label
end
def for_export
value.present? ? address_label : nil
end
def for_api
address_label
end
def fetch_external_data?
true
end
def fetch_external_data
APIAddress::AddressAdapter.new(external_id).to_params
end
end

View file

@ -0,0 +1,20 @@
describe Champs::AddressChamp do
let(:champ) { Champs::AddressChamp.new(value: value, data: data, type_de_champ: create(:type_de_champ_address)) }
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) { 'Paris' }
let(:data) { { label: 'Paris' } }
it { expect(champ.address_label).to eq('Paris') }
it { expect(champ.full_address?).to be_truthy }
end
end