From ca8a9d5010e2a9d29d6847bc90417e528cb9e86d Mon Sep 17 00:00:00 2001 From: Kat <54268893+kosiakkatrina@users.noreply.github.com> Date: Thu, 14 Nov 2024 14:03:46 +0000 Subject: [PATCH] Update LivingBeforePurchase routing --- .../sales/pages/living_before_purchase.rb | 14 ++-- .../pages/living_before_purchase_spec.rb | 72 ++++++++++++++++--- 2 files changed, 71 insertions(+), 15 deletions(-) diff --git a/app/models/form/sales/pages/living_before_purchase.rb b/app/models/form/sales/pages/living_before_purchase.rb index 3bb5510ce..bdd02e2b7 100644 --- a/app/models/form/sales/pages/living_before_purchase.rb +++ b/app/models/form/sales/pages/living_before_purchase.rb @@ -19,11 +19,17 @@ class Form::Sales::Pages::LivingBeforePurchase < ::Form::Page end end - def depends_on - if @joint_purchase - [{ "joint_purchase?" => true }] + def routed_to?(log, _user) + super && page_routed_to?(log) + end + + def page_routed_to?(log) + if form.start_year_2025_or_later? + log.resale == 2 + elsif @joint_purchase + log.joint_purchase? else - [{ "not_joint_purchase?" => true }, { "jointpur" => nil }] + log.not_joint_purchase? || log.jointpur.nil? end end end diff --git a/spec/models/form/sales/pages/living_before_purchase_spec.rb b/spec/models/form/sales/pages/living_before_purchase_spec.rb index 26026471b..b597f90e9 100644 --- a/spec/models/form/sales/pages/living_before_purchase_spec.rb +++ b/spec/models/form/sales/pages/living_before_purchase_spec.rb @@ -5,17 +5,19 @@ RSpec.describe Form::Sales::Pages::LivingBeforePurchase, type: :model do let(:page_id) { nil } let(:page_definition) { nil } - let(:subsection) { instance_double(Form::Subsection) } + let(:start_year) { 2022 } + let(:form) { Form.new(nil, start_year, [], "sales") } + let(:subsection) { instance_double(Form::Subsection, depends_on: nil, form:) } it "has correct subsection" do expect(page.subsection).to eq(subsection) end describe "questions" do - let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date:)) } + let(:subsection) { instance_double(Form::Subsection, form:, depends_on: nil) } context "when 2022" do - let(:start_date) { Time.utc(2022, 2, 8) } + let(:start_year) { 2022 } it "has correct questions" do expect(page.questions.map(&:id)).to eq(%w[proplen]) @@ -23,7 +25,7 @@ RSpec.describe Form::Sales::Pages::LivingBeforePurchase, type: :model do end context "when 2023" do - let(:start_date) { Time.utc(2023, 2, 8) } + let(:start_year) { 2023 } it "has correct questions" do expect(page.questions.map(&:id)).to eq(%w[proplen_asked proplen]) @@ -39,15 +41,63 @@ RSpec.describe Form::Sales::Pages::LivingBeforePurchase, type: :model do expect(page.description).to be_nil end - it "has correct depends_on" do - expect(page.depends_on).to eq([{ "not_joint_purchase?" => true }, { "jointpur" => nil }]) - end + context "when routing" do + context "with form before 2025" do + let(:start_year) { 2024 } + + context "with joint purchase" do + subject(:page) { described_class.new(page_id, page_definition, subsection, ownershipsch: 1, joint_purchase: true) } + + it "routes to the page when joint purchase is true" do + log = build(:sales_log, jointpur: 1) + expect(page.routed_to?(log, nil)).to eq(true) + end + + it "does not route to the page when joint purchase is false" do + log = build(:sales_log, jointpur: 2) + expect(page.routed_to?(log, nil)).to eq(false) + end + + it "does not route to the page when joint purchase is missing" do + log = build(:sales_log, jointpur: nil) + expect(page.routed_to?(log, nil)).to eq(false) + end + end + + context "with non joint purchase" do + subject(:page) { described_class.new(page_id, page_definition, subsection, ownershipsch: 1, joint_purchase: false) } + + it "routes to the page when joint purchase is false" do + log = build(:sales_log, jointpur: 2) + expect(page.routed_to?(log, nil)).to eq(true) + end - context "with joint purchase" do - subject(:page) { described_class.new(page_id, page_definition, subsection, ownershipsch: 1, joint_purchase: true) } + it "does not route to the page when joint purchase is true" do + log = build(:sales_log, jointpur: 1) + expect(page.routed_to?(log, nil)).to eq(false) + end - it "has correct depends_on" do - expect(page.depends_on).to eq([{ "joint_purchase?" => true }]) + it "routes to the page when joint purchase is missing" do + log = build(:sales_log, jointpur: nil) + expect(page.routed_to?(log, nil)).to eq(true) + end + end + end + + context "with form on or after 2025" do + subject(:page) { described_class.new(page_id, page_definition, subsection, ownershipsch: 1, joint_purchase: true) } + + let(:start_year) { 2025 } + + it "routes to the page when resale is 2" do + log = build(:sales_log, jointpur: 1, resale: 2) + expect(page.routed_to?(log, nil)).to eq(true) + end + + it "does not route to the page when resale is not 2" do + log = build(:sales_log, jointpur: 1, resale: nil) + expect(page.routed_to?(log, nil)).to eq(false) + end end end end