Browse Source

feat: update data presenter and test

pull/2278/head
natdeanlewissoftwire 2 years ago
parent
commit
eb988cd1ee
  1. 22
      app/services/address_data_presenter.rb
  2. 72
      spec/services/address_data_presenter_spec.rb

22
app/services/address_data_presenter.rb

@ -12,15 +12,31 @@ class AddressDataPresenter
end end
def address_line1 def address_line1
[data["SUB_BUILDING_NAME"], data["BUILDING_NUMBER"], data["BUILDING_NAME"], data["THOROUGHFARE_NAME"]].compact.join(", ") data.values_at(
"PO_BOX_NUMBER",
"ORGANISATION_NAME",
"DEPARTMENT_NAME",
"SUB_BUILDING_NAME",
"BUILDING_NAME",
"BUILDING_NUMBER",
"DEPENDENT_THOROUGHFARE_NAME",
"THOROUGHFARE_NAME",
).compact
.join(", ")
.titleize
end end
def address_line2 def address_line2
data["DEPENDENT_LOCALITY"] data.values_at(
"DOUBLE_DEPENDENT_LOCALITY", "DEPENDENT_LOCALITY"
).compact
.join(", ")
.titleize
.presence
end end
def town_or_city def town_or_city
data["POST_TOWN"] data["POST_TOWN"].titleize
end end
def postcode def postcode

72
spec/services/address_data_presenter_spec.rb

@ -0,0 +1,72 @@
require "rails_helper"
describe AddressDataPresenter do
let(:data) do
JSON.parse(
'{
"UPRN": "UPRN",
"UDPRN": "UDPRN",
"ADDRESS": "full address",
"SUB_BUILDING_NAME": "0",
"BUILDING_NAME": "building name",
"THOROUGHFARE_NAME": "thoroughfare",
"POST_TOWN": "posttown",
"POSTCODE": "postcode",
"STATUS": "APPROVED",
"DOUBLE_DEPENDENT_LOCALITY": "double dependent locality",
"DEPENDENT_LOCALITY": "dependent locality",
"CLASSIFICATION_CODE": "classification code",
"LOCAL_CUSTODIAN_CODE_DESCRIPTION": "LONDON BOROUGH OF HARINGEY",
"BLPU_STATE_CODE": "2",
"BLPU_STATE_CODE_DESCRIPTION": "In use",
"LAST_UPDATE_DATE": "31/07/2020",
"ENTRY_DATE": "30/01/2015",
"BLPU_STATE_DATE": "30/01/2015",
"LANGUAGE": "EN",
"MATCH_DESCRIPTION": "EXACT"
}',
)
end
let(:presenter) { described_class.new(data) }
describe "#postcode" do
it "returns postcode" do
expect(presenter.postcode).to eq("postcode")
end
end
describe "#address_line1" do
it "returns address_line1" do
expect(presenter.address_line1).to eq("0, Building Name, Thoroughfare")
end
end
describe "#address_line2" do
it "returns address_line2" do
expect(presenter.address_line2).to eq("Double Dependent Locality, Dependent Locality")
end
end
describe "#town_or_city" do
it "returns town_or_city" do
expect(presenter.town_or_city).to eq("Posttown")
end
end
describe "#address" do
it "returns address" do
expect(presenter.address).to eq("full address")
end
end
context "when address_line2 fields are missing" do
let(:data) { {} }
describe "#address_line2" do
it "returns nil" do
expect(presenter.address_line2).to be_nil
end
end
end
end
Loading…
Cancel
Save