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