From 09d6290331f5b5a7bccb557c0b20611bf85c1196 Mon Sep 17 00:00:00 2001 From: Kat Date: Tue, 19 Dec 2023 15:28:57 +0000 Subject: [PATCH] Update uprn pages routing --- app/models/form/lettings/pages/address.rb | 11 +++-- app/models/form/lettings/pages/uprn.rb | 5 +-- app/models/form/sales/pages/address.rb | 9 ++-- app/models/form/sales/pages/uprn.rb | 4 -- .../form/lettings/pages/address_spec.rb | 42 +----------------- .../lettings/pages/uprn_confirmation_spec.rb | 26 ----------- spec/models/form/lettings/pages/uprn_spec.rb | 20 +-------- .../questions/uprn_confirmation_spec.rb | 25 +++++++++-- .../form/lettings/questions/uprn_spec.rb | 22 +++++++++- spec/models/form/sales/pages/address_spec.rb | 43 +------------------ spec/models/form/sales/questions/uprn_spec.rb | 23 ++++++++-- 11 files changed, 76 insertions(+), 154 deletions(-) diff --git a/app/models/form/lettings/pages/address.rb b/app/models/form/lettings/pages/address.rb index 389ce172a..916b2f2ca 100644 --- a/app/models/form/lettings/pages/address.rb +++ b/app/models/form/lettings/pages/address.rb @@ -3,6 +3,11 @@ class Form::Lettings::Pages::Address < ::Form::Page super @id = "address" @header = "Q12 - What is the property's address?" + @depends_on = [ + { "is_supported_housing?" => false, "uprn_known" => nil }, + { "is_supported_housing?" => false, "uprn_known" => 0 }, + { "is_supported_housing?" => false, "uprn_confirmed" => 0 }, + ] end def questions @@ -14,10 +19,4 @@ class Form::Lettings::Pages::Address < ::Form::Page Form::Lettings::Questions::PostcodeForFullAddress.new(nil, nil, self), ] end - - def routed_to?(log, _current_user = nil) - return false if log.is_supported_housing? - - log.uprn_known.nil? || log.uprn_known.zero? || log.uprn_confirmed&.zero? - end end diff --git a/app/models/form/lettings/pages/uprn.rb b/app/models/form/lettings/pages/uprn.rb index f50111798..eb59e4a24 100644 --- a/app/models/form/lettings/pages/uprn.rb +++ b/app/models/form/lettings/pages/uprn.rb @@ -2,6 +2,7 @@ class Form::Lettings::Pages::Uprn < ::Form::Page def initialize(id, hsh, subsection) super @id = "uprn" + @depends_on = [{ "is_supported_housing?" => false }] end def questions @@ -11,10 +12,6 @@ class Form::Lettings::Pages::Uprn < ::Form::Page ] end - def routed_to?(log, _current_user = nil) - !log.is_supported_housing? - end - def skip_text "Enter address instead" end diff --git a/app/models/form/sales/pages/address.rb b/app/models/form/sales/pages/address.rb index 134dcdccc..3078dfe1e 100644 --- a/app/models/form/sales/pages/address.rb +++ b/app/models/form/sales/pages/address.rb @@ -3,6 +3,11 @@ class Form::Sales::Pages::Address < ::Form::Page super @id = "address" @header = "Q15 - What is the property's address?" + @depends_on = [ + { "uprn_known" => nil }, + { "uprn_known" => 0 }, + { "uprn_confirmed" => 0 }, + ] end def questions @@ -14,8 +19,4 @@ class Form::Sales::Pages::Address < ::Form::Page Form::Sales::Questions::PostcodeForFullAddress.new(nil, nil, self), ] end - - def routed_to?(log, _current_user = nil) - log.uprn_known.nil? || log.uprn_known.zero? || log.uprn_confirmed&.zero? - end end diff --git a/app/models/form/sales/pages/uprn.rb b/app/models/form/sales/pages/uprn.rb index 6df3aaab7..c4ae5b357 100644 --- a/app/models/form/sales/pages/uprn.rb +++ b/app/models/form/sales/pages/uprn.rb @@ -11,10 +11,6 @@ class Form::Sales::Pages::Uprn < ::Form::Page ] end - def routed_to?(_log, _current_user) - true - end - def skip_text "Enter address instead" end diff --git a/spec/models/form/lettings/pages/address_spec.rb b/spec/models/form/lettings/pages/address_spec.rb index 71f61d2e8..78034f824 100644 --- a/spec/models/form/lettings/pages/address_spec.rb +++ b/spec/models/form/lettings/pages/address_spec.rb @@ -28,46 +28,6 @@ RSpec.describe Form::Lettings::Pages::Address, type: :model do end it "has correct depends_on" do - expect(page.depends_on).to be_nil - end - - describe "has correct routed_to?" do - context "when uprn_known == nil" do - let(:log) { create(:lettings_log, uprn_known: nil) } - - it "returns true" do - expect(page.routed_to?(log)).to eq(true) - end - end - - context "when uprn_confirmed != 1" do - let(:log) do - create(:lettings_log, uprn_known: 1, uprn: "12345", uprn_confirmed: 0) - end - - it "returns true" do - expect(page.routed_to?(log)).to eq(true) - end - end - - context "when uprn_known == 0" do - let(:log) do - create(:lettings_log, uprn_known: 0, uprn_confirmed: 0) - end - - it "returns true" do - expect(page.routed_to?(log)).to eq(true) - end - end - - context "when uprn_confirmed == 1 && uprn_known != 0" do - let(:log) do - create(:lettings_log, uprn_known: 1, uprn: "12345", uprn_confirmed: 1) - end - - it "returns false" do - expect(page.routed_to?(log)).to eq(false) - end - end + expect(page.depends_on).to eq([{ "is_supported_housing?" => false, "uprn_known" => nil }, { "is_supported_housing?" => false, "uprn_known" => 0 }, { "is_supported_housing?" => false, "uprn_confirmed" => 0 }]) end end diff --git a/spec/models/form/lettings/pages/uprn_confirmation_spec.rb b/spec/models/form/lettings/pages/uprn_confirmation_spec.rb index e1c6a587d..66e55979a 100644 --- a/spec/models/form/lettings/pages/uprn_confirmation_spec.rb +++ b/spec/models/form/lettings/pages/uprn_confirmation_spec.rb @@ -30,30 +30,4 @@ RSpec.describe Form::Lettings::Pages::UprnConfirmation, type: :model do it "has correct depends_on" do expect(page.depends_on).to be_nil end - - describe "has correct routed_to?" do - context "when uprn present && uprn_known == 1 " do - let(:log) { create(:lettings_log, uprn_known: 1, uprn: "123456789") } - - it "returns true" do - expect(page.routed_to?(log)).to eq(true) - end - end - - context "when uprn = nil" do - let(:log) { create(:lettings_log, uprn_known: 1, uprn: nil) } - - it "returns false" do - expect(page.routed_to?(log)).to eq(false) - end - end - - context "when uprn_known == 0" do - let(:log) { create(:lettings_log, uprn_known: 0, uprn: "123456789") } - - it "returns false" do - expect(page.routed_to?(log)).to eq(false) - end - end - end end diff --git a/spec/models/form/lettings/pages/uprn_spec.rb b/spec/models/form/lettings/pages/uprn_spec.rb index d7ddec73f..009f7b392 100644 --- a/spec/models/form/lettings/pages/uprn_spec.rb +++ b/spec/models/form/lettings/pages/uprn_spec.rb @@ -28,31 +28,13 @@ RSpec.describe Form::Lettings::Pages::Uprn, type: :model do end it "has correct depends_on" do - expect(page.depends_on).to be_nil + expect(page.depends_on).to eq([{ "is_supported_housing?" => false }]) end it "has correct skip_text" do expect(page.skip_text).to eq("Enter address instead") end - describe "has correct routed_to?" do - context "when uprn_known == 1" do - let(:log) { create(:lettings_log, uprn_known: 1) } - - it "returns true" do - expect(page.routed_to?(log)).to eq(true) - end - end - - context "when needstype == 2" do - let(:log) { create(:lettings_log, uprn_known: 1, needstype: 2) } - - it "returns true" do - expect(page.routed_to?(log)).to eq(false) - end - end - end - describe "has correct skip_href" do context "when log is nil" do it "is nil" do diff --git a/spec/models/form/lettings/questions/uprn_confirmation_spec.rb b/spec/models/form/lettings/questions/uprn_confirmation_spec.rb index 2bf34e4a9..e162c5220 100644 --- a/spec/models/form/lettings/questions/uprn_confirmation_spec.rb +++ b/spec/models/form/lettings/questions/uprn_confirmation_spec.rb @@ -7,6 +7,25 @@ RSpec.describe Form::Lettings::Questions::UprnConfirmation, type: :model do let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + before do + body = { + results: [ + { + DPA: { + "POSTCODE": "AA1 1AA", + "POST_TOWN": "Test Town", + "ORGANISATION_NAME": "1, Test Street", + }, + }, + ], + }.to_json + + stub_request(:get, "https://api.os.uk/search/places/v1/uprn?key=OS_DATA_KEY&uprn=1234") + .to_return(status: 200, body:, headers: {}) + stub_request(:get, "https://api.os.uk/search/places/v1/uprn?key=OS_DATA_KEY&uprn=1") + .to_return(status: 200, body:, headers: {}) + end + it "has correct page" do expect(question.page).to eq(page) end @@ -50,11 +69,11 @@ RSpec.describe Form::Lettings::Questions::UprnConfirmation, type: :model do context "when address is present" do it "returns formatted value" do - log = create(:lettings_log, address_line1: "1, Test Street", town_or_city: "Test Town", county: "Test County", postcode_full: "AA1 1AA", uprn: "1234", uprn_known: 1) + log = create(:lettings_log, :setup_completed, address_line1: "1, Test Street", town_or_city: "Test Town", postcode_full: "AA1 1AA", uprn: "1234", uprn_known: 1) expect(question.notification_banner(log)).to eq( { - heading: "1, Test Street\nAA1 1AA\nTest Town\nTest County", + heading: "1, Test Street\nAA1 1AA\nTest Town", title: "UPRN: 1234", }, ) @@ -72,7 +91,7 @@ RSpec.describe Form::Lettings::Questions::UprnConfirmation, type: :model do end context "when uprn_known == 1 && uprn_confirmed == nil" do - let(:log) { create(:lettings_log, uprn_known: 1, uprn_confirmed: nil) } + let(:log) { create(:lettings_log, :completed, uprn_known: 1, uprn: 1, uprn_confirmed: nil) } it "returns false" do expect(question.hidden_in_check_answers?(log)).to eq(false) diff --git a/spec/models/form/lettings/questions/uprn_spec.rb b/spec/models/form/lettings/questions/uprn_spec.rb index 98599b99f..d6b64e714 100644 --- a/spec/models/form/lettings/questions/uprn_spec.rb +++ b/spec/models/form/lettings/questions/uprn_spec.rb @@ -7,6 +7,23 @@ RSpec.describe Form::Lettings::Questions::Uprn, type: :model do let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + before do + body = { + results: [ + { + DPA: { + "POSTCODE": "AA1 1AA", + "POST_TOWN": "Test Town", + "ORGANISATION_NAME": "1, Test Street", + }, + }, + ], + }.to_json + + stub_request(:get, "https://api.os.uk/search/places/v1/uprn?key=OS_DATA_KEY&uprn=1") + .to_return(status: 200, body:, headers: {}) + end + it "has correct page" do expect(question.page).to eq(page) end @@ -56,6 +73,7 @@ RSpec.describe Form::Lettings::Questions::Uprn, type: :model do let(:log) do create( :lettings_log, + :completed, address_line1: "1, Test Street", town_or_city: "Test Town", county: "Test County", @@ -77,11 +95,11 @@ RSpec.describe Form::Lettings::Questions::Uprn, type: :model do context "when uprn known" do let(:uprn_known) { 1 } - let(:uprn) { 123_456_789 } + let(:uprn) { 1 } it "returns formatted value" do expect(question.get_extra_check_answer_value(log)).to eq( - "\n\n1, Test Street\nTest Town\nTest County\nAA1 1AA\nWestminster", + "\n\n1, Test Street\nTest Town\nAA1 1AA\nWestminster", ) end end diff --git a/spec/models/form/sales/pages/address_spec.rb b/spec/models/form/sales/pages/address_spec.rb index 9bdd5f432..c20ac207a 100644 --- a/spec/models/form/sales/pages/address_spec.rb +++ b/spec/models/form/sales/pages/address_spec.rb @@ -28,47 +28,6 @@ RSpec.describe Form::Sales::Pages::Address, type: :model do end it "has correct depends_on" do - expect(page.depends_on).to be_nil - end - - describe "has correct routed_to?" do - context "when uprn_known == nil" do - let(:log) { create(:sales_log, uprn_known: nil) } - - it "returns true" do - expect(page.routed_to?(log)).to eq(true) - end - end - - context "when uprn_confirmed != 1" do - let(:log) do - create(:sales_log, uprn_known: 1, uprn: "12345", uprn_confirmed: 0) - end - - it "returns true" do - expect(page.routed_to?(log)).to eq(true) - end - end - - context "when uprn_known == 0" do - let(:log) do - create(:sales_log, uprn_confirmed: 0) - end - - it "returns true" do - log.uprn_known = 0 - expect(page.routed_to?(log)).to eq(true) - end - end - - context "when uprn_confirmed == 1 && uprn_known != 0" do - let(:log) do - create(:sales_log, uprn_known: 1, uprn: "12345", uprn_confirmed: 1) - end - - it "returns false" do - expect(page.routed_to?(log)).to eq(false) - end - end + expect(page.depends_on).to eq([{ "uprn_known" => nil }, { "uprn_known" => 0 }, { "uprn_confirmed" => 0 }]) end end diff --git a/spec/models/form/sales/questions/uprn_spec.rb b/spec/models/form/sales/questions/uprn_spec.rb index e1a1491ad..85d2a3ee0 100644 --- a/spec/models/form/sales/questions/uprn_spec.rb +++ b/spec/models/form/sales/questions/uprn_spec.rb @@ -7,6 +7,23 @@ RSpec.describe Form::Sales::Questions::Uprn, type: :model do let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + before do + body = { + results: [ + { + DPA: { + "POSTCODE": "AA1 1AA", + "POST_TOWN": "Test Town", + "ORGANISATION_NAME": "1, Test Street", + }, + }, + ], + }.to_json + + stub_request(:get, "https://api.os.uk/search/places/v1/uprn?key=OS_DATA_KEY&uprn=1") + .to_return(status: 200, body:, headers: {}) + end + it "has correct page" do expect(question.page).to eq(page) end @@ -56,9 +73,9 @@ RSpec.describe Form::Sales::Questions::Uprn, type: :model do let(:log) do create( :sales_log, + :completed, address_line1: "1, Test Street", town_or_city: "Test Town", - county: "Test County", postcode_full: "AA1 1AA", la: "E09000003", uprn_known:, @@ -77,11 +94,11 @@ RSpec.describe Form::Sales::Questions::Uprn, type: :model do context "when uprn known" do let(:uprn_known) { 1 } - let(:uprn) { 123_456_789 } + let(:uprn) { 1 } it "returns formatted value" do expect(question.get_extra_check_answer_value(log)).to eq( - "\n\n1, Test Street\nTest Town\nTest County\nAA1 1AA\nWestminster", + "\n\n1, Test Street\nTest Town\nAA1 1AA\nWestminster", ) end end