diff --git a/app/services/uprn_client.rb b/app/services/uprn_client.rb index f170ba3a0..f847c7da5 100644 --- a/app/services/uprn_client.rb +++ b/app/services/uprn_client.rb @@ -24,7 +24,9 @@ class UprnClient parsed_response = JSON.parse(response.body) parsed_response.dig("results", 0, "DPA") || parsed_response.dig("results", 0, "LPI") else - Rails.logger.error("Response code: #{response.code}") + @error = "UPRN client failed to return a valid result, try again later." + Sentry.capture_message("UPRN client failed to return a valid result with error code: #{response.code}.") + Rails.logger.error("UPRN client failed to return a valid result with error code: #{response.code}.") Rails.logger.error("Response body: #{response.body}") nil end diff --git a/spec/services/uprn_client_spec.rb b/spec/services/uprn_client_spec.rb index b10ab7376..8d5c45ed9 100644 --- a/spec/services/uprn_client_spec.rb +++ b/spec/services/uprn_client_spec.rb @@ -86,5 +86,33 @@ describe UprnClient do expect(client.error).to be_nil end end + + describe "result" do + context "when response is successful" do + before do + stub_api_request(body: valid_response) + + client.call + end + + it "returns parsed result" do + expect(client.result).to eq({ "postcode" => "12345" }) + expect(client.send(:response).code.to_i).to eq(200) + end + end + + context "when response is not successful" do + before do + stub_api_request(body: valid_response, status: 500) + + client.call + end + + it "returns nil" do + expect(client.result).to be_nil + expect(client.error).to eq("UPRN client failed to return a valid result, try again later.") + end + end + end end end