From e4396bab2d891cb8f9027dec60c6526281af8487 Mon Sep 17 00:00:00 2001 From: JG Date: Fri, 22 Jul 2022 11:07:41 +0100 Subject: [PATCH] fixed tests --- app/models/case_log.rb | 3 ++- app/models/location.rb | 11 +++++---- app/services/postcode_service.rb | 24 ++++--------------- .../imports/case_logs_import_service_spec.rb | 2 +- 4 files changed, 15 insertions(+), 25 deletions(-) diff --git a/app/models/case_log.rb b/app/models/case_log.rb index 83e7b6550..c8ab60ed0 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -603,7 +603,8 @@ private end def get_inferred_la(postcode) - PIO.infer_la(postcode) + result = PIO.lookup(postcode) + result[:location_code] if result end def get_has_benefits diff --git a/app/models/location.rb b/app/models/location.rb index 5edf0caa9..155126763 100644 --- a/app/models/location.rb +++ b/app/models/location.rb @@ -3,7 +3,7 @@ class Location < ApplicationRecord validates :units, :type_of_unit, :mobility_type, presence: true belongs_to :scheme - before_save :infer_la!, if: :postcode_changed? + before_save :lookup_postcode!, if: :postcode_changed? attr_accessor :add_another_location @@ -48,8 +48,11 @@ private end end - def infer_la! - self.location_code = PIO.infer_la(postcode) - self.location_admin_district = PIO.infer_admin_district(postcode) + def lookup_postcode! + result = PIO.lookup(postcode) + if result + self.location_code = result[:location_code] + self.location_admin_district = result[:location_admin_district] + end end end diff --git a/app/services/postcode_service.rb b/app/services/postcode_service.rb index 546443ef0..74c1f4895 100644 --- a/app/services/postcode_service.rb +++ b/app/services/postcode_service.rb @@ -3,7 +3,7 @@ class PostcodeService @pio = Postcodes::IO.new end - def infer_la(postcode) + def lookup(postcode) # Avoid network calls when postcode is invalid return unless postcode.match(POSTCODE_REGEXP) @@ -16,24 +16,10 @@ class PostcodeService Rails.logger.warn("Postcodes.io lookup timed out") end if postcode_lookup && postcode_lookup.info.present? - postcode_lookup.codes["admin_district"] - end - end - - def infer_admin_district(postcode) - # Avoid network calls when postcode is invalid - return unless postcode.match(POSTCODE_REGEXP) - - postcode_lookup = nil - begin - # URI encoding only supports ASCII characters - ascii_postcode = self.class.clean(postcode) - Timeout.timeout(5) { postcode_lookup = @pio.lookup(ascii_postcode) } - rescue Timeout::Error - Rails.logger.warn("Postcodes.io lookup timed out") - end - if postcode_lookup && postcode_lookup.info.present? - postcode_lookup.admin_district + { + location_code: postcode_lookup.codes["admin_district"], + location_admin_district: postcode_lookup&.admin_district, + } end end diff --git a/spec/services/imports/case_logs_import_service_spec.rb b/spec/services/imports/case_logs_import_service_spec.rb index 281a7b600..e763099b9 100644 --- a/spec/services/imports/case_logs_import_service_spec.rb +++ b/spec/services/imports/case_logs_import_service_spec.rb @@ -20,7 +20,7 @@ RSpec.describe Imports::CaseLogsImportService do before do WebMock.stub_request(:get, /api.postcodes.io\/postcodes\/LS166FT/) - .to_return(status: 200, body: '{"status":200,"result":{"codes":{"admin_district":"E08000035"}}}', headers: {}) + .to_return(status: 200, body: '{"status":200,"result":{"admin_district":"Westminster","codes":{"admin_district":"E08000035"}}}', headers: {}) allow(Organisation).to receive(:find_by).and_return(nil) allow(Organisation).to receive(:find_by).with(old_visible_id: organisation.old_visible_id.to_i).and_return(organisation)