Jack S
2 years ago
2 changed files with 107 additions and 0 deletions
@ -0,0 +1,41 @@ |
|||||||
|
require "net/http" |
||||||
|
|
||||||
|
class UprnDataPresenter |
||||||
|
attr_reader :data |
||||||
|
|
||||||
|
def initialize(data) |
||||||
|
@data = data |
||||||
|
end |
||||||
|
|
||||||
|
def postcode |
||||||
|
data["POSTCODE"] |
||||||
|
end |
||||||
|
|
||||||
|
def address_line1 |
||||||
|
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 |
||||||
|
|
||||||
|
def address_line2 |
||||||
|
data.values_at( |
||||||
|
"DOUBLE_DEPENDENT_LOCALITY", "DEPENDENT_LOCALITY" |
||||||
|
).compact |
||||||
|
.join(", ") |
||||||
|
.titleize |
||||||
|
.presence |
||||||
|
end |
||||||
|
|
||||||
|
def town_or_city |
||||||
|
data["POST_TOWN"].titleize |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,66 @@ |
|||||||
|
require "rails_helper" |
||||||
|
|
||||||
|
describe UprnDataPresenter 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 |
||||||
|
|
||||||
|
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…
Reference in new issue