Browse Source

feat: test address client

pull/2278/head
natdeanlewissoftwire 2 years ago
parent
commit
263a52f6a9
  1. 1
      app/services/address_client.rb
  2. 68
      spec/services/address_client_spec.rb

1
app/services/address_client.rb

@ -39,7 +39,6 @@ private
params = { params = {
query: address, query: address,
key: ENV["OS_DATA_KEY"], key: ENV["OS_DATA_KEY"],
matchprecision: 3,
maxresults: 10, maxresults: 10,
} }
uri.query = URI.encode_www_form(params) uri.query = URI.encode_www_form(params)

68
spec/services/address_client_spec.rb

@ -0,0 +1,68 @@
require "rails_helper"
describe AddressClient do
let(:client) { described_class.new("123") }
let(:valid_response) do
{ results: [{ DPA: { UPRN: "12345" } }] }.to_json
end
def stub_api_request(body:, status: 200)
stub_request(:get, "https://api.os.uk/search/places/v1/find?key=OS_DATA_KEY&maxresults=10&query=123")
.to_return(status:, body:, headers: {})
end
describe "call" do
context "when json parse error" do
before do
stub_api_request(body: "{", status: 200)
client.call
end
it "returns error" do
expect(client.error).to eq("Address is not recognised. Check the address, or enter the UPRN")
end
end
context "when http error" do
before do
stub_api_request(body: valid_response, status: 500)
client.call
end
it "returns error" do
expect(client.error).to eq("Address is not recognised. Check the address, or enter the UPRN")
end
end
context "when results empty" do
before do
stub_api_request(body: {}.to_json)
client.call
end
it "returns error" do
expect(client.error).to eq("Address is not recognised. Check the address, or enter the UPRN")
end
end
context "with results" do
before do
stub_api_request(body: valid_response)
client.call
end
it "returns result" do
expect(client.result).to eq([{ "UPRN" => "12345" }])
end
it "returns no error" do
expect(client.error).to be_nil
end
end
end
end
Loading…
Cancel
Save