Browse Source

feat: improve error handling and don't accept "no match" precisions

pull/2278/head
natdeanlewissoftwire 2 years ago
parent
commit
99f5ae007f
  1. 2
      app/models/form/lettings/pages/address_selection.rb
  2. 1
      app/models/form/lettings/questions/address_selection.rb
  3. 2
      app/models/log.rb
  4. 1
      app/services/address_client.rb

2
app/models/form/lettings/pages/address_selection.rb

@ -13,7 +13,7 @@ class Form::Lettings::Pages::AddressSelection < ::Form::Page
end end
def routed_to?(log, _current_user = nil) def routed_to?(log, _current_user = nil)
log.uprn_known.present? && log.uprn_known.zero? && log.address_line1_input.present? && log.postcode_full_input.present? && (1..10).cover?(log.address_options.count) log.uprn_known.present? && log.uprn_known.zero? && log.address_line1_input.present? && log.postcode_full_input.present? && (1..10).cover?(log.address_options&.count)
end end
def skip_text def skip_text

1
app/models/form/lettings/questions/address_selection.rb

@ -12,7 +12,6 @@ class Form::Lettings::Questions::AddressSelection < ::Form::Question
answer_opts = { "-1" => { "value" => "The address is not listed, I want to enter the address manually" } } answer_opts = { "-1" => { "value" => "The address is not listed, I want to enter the address manually" } }
return answer_opts unless ActiveRecord::Base.connected? return answer_opts unless ActiveRecord::Base.connected?
return answer_opts unless log&.address_options return answer_opts unless log&.address_options
return answer_opts if log.errors.of_kind?(:address_selection, :address_error)
answer_opts = {} answer_opts = {}

2
app/models/log.rb

@ -118,7 +118,7 @@ class Log < ApplicationRecord
service = AddressClient.new(address_string) service = AddressClient.new(address_string)
service.call service.call
return errors.add(:address_selection, :address_error, message: service.error) if service.error.present? return nil if service.error.present?
address_opts = [] address_opts = []
service.result.first(10).each do |result| service.result.first(10).each do |result|

1
app/services/address_client.rb

@ -40,6 +40,7 @@ private
query: address, query: address,
key: ENV["OS_DATA_KEY"], key: ENV["OS_DATA_KEY"],
maxresults: 10, maxresults: 10,
minmatch: 0.6,
} }
uri.query = URI.encode_www_form(params) uri.query = URI.encode_www_form(params)
uri.to_s uri.to_s

Loading…
Cancel
Save