Add champ address model
This commit is contained in:
parent
228a83f8a5
commit
75392272fb
2 changed files with 63 additions and 0 deletions
|
@ -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
|
||||
|
|
20
spec/models/champs/address_champ_spec.rb
Normal file
20
spec/models/champs/address_champ_spec.rb
Normal 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
|
Loading…
Add table
Reference in a new issue