From 71138476d4226d4456d1358f47cdab224568b65e Mon Sep 17 00:00:00 2001 From: Nat Dean-Lewis <94526761+natdeanlewissoftwire@users.noreply.github.com> Date: Mon, 16 Feb 2026 14:28:13 +0000 Subject: [PATCH] CLDC-1980: Add income and benefits CYA label (#3172) * CLDC-1980: copy setup from CLDC-4200 * CLDC-1980: add All buyers labels * CLDC-1980: add All buyers labels to soft validations for 2026 onwards * CLDC-1980: update tests * CLDC-1980: update base q tests * CLDC-1980: reduce number of questions changed to first per section * CLDC-1980: undo redundant test changes * CLDC-1980: add new required args to page specs * CLDC-1980: add new required args to page specs --- .../sales/questions/deposit_value_check.rb | 2 +- .../form/sales/questions/housing_benefits.rb | 1 + .../sales/questions/savings_value_check.rb | 2 +- .../sales/pages/deposit_value_check_spec.rb | 2 +- .../form/sales/pages/housing_benefits_spec.rb | 2 +- .../sales/pages/savings_value_check_spec.rb | 2 +- .../questions/deposit_value_check_spec.rb | 28 +++++++++++++++-- .../sales/questions/housing_benefits_spec.rb | 31 ++++++++++++++++++- .../questions/savings_value_check_spec.rb | 28 +++++++++++++++-- 9 files changed, 88 insertions(+), 10 deletions(-) diff --git a/app/models/form/sales/questions/deposit_value_check.rb b/app/models/form/sales/questions/deposit_value_check.rb index 71560fa84..03f94f295 100644 --- a/app/models/form/sales/questions/deposit_value_check.rb +++ b/app/models/form/sales/questions/deposit_value_check.rb @@ -18,6 +18,6 @@ class Form::Sales::Questions::DepositValueCheck < ::Form::Question }, ], } - @check_answers_card_number = 0 + @check_answers_card_number = 0 unless form.start_year_2026_or_later? end end diff --git a/app/models/form/sales/questions/housing_benefits.rb b/app/models/form/sales/questions/housing_benefits.rb index 616b061e8..cae27aeb4 100644 --- a/app/models/form/sales/questions/housing_benefits.rb +++ b/app/models/form/sales/questions/housing_benefits.rb @@ -5,6 +5,7 @@ class Form::Sales::Questions::HousingBenefits < ::Form::Question @copy_key = "sales.income_benefits_and_savings.housing_benefits.#{joint_purchase ? 'joint_purchase' : 'not_joint_purchase'}" @type = "radio" @answer_options = ANSWER_OPTIONS + @check_answers_card_title = "All buyers" if form.start_year_2026_or_later? @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] end diff --git a/app/models/form/sales/questions/savings_value_check.rb b/app/models/form/sales/questions/savings_value_check.rb index f547969bf..1b7ea6a7c 100644 --- a/app/models/form/sales/questions/savings_value_check.rb +++ b/app/models/form/sales/questions/savings_value_check.rb @@ -18,6 +18,6 @@ class Form::Sales::Questions::SavingsValueCheck < ::Form::Question }, ], } - @check_answers_card_number = 0 + @check_answers_card_number = 0 unless form.start_year_2026_or_later? end end diff --git a/spec/models/form/sales/pages/deposit_value_check_spec.rb b/spec/models/form/sales/pages/deposit_value_check_spec.rb index dcd12449c..1fa3047f0 100644 --- a/spec/models/form/sales/pages/deposit_value_check_spec.rb +++ b/spec/models/form/sales/pages/deposit_value_check_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Form::Sales::Pages::DepositValueCheck, type: :model do let(:page_id) { "deposit_value_check" } let(:page_definition) { nil } - let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1)) } + let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1), start_year_2026_or_later?: false) } let(:subsection) { instance_double(Form::Subsection, form:) } it "has correct subsection" do diff --git a/spec/models/form/sales/pages/housing_benefits_spec.rb b/spec/models/form/sales/pages/housing_benefits_spec.rb index c8565f8d7..bf7f68156 100644 --- a/spec/models/form/sales/pages/housing_benefits_spec.rb +++ b/spec/models/form/sales/pages/housing_benefits_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Form::Sales::Pages::HousingBenefits, type: :model do let(:page_id) { "provided_id" } let(:page_definition) { nil } - let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1))) } + let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1), start_year_2026_or_later?: false)) } let(:joint_purchase) { false } it "has correct subsection" do diff --git a/spec/models/form/sales/pages/savings_value_check_spec.rb b/spec/models/form/sales/pages/savings_value_check_spec.rb index e680ff5d1..c0e6fec29 100644 --- a/spec/models/form/sales/pages/savings_value_check_spec.rb +++ b/spec/models/form/sales/pages/savings_value_check_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Form::Sales::Pages::SavingsValueCheck, type: :model do let(:page_id) { "savings_value_check" } let(:page_definition) { nil } - let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1)) } + let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1), start_year_2026_or_later?: false) } let(:subsection) { instance_double(Form::Subsection, form:) } it "has correct subsection" do diff --git a/spec/models/form/sales/questions/deposit_value_check_spec.rb b/spec/models/form/sales/questions/deposit_value_check_spec.rb index 077c2e6a6..2f705bfbd 100644 --- a/spec/models/form/sales/questions/deposit_value_check_spec.rb +++ b/spec/models/form/sales/questions/deposit_value_check_spec.rb @@ -6,6 +6,14 @@ RSpec.describe Form::Sales::Questions::DepositValueCheck, type: :model do let(:question_id) { nil } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:subsection) { instance_double(Form::Subsection) } + let(:form) { instance_double(Form) } + + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(true) + allow(page).to receive(:subsection).and_return(subsection) + allow(subsection).to receive(:form).and_return(form) + end it "has correct page" do expect(question.page).to eq(page) @@ -23,8 +31,24 @@ RSpec.describe Form::Sales::Questions::DepositValueCheck, type: :model do expect(question.derived?(nil)).to be false end - it "has a correct check_answers_card_number" do - expect(question.check_answers_card_number).to eq(0) + context "when in 2025", { year: 25 } do + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(false) + end + + it "has check_answers_card_number set to 0" do + expect(question.check_answers_card_number).to eq(0) + end + end + + context "when in 2026", { year: 26 } do + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(true) + end + + it "does not have a check_answers_card_number" do + expect(question.check_answers_card_number).to be_nil + end end it "has the correct answer_options" do diff --git a/spec/models/form/sales/questions/housing_benefits_spec.rb b/spec/models/form/sales/questions/housing_benefits_spec.rb index 21a84a6b8..97d896fe7 100644 --- a/spec/models/form/sales/questions/housing_benefits_spec.rb +++ b/spec/models/form/sales/questions/housing_benefits_spec.rb @@ -5,9 +5,18 @@ RSpec.describe Form::Sales::Questions::HousingBenefits, type: :model do let(:question_id) { nil } let(:question_definition) { nil } - let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1)))) } + let(:page) { instance_double(Form::Page) } + let(:subsection) { instance_double(Form::Subsection) } + let(:form) { instance_double(Form) } let(:joint_purchase) { false } + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(true) + allow(form).to receive(:start_date).and_return(Time.zone.local(2023, 4, 1)) + allow(page).to receive(:subsection).and_return(subsection) + allow(subsection).to receive(:form).and_return(form) + end + it "has correct page" do expect(question.page).to eq(page) end @@ -24,6 +33,26 @@ RSpec.describe Form::Sales::Questions::HousingBenefits, type: :model do expect(question.derived?(nil)).to be false end + context "when in 2025", { year: 25 } do + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(false) + end + + it "does not have a check_answers_card_title" do + expect(question.check_answers_card_title).to be_nil + end + end + + context "when in 2026", { year: 26 } do + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(true) + end + + it "has check_answers_card_title set to 'All buyers'" do + expect(question.check_answers_card_title).to eq("All buyers") + end + end + it "has the correct answer_options" do expect(question.answer_options).to eq({ "2" => { "value" => "Housing benefit" }, diff --git a/spec/models/form/sales/questions/savings_value_check_spec.rb b/spec/models/form/sales/questions/savings_value_check_spec.rb index 238df8cef..14ca49bd1 100644 --- a/spec/models/form/sales/questions/savings_value_check_spec.rb +++ b/spec/models/form/sales/questions/savings_value_check_spec.rb @@ -6,6 +6,14 @@ RSpec.describe Form::Sales::Questions::SavingsValueCheck, type: :model do let(:question_id) { nil } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:subsection) { instance_double(Form::Subsection) } + let(:form) { instance_double(Form) } + + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(true) + allow(page).to receive(:subsection).and_return(subsection) + allow(subsection).to receive(:form).and_return(form) + end it "has correct page" do expect(question.page).to eq(page) @@ -23,8 +31,24 @@ RSpec.describe Form::Sales::Questions::SavingsValueCheck, type: :model do expect(question.derived?(nil)).to be false end - it "has a correct check_answers_card_number" do - expect(question.check_answers_card_number).to eq(0) + context "when in 2025", { year: 25 } do + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(false) + end + + it "has check_answers_card_number set to 0" do + expect(question.check_answers_card_number).to eq(0) + end + end + + context "when in 2026", { year: 26 } do + before do + allow(form).to receive(:start_year_2026_or_later?).and_return(true) + end + + it "does not have a check_answers_card_number" do + expect(question.check_answers_card_number).to be_nil + end end it "has the correct answer_options" do