From 9e7198860f507aac26bb896f330362975eb5c93f Mon Sep 17 00:00:00 2001 From: oscar-richardson-softwire Date: Mon, 9 Feb 2026 15:39:44 +0000 Subject: [PATCH] Correct hidden_in_check_answers logic --- .../form/lettings/questions/person_partner.rb | 15 ++-- .../lettings/questions/person_partner_spec.rb | 80 ++++++++++++++++++- 2 files changed, 86 insertions(+), 9 deletions(-) diff --git a/app/models/form/lettings/questions/person_partner.rb b/app/models/form/lettings/questions/person_partner.rb index 7a09ca8cd..bfebb3723 100644 --- a/app/models/form/lettings/questions/person_partner.rb +++ b/app/models/form/lettings/questions/person_partner.rb @@ -7,11 +7,6 @@ class Form::Lettings::Questions::PersonPartner < ::Form::Question @answer_options = answer_options @person_index = person_index @question_number = question_number - @hidden_in_check_answers = { - "depends_on" => (2...person_index).map do |i| - { "relat#{i}" => "P", "relat#{person_index}" => "X" } - end, - } @disable_clearing_if_not_routed_or_dynamic_answer_options = form.start_year_2026_or_later? end @@ -37,4 +32,14 @@ class Form::Lettings::Questions::PersonPartner < ::Form::Question def derived?(log) form.start_year_2026_or_later? && log.is_partner_inferred?(@person_index) end + + def hidden_in_check_answers?(log, _current_user = nil) + if form.start_year_2026_or_later? + (2...@person_index).any? do |i| + log["relat#{i}"] == "P" + end + else + false + end + end end diff --git a/spec/models/form/lettings/questions/person_partner_spec.rb b/spec/models/form/lettings/questions/person_partner_spec.rb index 9888c3bb0..583ae2610 100644 --- a/spec/models/form/lettings/questions/person_partner_spec.rb +++ b/spec/models/form/lettings/questions/person_partner_spec.rb @@ -122,8 +122,44 @@ RSpec.describe Form::Lettings::Questions::PersonPartner, type: :model do expect(question.check_answers_card_number).to eq(3) end - it "has the correct hidden_in_check_answers" do - expect(question.hidden_in_check_answers).to eq("relat2" => "P", "relat3" => "X") + context "when the log has a preceding value of `relat` as 'P'" do + let(:log) { build(:lettings_log, relat2: "P") } + + context "and in 2025", metadata: { year: 25 } do + let(:year) { 2025 } + + it "has the correct hidden_in_check_answers?" do + expect(question.hidden_in_check_answers?(log)).to eq(false) + end + end + + context "and in 2026", metadata: { year: 26 } do + let(:year) { 2026 } + + it "has the correct hidden_in_check_answers?" do + expect(question.hidden_in_check_answers?(log)).to eq(true) + end + end + end + + context "when the log does not have a preceding value of `relat` as 'P'" do + let(:log) { build(:lettings_log, relat2: "X") } + + context "and in 2025", metadata: { year: 25 } do + let(:year) { 2025 } + + it "has the correct hidden_in_check_answers?" do + expect(question.hidden_in_check_answers?(log)).to eq(false) + end + end + + context "and in 2026", metadata: { year: 26 } do + let(:year) { 2026 } + + it "has the correct hidden_in_check_answers?" do + expect(question.hidden_in_check_answers?(log)).to eq(false) + end + end end end @@ -138,8 +174,44 @@ RSpec.describe Form::Lettings::Questions::PersonPartner, type: :model do expect(question.check_answers_card_number).to eq(4) end - it "has the correct hidden_in_check_answers" do - expect(question.hidden_in_check_answers).to eq("depends_on" => [{"relat2"=>"P", "relat4"=>"X"}, {"relat3"=>"P", "relat4"=>"X"}]) + context "when the log has a preceding value of `relat` as 'P'" do + let(:log) { build(:lettings_log, relat2: "P", relat3: "X") } + + context "and in 2025", metadata: { year: 25 } do + let(:year) { 2025 } + + it "has the correct hidden_in_check_answers?" do + expect(question.hidden_in_check_answers?(log)).to eq(false) + end + end + + context "and in 2026", metadata: { year: 26 } do + let(:year) { 2026 } + + it "has the correct hidden_in_check_answers?" do + expect(question.hidden_in_check_answers?(log)).to eq(true) + end + end + end + + context "when the log does not have a preceding value of `relat` as 'P'" do + let(:log) { build(:lettings_log, relat2: "R", relat3: "X") } + + context "and in 2025", metadata: { year: 25 } do + let(:year) { 2025 } + + it "has the correct hidden_in_check_answers?" do + expect(question.hidden_in_check_answers?(log)).to eq(false) + end + end + + context "and in 2026", metadata: { year: 26 } do + let(:year) { 2026 } + + it "has the correct hidden_in_check_answers?" do + expect(question.hidden_in_check_answers?(log)).to eq(false) + end + end end end end