diff --git a/app/models/form/lettings/questions/uprn_selection.rb b/app/models/form/lettings/questions/uprn_selection.rb index d7f412c66..f6c71f498 100644 --- a/app/models/form/lettings/questions/uprn_selection.rb +++ b/app/models/form/lettings/questions/uprn_selection.rb @@ -31,4 +31,12 @@ class Form::Lettings::Questions::UprnSelection < ::Form::Question def hidden_in_check_answers?(log, _current_user = nil) (log.uprn_known == 1 || log.uprn_confirmed == 1) || !(1..10).cover?(log.address_options&.count) end + + def input_playback(log = nil) + return unless log&.address_line1_input || log&.postcode_full_input + + address_options_count = answer_options(log).count > 1 ? answer_options(log).count - 2 : 0 + searched_address = [log.address_line1_input, log.postcode_full_input].select(&:present?).map { |x| "#{x}" }.join(" and ") + "#{address_options_count} #{'address'.pluralize(address_options_count)} found for #{searched_address}. Search again".html_safe + end end diff --git a/app/models/form/sales/questions/uprn_selection.rb b/app/models/form/sales/questions/uprn_selection.rb index 2ffb679db..f916dcd47 100644 --- a/app/models/form/sales/questions/uprn_selection.rb +++ b/app/models/form/sales/questions/uprn_selection.rb @@ -31,4 +31,12 @@ class Form::Sales::Questions::UprnSelection < ::Form::Question def hidden_in_check_answers?(log, _current_user = nil) (log.uprn_known == 1 || log.uprn_confirmed == 1) || !(1..10).cover?(log.address_options&.count) end + + def input_playback(log = nil) + return unless log&.address_line1_input || log&.postcode_full_input + + address_options_count = answer_options(log).count > 1 ? answer_options(log).count - 2 : 0 + searched_address = [log.address_line1_input, log.postcode_full_input].select(&:present?).map { |x| "#{x}" }.join(" and ") + "#{address_options_count} #{'address'.pluralize(address_options_count)} found for #{searched_address}. Search again".html_safe + end end diff --git a/spec/models/form/lettings/questions/uprn_selection_spec.rb b/spec/models/form/lettings/questions/uprn_selection_spec.rb index 7ecd133ce..8e3d38bf7 100644 --- a/spec/models/form/lettings/questions/uprn_selection_spec.rb +++ b/spec/models/form/lettings/questions/uprn_selection_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Form::Lettings::Questions::UprnSelection, type: :model do let(:question_id) { nil } let(:question_definition) { nil } - let(:page) { instance_double(Form::Page) } + let(:page) { instance_double(Form::Page, skip_href: "skip_href") } let(:log) { create(:lettings_log, :in_progress, address_line1_input: "Address line 1", postcode_full_input: "AA1 1AA") } let(:address_client_instance) { AddressClient.new(log.address_string) } @@ -99,4 +99,40 @@ RSpec.describe Form::Lettings::Questions::UprnSelection, type: :model do expect(question.hidden_in_check_answers?(log)).to eq(true) end end + + context "when the log has address line 1 input only" do + before do + log.address_line1_input = "Address line 1" + log.postcode_full_input = nil + log.save!(valudate: false) + end + + it "has the correct input_playback" do + expect(question.input_playback(log)).to eq("0 addresses found for Address line 1. Search again") + end + end + + context "when the log has postcode input only" do + before do + log.address_line1_input = nil + log.postcode_full_input = "A1 1AA" + log.save!(valudate: false) + end + + it "has the correct input_playback" do + expect(question.input_playback(log)).to eq("0 addresses found for A1 1AA. Search again") + end + end + + context "when the log has address line 1 and postcode inputs" do + before do + log.address_line1_input = "Address line 1" + log.postcode_full_input = "A1 1AA" + log.save!(valudate: false) + end + + it "has the correct input_playback" do + expect(question.input_playback(log)).to eq("1 address found for Address line 1 and A1 1AA. Search again") + end + end end diff --git a/spec/models/form/sales/questions/uprn_selection_spec.rb b/spec/models/form/sales/questions/uprn_selection_spec.rb index 621a3955e..5f7951c3d 100644 --- a/spec/models/form/sales/questions/uprn_selection_spec.rb +++ b/spec/models/form/sales/questions/uprn_selection_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Form::Sales::Questions::UprnSelection, type: :model do let(:question_id) { nil } let(:question_definition) { nil } - let(:page) { instance_double(Form::Page) } + let(:page) { instance_double(Form::Page, skip_href: "skip_href") } let(:log) { create(:sales_log, :in_progress, address_line1_input: "Address line 1", postcode_full_input: "AA1 1AA") } let(:address_client_instance) { AddressClient.new(log.address_string) } @@ -99,4 +99,40 @@ RSpec.describe Form::Sales::Questions::UprnSelection, type: :model do expect(question.hidden_in_check_answers?(log)).to eq(true) end end + + context "when the log has address line 1 input only" do + before do + log.address_line1_input = "Address line 1" + log.postcode_full_input = nil + log.save!(valudate: false) + end + + it "has the correct input_playback" do + expect(question.input_playback(log)).to eq("0 addresses found for Address line 1. Search again") + end + end + + context "when the log has postcode input only" do + before do + log.address_line1_input = nil + log.postcode_full_input = "A1 1AA" + log.save!(valudate: false) + end + + it "has the correct input_playback" do + expect(question.input_playback(log)).to eq("0 addresses found for A1 1AA. Search again") + end + end + + context "when the log has address line 1 and postcode inputs" do + before do + log.address_line1_input = "Address line 1" + log.postcode_full_input = "A1 1AA" + log.save!(valudate: false) + end + + it "has the correct input_playback" do + expect(question.input_playback(log)).to eq("1 address found for Address line 1 and A1 1AA. Search again") + end + end end