From 251ba233f8a93a0409d3f746e21e471e8eed5611 Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 5 Jun 2024 09:40:07 +0100 Subject: [PATCH] Correct routing to property LA --- .../pages/property_local_authority.rb | 3 +- .../sales/pages/property_local_authority.rb | 3 +- app/models/lettings_log.rb | 2 +- app/models/sales_log.rb | 2 +- .../pages/property_local_authority_spec.rb | 76 +++++++++++++++++-- .../pages/property_local_authority_spec.rb | 54 ++++++++++++- 6 files changed, 127 insertions(+), 13 deletions(-) diff --git a/app/models/form/lettings/pages/property_local_authority.rb b/app/models/form/lettings/pages/property_local_authority.rb index 9b36b0936..1e3d34bd2 100644 --- a/app/models/form/lettings/pages/property_local_authority.rb +++ b/app/models/form/lettings/pages/property_local_authority.rb @@ -3,7 +3,8 @@ class Form::Lettings::Pages::PropertyLocalAuthority < ::Form::Page super @id = "property_local_authority" @depends_on = [ - { "is_la_inferred" => false, "is_general_needs?" => true, "address_search_given?" => true }, + { "is_la_inferred" => false, "is_general_needs?" => true, "form.start_year_after_2024?" => false }, + { "is_la_inferred" => false, "is_general_needs?" => true, "form.start_year_after_2024?" => true, "address_search_given?" => true }, ] end diff --git a/app/models/form/sales/pages/property_local_authority.rb b/app/models/form/sales/pages/property_local_authority.rb index 59403a20c..e0289839d 100644 --- a/app/models/form/sales/pages/property_local_authority.rb +++ b/app/models/form/sales/pages/property_local_authority.rb @@ -3,7 +3,8 @@ class Form::Sales::Pages::PropertyLocalAuthority < ::Form::Page super @id = "property_local_authority" @depends_on = [ - { "is_la_inferred" => false, "address_search_given?" => true }, + { "is_la_inferred" => false, "form.start_year_after_2024?" => false }, + { "is_la_inferred" => false, "form.start_year_after_2024?" => true, "address_search_given?" => true }, ] end diff --git a/app/models/lettings_log.rb b/app/models/lettings_log.rb index f428121e7..d193fc70c 100644 --- a/app/models/lettings_log.rb +++ b/app/models/lettings_log.rb @@ -687,7 +687,7 @@ class LettingsLog < Log end def address_search_given? - address_line1_input.present? && postcode_full.present? + address_line1_input.present? && postcode_full_input.present? end private diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index e43220917..6ac2979c8 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -540,6 +540,6 @@ class SalesLog < Log end def address_search_given? - address_line1_input.present? && postcode_full.present? + address_line1_input.present? && postcode_full_input.present? end end diff --git a/spec/models/form/lettings/pages/property_local_authority_spec.rb b/spec/models/form/lettings/pages/property_local_authority_spec.rb index 1936587b0..b3f73e505 100644 --- a/spec/models/form/lettings/pages/property_local_authority_spec.rb +++ b/spec/models/form/lettings/pages/property_local_authority_spec.rb @@ -5,8 +5,12 @@ RSpec.describe Form::Lettings::Pages::PropertyLocalAuthority, type: :model do let(:page_id) { nil } let(:page_definition) { nil } - let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date:)) } - let(:start_date) { Time.utc(2022, 4, 1) } + let(:form) { FormHandler.instance.forms["current_lettings"] } + let(:subsection) { instance_double(Form::Subsection, form:, enabled?: true) } + + before do + allow(form).to receive(:start_date).and_return(Time.utc(2022, 4, 1)) + end it "has correct subsection" do expect(page.subsection).to eq(subsection) @@ -32,9 +36,69 @@ RSpec.describe Form::Lettings::Pages::PropertyLocalAuthority, type: :model do expect(page.description).to be_nil end - it "has the correct depends_on" do - expect(page.depends_on).to match([{ "address_search_given?" => true, - "is_general_needs?" => true, - "is_la_inferred" => false }]) + context "when routing to the page" do + let(:log) { build(:lettings_log) } + + context "with form before 2024" do + before do + allow(form).to receive(:start_year_after_2024?).and_return(false) + end + + it "is routed to when la is not inferred and it is general needs log" do + log.needstype = 1 + log.is_la_inferred = false + expect(page).to be_routed_to(log, nil) + end + + it "is not routed to when la is inferred" do + log.needstype = 1 + log.is_la_inferred = true + expect(page).not_to be_routed_to(log, nil) + end + + it "is not routed to when it's a supported housing log" do + log.needstype = 2 + log.is_la_inferred = false + expect(page).not_to be_routed_to(log, nil) + end + end + + context "with form after 2024" do + before do + allow(form).to receive(:start_year_after_2024?).and_return(true) + end + + it "is routed to when la is not inferred, it is general needs log and address search has been given" do + log.needstype = 1 + log.is_la_inferred = false + log.address_line1_input = "1" + log.postcode_full_input = "A11AA" + expect(page).to be_routed_to(log, nil) + end + + it "is not routed to when la is inferred" do + log.needstype = 1 + log.is_la_inferred = true + log.address_line1_input = "1" + log.postcode_full_input = "A11AA" + expect(page).not_to be_routed_to(log, nil) + end + + it "is not routed to when it's a supported housing log" do + log.needstype = 2 + log.is_la_inferred = false + log.address_line1_input = "1" + log.postcode_full_input = "A11AA" + expect(page).not_to be_routed_to(log, nil) + end + + it "is not routed to when address search is not given" do + log.needstype = 1 + log.is_la_inferred = false + log.address_line1_input = nil + log.postcode_full_input = "A11AA" + expect(page).not_to be_routed_to(log, nil) + end + end end end diff --git a/spec/models/form/sales/pages/property_local_authority_spec.rb b/spec/models/form/sales/pages/property_local_authority_spec.rb index 49c39f8e9..6d94beed0 100644 --- a/spec/models/form/sales/pages/property_local_authority_spec.rb +++ b/spec/models/form/sales/pages/property_local_authority_spec.rb @@ -5,9 +5,14 @@ RSpec.describe Form::Sales::Pages::PropertyLocalAuthority, type: :model do let(:page_id) { nil } let(:page_definition) { nil } - let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date:)) } + let(:form) { FormHandler.instance.forms["current_sales"] } + let(:subsection) { instance_double(Form::Subsection, form:, enabled?: true) } let(:start_date) { Time.utc(2022, 4, 1) } + before do + allow(form).to receive(:start_date).and_return(start_date) + end + it "has correct subsection" do expect(page.subsection).to eq(subsection) end @@ -51,7 +56,50 @@ RSpec.describe Form::Sales::Pages::PropertyLocalAuthority, type: :model do expect(page.description).to be_nil end - it "has the correct depends_on" do - expect(page.depends_on).to eq([{ "address_search_given?" => true, "is_la_inferred" => false }]) + context "when routing to the page" do + let(:log) { build(:sales_log) } + + context "with form before 2024" do + before do + allow(form).to receive(:start_year_after_2024?).and_return(false) + end + + it "is routed to when la is not inferred" do + log.is_la_inferred = false + expect(page).to be_routed_to(log, nil) + end + + it "is not routed to when la is inferred" do + log.is_la_inferred = true + expect(page).not_to be_routed_to(log, nil) + end + end + + context "with form after 2024" do + before do + allow(form).to receive(:start_year_after_2024?).and_return(true) + end + + it "is routed to when la is not inferred and address search has been given" do + log.is_la_inferred = false + log.address_line1_input = "1" + log.postcode_full_input = "A11AA" + expect(page).to be_routed_to(log, nil) + end + + it "is not routed to when la is inferred" do + log.is_la_inferred = true + log.address_line1_input = "1" + log.postcode_full_input = "A11AA" + expect(page).not_to be_routed_to(log, nil) + end + + it "is not routed to when address search is not given" do + log.is_la_inferred = false + log.address_line1_input = nil + log.postcode_full_input = "A11AA" + expect(page).not_to be_routed_to(log, nil) + end + end end end