From fd9f51213c7f1693e4649f57071d839b1764f16d Mon Sep 17 00:00:00 2001 From: Samuel Young Date: Tue, 20 Jan 2026 16:10:01 +0000 Subject: [PATCH] CLDC-4145: Add a depends_on to ensure partner is hidden --- .../lettings/pages/person_lead_partner.rb | 17 ++++ .../pages/person_lead_partner_spec.rb | 77 ++++++++++++++++--- 2 files changed, 85 insertions(+), 9 deletions(-) diff --git a/app/models/form/lettings/pages/person_lead_partner.rb b/app/models/form/lettings/pages/person_lead_partner.rb index 30613d976..6f5e7e5f2 100644 --- a/app/models/form/lettings/pages/person_lead_partner.rb +++ b/app/models/form/lettings/pages/person_lead_partner.rb @@ -9,4 +9,21 @@ class Form::Lettings::Pages::PersonLeadPartner < ::Form::Page def questions @questions ||= [Form::Lettings::Questions::PersonPartner.new(nil, nil, self, person_index: @person_index)] end + + def depends_on + if form.start_year_2026_or_later? + [ + { + "details_known_#{@person_index}" => 0, + "age#{@person_index}" => { + "operator" => ">=", + "operand" => 16, + }, + }, + { "details_known_#{@person_index}" => 0, "age#{@person_index}" => nil }, + ] + else + [{ "details_known_#{@person_index}" => 0 }] + end + end end diff --git a/spec/models/form/lettings/pages/person_lead_partner_spec.rb b/spec/models/form/lettings/pages/person_lead_partner_spec.rb index 88aa3095d..588911f6a 100644 --- a/spec/models/form/lettings/pages/person_lead_partner_spec.rb +++ b/spec/models/form/lettings/pages/person_lead_partner_spec.rb @@ -4,9 +4,14 @@ RSpec.describe Form::Lettings::Pages::PersonLeadPartner, type: :model do subject(:page) { described_class.new(nil, page_definition, subsection, person_index:) } let(:page_definition) { nil } - let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2024, 4, 1), start_year_2025_or_later?: true)) } + let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1)) } + let(:subsection) { instance_double(Form::Subsection, form:) } let(:person_index) { 2 } + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(false) + end + it "has correct subsection" do expect(page.subsection).to eq(subsection) end @@ -24,10 +29,37 @@ RSpec.describe Form::Lettings::Pages::PersonLeadPartner, type: :model do expect(page.id).to eq("person_2_lead_partner") end - it "has correct depends_on" do - expect(page.depends_on).to eq( - [{ "details_known_2" => 0 }], - ) + context "with start year >= 2025", metadata: { year: 25 } do + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(false) + end + + it "has correct depends_on" do + expect(page.depends_on).to eq( + [{ "details_known_2" => 0 }], + ) + end + end + + context "with start year >= 2026", metadata: { year: 26 } do + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(true) + end + + it "has correct depends_on" do + expect(page.depends_on).to eq( + [ + { + "details_known_2" => 0, + "age2" => { + "operator" => ">=", + "operand" => 16, + }, + }, + { "details_known_2" => 0, "age2" => nil }, + ], + ) + end end end @@ -42,10 +74,37 @@ RSpec.describe Form::Lettings::Pages::PersonLeadPartner, type: :model do expect(page.id).to eq("person_3_lead_partner") end - it "has correct depends_on" do - expect(page.depends_on).to eq( - [{ "details_known_3" => 0 }], - ) + context "with start year >= 2025", metadata: { year: 25 } do + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(false) + end + + it "has correct depends_on" do + expect(page.depends_on).to eq( + [{ "details_known_3" => 0 }], + ) + end + end + + context "with start year >= 2026", metadata: { year: 26 } do + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(true) + end + + it "has correct depends_on" do + expect(page.depends_on).to eq( + [ + { + "details_known_3" => 0, + "age3" => { + "operator" => ">=", + "operand" => 16, + }, + }, + { "details_known_3" => 0, "age3" => nil }, + ], + ) + end end end end