2 changed files with 68 additions and 1 deletions
@ -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…
Reference in new issue