Browse Source

Update presenter

pull/2479/head
Kat 2 years ago
parent
commit
dc1b65ca44
  1. 21
      app/services/uprn_data_presenter.rb
  2. 4
      spec/services/uprn_client_spec.rb
  3. 47
      spec/services/uprn_data_presenter_spec.rb

21
app/services/uprn_data_presenter.rb

@ -8,10 +8,22 @@ class UprnDataPresenter
end
def postcode
data["POSTCODE"]
result_from_lpi? ? data["POSTCODE_LOCATOR"] : data["POSTCODE"]
end
def address_line1
if result_from_lpi?
data.values_at(
"ORGANISATION",
"SAO_TEXT",
"PAO_START_NUMBER",
"STREET_DESCRIPTION",
"LOCALITY_NAME",
"ADMINISTRATIVE_AREA",
).compact
.join(", ")
.titleize
else
data.values_at(
"PO_BOX_NUMBER",
"ORGANISATION_NAME",
@ -25,6 +37,7 @@ class UprnDataPresenter
.join(", ")
.titleize
end
end
def address_line2
data.values_at(
@ -36,6 +49,10 @@ class UprnDataPresenter
end
def town_or_city
data["POST_TOWN"].titleize
result_from_lpi? ? data["TOWN_NAME"].titleize : data["POST_TOWN"].titleize
end
def result_from_lpi?
data["LPI_KEY"].present?
end
end

4
spec/services/uprn_client_spec.rb

@ -40,7 +40,7 @@ describe UprnClient do
context "when DPA results empty" do
context "and LPI result is present" do
let(:valid_lpi_response) do
{ results: [{ LPI: { postcode: "LPI postcode" } }] }.to_json
{ results: [{ LPI: { postcode_locator: "LPI postcode", LPI_KEY: "123" } }] }.to_json
end
before do
@ -50,7 +50,7 @@ describe UprnClient do
end
it "returns result" do
expect(client.result).to eq({ "postcode" => "LPI postcode" })
expect(client.result).to eq({ "postcode_locator" => "LPI postcode", "LPI_KEY" => "123" })
end
it "returns no error" do

47
spec/services/uprn_data_presenter_spec.rb

@ -1,6 +1,9 @@
require "rails_helper"
describe UprnDataPresenter do
let(:presenter) { described_class.new(data) }
describe "DPA data" do
let(:data) do
JSON.parse(
'{
@ -28,8 +31,6 @@ describe UprnDataPresenter do
)
end
let(:presenter) { described_class.new(data) }
describe "#postcode" do
it "returns postcode" do
expect(presenter.postcode).to eq("postcode")
@ -63,4 +64,46 @@ describe UprnDataPresenter do
end
end
end
end
describe "LPI data" do
let(:data) do
JSON.parse(
'{
"UPRN": "UPRN",
"ADDRESS": "flat 1, 22, street name, posttown, postcode",
"SAO_TEXT": "flat 1",
"PAO_START_NUMBER": "22",
"STREET_DESCRIPTION": "street name",
"TOWN_NAME": "posttown",
"POSTCODE_LOCATOR": "postcode",
"LPI_KEY": "LPI_KEY"
}',
)
end
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("Flat 1, 22, Street Name")
end
end
describe "#address_line2" do
it "returns address_line2" do
expect(presenter.address_line2).to be_nil
end
end
describe "#town_or_city" do
it "returns town_or_city" do
expect(presenter.town_or_city).to eq("Posttown")
end
end
end
end

Loading…
Cancel
Save