Browse Source

Handle non-Excon errors, in case of unexpected api behaviour

pull/2634/head
Rachael Booth 2 years ago
parent
commit
f5a04cf014
  1. 4
      app/services/postcode_service.rb
  2. 16
      spec/services/postcode_service_spec.rb

4
app/services/postcode_service.rb

@ -14,7 +14,9 @@ class PostcodeService
location_admin_district: parsed_response["result"]["admin_district"], location_admin_district: parsed_response["result"]["admin_district"],
} }
rescue Excon::Error => e rescue Excon::Error => e
Rails.logger.warn("An error occurred with the postcode lookup request: #{e} #{e.response.body}") Rails.logger.warn("Postcode lookup request was not successful: #{e} #{e.response.body}")
rescue StandardError => e
Rails.logger.error("Unexpected error with postcode lookup request: #{e}")
end end
result result
end end

16
spec/services/postcode_service_spec.rb

@ -60,5 +60,21 @@ describe PostcodeService do
service.lookup("A00 0AA") service.lookup("A00 0AA")
end end
end end
context "when the request returns a success response that causes later errors" do
before do
Excon.stub({}, { body: '{"result": { "admin_district": "District" } }', status: 200 })
end
it "returns nil" do
result = service.lookup("A00 0AA")
expect(result).to be_nil
end
it "logs the error at error level" do
expect(Rails.logger).to receive(:error).with(match "Unexpected error with postcode lookup request")
service.lookup("A00 0AA")
end
end
end end
end end

Loading…
Cancel
Save