diff --git a/app/services/postcode_service.rb b/app/services/postcode_service.rb index cf86b7e01..8cfe9c43c 100644 --- a/app/services/postcode_service.rb +++ b/app/services/postcode_service.rb @@ -14,7 +14,9 @@ class PostcodeService location_admin_district: parsed_response["result"]["admin_district"], } 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 result end diff --git a/spec/services/postcode_service_spec.rb b/spec/services/postcode_service_spec.rb index f258f696c..abc61129f 100644 --- a/spec/services/postcode_service_spec.rb +++ b/spec/services/postcode_service_spec.rb @@ -60,5 +60,21 @@ describe PostcodeService do service.lookup("A00 0AA") 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