diff --git a/app/models/case_log.rb b/app/models/case_log.rb index bda9ec590..b9bbdc2ad 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -388,6 +388,7 @@ private begin Timeout.timeout(5) { postcode_lookup = PIO.lookup(postcode) } rescue Timeout::Error + Rails.logger.warn("Postcodes.io lookup timed out") end if postcode_lookup && postcode_lookup.info.present? postcode_lookup.codes["admin_district"] diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index 6d731d42a..3b9d2e4a2 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -412,6 +412,17 @@ RSpec.describe CaseLog do .to raise_error(ActiveRecord::RecordInvalid, /#{I18n.t("validations.postcode")}/) end + context "when the local authority lookup times out" do + before do + allow(Timeout).to receive(:timeout).and_raise(Timeout::Error) + end + + it "logs a warning" do + expect(Rails.logger).to receive(:warn).with("Postcodes.io lookup timed out") + address_case_log.update!({ postcode_known: 1, property_postcode: "M1 1AD" }) + end + end + it "correctly resets all fields if property postcode not known" do address_case_log.update!({ postcode_known: 0 })