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