From 99c8245126e5bff4a151895e560f269954ec3049 Mon Sep 17 00:00:00 2001 From: Rebecca Jesson Date: Mon, 10 Aug 2026 11:17:55 +0100 Subject: [PATCH] CLDC-4402: soctenant_is_inferred now true, so removes now unreachable BuyerPrevious page --- app/models/form/sales/pages/buyer_previous.rb | 20 ----- .../form/sales/pages/previous_bedrooms.rb | 8 +- .../sales/pages/previous_property_type.rb | 8 +- .../form/sales/pages/previous_tenure.rb | 8 +- .../form/sales/questions/buyer_previous.rb | 29 ------- .../shared_ownership_initial_purchase.rb | 2 - .../subsections/shared_ownership_scheme.rb | 2 - .../forms/2024/sales/sale_information.en.yml | 14 ---- .../forms/2025/sales/sale_information.en.yml | 14 ---- .../forms/2026/sales/sale_information.en.yml | 14 ---- .../form/sales/pages/buyer_previous_spec.rb | 77 ------------------- .../sales/pages/previous_bedrooms_spec.rb | 8 +- .../pages/previous_property_type_spec.rb | 8 +- .../form/sales/pages/previous_tenure_spec.rb | 8 +- .../sales/questions/buyer_previous_spec.rb | 68 ---------------- .../shared_ownership_initial_purchase_spec.rb | 9 +-- .../shared_ownership_scheme_spec.rb | 2 - 17 files changed, 25 insertions(+), 274 deletions(-) delete mode 100644 app/models/form/sales/pages/buyer_previous.rb delete mode 100644 app/models/form/sales/questions/buyer_previous.rb delete mode 100644 spec/models/form/sales/pages/buyer_previous_spec.rb delete mode 100644 spec/models/form/sales/questions/buyer_previous_spec.rb diff --git a/app/models/form/sales/pages/buyer_previous.rb b/app/models/form/sales/pages/buyer_previous.rb deleted file mode 100644 index 197a68971..000000000 --- a/app/models/form/sales/pages/buyer_previous.rb +++ /dev/null @@ -1,20 +0,0 @@ -class Form::Sales::Pages::BuyerPrevious < ::Form::Page - def initialize(id, hsh, subsection, joint_purchase:) - super(id, hsh, subsection) - @joint_purchase = joint_purchase - @copy_key = "sales.sale_information.soctenant.#{joint_purchase ? 'joint_purchase' : 'not_joint_purchase'}" - @depends_on = [{ "joint_purchase?" => joint_purchase, "soctenant_is_inferred?" => false }] - end - - def questions - @questions ||= [ - Form::Sales::Questions::BuyerPrevious.new(nil, nil, self, joint_purchase: @joint_purchase), - ] - end - - def routed_to?(log, _current_user) - return false if log.is_staircase? && form.start_year_2024_or_later? - - super - end -end diff --git a/app/models/form/sales/pages/previous_bedrooms.rb b/app/models/form/sales/pages/previous_bedrooms.rb index 41573890d..c885e9c2b 100644 --- a/app/models/form/sales/pages/previous_bedrooms.rb +++ b/app/models/form/sales/pages/previous_bedrooms.rb @@ -9,10 +9,10 @@ class Form::Sales::Pages::PreviousBedrooms < ::Form::Page { "soctenant" => 0, }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 2 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 2 }, + { "ownershipsch" => 1, "prevten" => 1 }, + { "ownershipsch" => 1, "prevten" => 2 }, + { "ownershipsch" => 1, "prevtenbuy2" => 1 }, + { "ownershipsch" => 1, "prevtenbuy2" => 2 }, ] end diff --git a/app/models/form/sales/pages/previous_property_type.rb b/app/models/form/sales/pages/previous_property_type.rb index 03a8a6384..9eade9fe2 100644 --- a/app/models/form/sales/pages/previous_property_type.rb +++ b/app/models/form/sales/pages/previous_property_type.rb @@ -11,10 +11,10 @@ class Form::Sales::Pages::PreviousPropertyType < ::Form::Page { "soctenant" => 0, }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 2 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 2 }, + { "ownershipsch" => 1, "prevten" => 1 }, + { "ownershipsch" => 1, "prevten" => 2 }, + { "ownershipsch" => 1, "prevtenbuy2" => 1 }, + { "ownershipsch" => 1, "prevtenbuy2" => 2 }, ] end diff --git a/app/models/form/sales/pages/previous_tenure.rb b/app/models/form/sales/pages/previous_tenure.rb index 7abdb1db5..cd9c36e42 100644 --- a/app/models/form/sales/pages/previous_tenure.rb +++ b/app/models/form/sales/pages/previous_tenure.rb @@ -12,10 +12,10 @@ class Form::Sales::Pages::PreviousTenure < ::Form::Page { "soctenant" => 0, }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 2 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 2 }, + { "ownershipsch" => 1, "prevten" => 1 }, + { "ownershipsch" => 1, "prevten" => 2 }, + { "ownershipsch" => 1, "prevtenbuy2" => 1 }, + { "ownershipsch" => 1, "prevtenbuy2" => 2 }, ] end diff --git a/app/models/form/sales/questions/buyer_previous.rb b/app/models/form/sales/questions/buyer_previous.rb deleted file mode 100644 index 7c8718eaa..000000000 --- a/app/models/form/sales/questions/buyer_previous.rb +++ /dev/null @@ -1,29 +0,0 @@ -class Form::Sales::Questions::BuyerPrevious < ::Form::Question - def initialize(id, hsh, page, joint_purchase:) - super(id, hsh, page) - @id = "soctenant" - @copy_key = "sales.sale_information.soctenant.#{joint_purchase ? 'joint_purchase' : 'not_joint_purchase'}" - @type = "radio" - @answer_options = ANSWER_OPTIONS - @question_number = get_question_number_from_hash(QUESTION_NUMBER_FROM_YEAR) - end - - ANSWER_OPTIONS = { - "1" => { "value" => "Yes" }, - "2" => { "value" => "No" }, - "0" => { "value" => "Don’t know" }, - }.freeze - - def displayed_answer_options(_log, _user = nil) - { - "1" => { "value" => "Yes" }, - "2" => { "value" => "No" }, - } - end - - def derived?(_log) - form.start_year_2024_or_later? - end - - QUESTION_NUMBER_FROM_YEAR = { 2023 => 84 }.freeze -end diff --git a/app/models/form/sales/subsections/shared_ownership_initial_purchase.rb b/app/models/form/sales/subsections/shared_ownership_initial_purchase.rb index c7a25b13b..942603703 100644 --- a/app/models/form/sales/subsections/shared_ownership_initial_purchase.rb +++ b/app/models/form/sales/subsections/shared_ownership_initial_purchase.rb @@ -14,8 +14,6 @@ class Form::Sales::Subsections::SharedOwnershipInitialPurchase < ::Form::Subsect Form::Sales::Pages::LivingBeforePurchase.new("living_before_purchase_shared_ownership", nil, self, ownershipsch: 1, joint_purchase: false), Form::Sales::Pages::HandoverDate.new(nil, nil, self), Form::Sales::Pages::HandoverDateCheck.new(nil, nil, self), - Form::Sales::Pages::BuyerPrevious.new("buyer_previous_joint_purchase", nil, self, joint_purchase: true), - Form::Sales::Pages::BuyerPrevious.new("buyer_previous_not_joint_purchase", nil, self, joint_purchase: false), Form::Sales::Pages::PreviousBedrooms.new(nil, nil, self), Form::Sales::Pages::PreviousPropertyType.new(nil, nil, self), Form::Sales::Pages::PreviousTenure.new(nil, nil, self), diff --git a/app/models/form/sales/subsections/shared_ownership_scheme.rb b/app/models/form/sales/subsections/shared_ownership_scheme.rb index 9b26b6ec8..5939e4d47 100644 --- a/app/models/form/sales/subsections/shared_ownership_scheme.rb +++ b/app/models/form/sales/subsections/shared_ownership_scheme.rb @@ -22,8 +22,6 @@ class Form::Sales::Subsections::SharedOwnershipScheme < ::Form::Subsection Form::Sales::Pages::HandoverDate.new(nil, nil, self), Form::Sales::Pages::HandoverDateCheck.new(nil, nil, self), Form::Sales::Pages::LaNominations.new(nil, nil, self), - Form::Sales::Pages::BuyerPrevious.new("buyer_previous_joint_purchase", nil, self, joint_purchase: true), - Form::Sales::Pages::BuyerPrevious.new("buyer_previous_not_joint_purchase", nil, self, joint_purchase: false), Form::Sales::Pages::PreviousBedrooms.new(nil, nil, self), Form::Sales::Pages::PreviousPropertyType.new(nil, nil, self), Form::Sales::Pages::PreviousTenure.new(nil, nil, self), diff --git a/config/locales/forms/2024/sales/sale_information.en.yml b/config/locales/forms/2024/sales/sale_information.en.yml index de12f919e..b46ab689a 100644 --- a/config/locales/forms/2024/sales/sale_information.en.yml +++ b/config/locales/forms/2024/sales/sale_information.en.yml @@ -87,20 +87,6 @@ en: hint_text: "A local authority nominations agreement is a written agreement between a local authority and private registered provider (PRP) that some or all of its sales vacancies are offered to local authorities for rehousing" question_text: "Was the household rehoused under a 'local authority nominations agreement'?" - soctenant: - joint_purchase: - page_header: "" - check_answer_label: "Buyers were registered providers, housing association or local authority tenants immediately before this sale" - check_answer_prompt: "Tell us if buyers were registered providers, housing association or local authority tenants" - hint_text: "" - question_text: "Were any of the buyers private registered providers, housing association or local authority tenants immediately before this sale?" - not_joint_purchase: - page_header: "" - check_answer_label: "Buyer was a registered provider, housing association or local authority tenant immediately before this sale" - check_answer_prompt: "Tell us if buyer was a registered provider, housing association or local authority tenant" - hint_text: "" - question_text: "Was the buyer a private registered provider, housing association or local authority tenant immediately before this sale?" - frombeds: page_header: "" check_answer_label: "Number of bedrooms in previous property" diff --git a/config/locales/forms/2025/sales/sale_information.en.yml b/config/locales/forms/2025/sales/sale_information.en.yml index 5d0d5b1fb..640a0c951 100644 --- a/config/locales/forms/2025/sales/sale_information.en.yml +++ b/config/locales/forms/2025/sales/sale_information.en.yml @@ -108,20 +108,6 @@ en: hint_text: "A local authority nominations agreement is a written agreement between a local authority and private registered provider (PRP) that some or all of its sales vacancies are offered to local authorities for rehousing" question_text: "Was the household rehoused under a 'local authority nominations agreement'?" - soctenant: - joint_purchase: - page_header: "" - check_answer_label: "Buyers were registered providers, housing association or local authority tenants immediately before this sale" - check_answer_prompt: "Tell us if buyers were registered providers, housing association or local authority tenants" - hint_text: "" - question_text: "Were any of the buyers private registered providers, housing association or local authority tenants immediately before this sale?" - not_joint_purchase: - page_header: "" - check_answer_label: "Buyer was a registered provider, housing association or local authority tenant immediately before this sale" - check_answer_prompt: "Tell us if buyer was a registered provider, housing association or local authority tenant" - hint_text: "" - question_text: "Was the buyer a private registered provider, housing association or local authority tenant immediately before this sale?" - frombeds: page_header: "" check_answer_label: "Number of bedrooms in previous property" diff --git a/config/locales/forms/2026/sales/sale_information.en.yml b/config/locales/forms/2026/sales/sale_information.en.yml index fe64a51ff..dbb3363bd 100644 --- a/config/locales/forms/2026/sales/sale_information.en.yml +++ b/config/locales/forms/2026/sales/sale_information.en.yml @@ -108,20 +108,6 @@ en: hint_text: "A local authority nominations agreement is a written agreement between a local authority and private registered provider (PRP) that some or all of its sales vacancies are offered to local authorities for rehousing" question_text: "Was the household rehoused under a 'local authority nominations agreement'?" - soctenant: - joint_purchase: - page_header: "" - check_answer_label: "Buyers were registered providers, housing association or local authority tenants immediately before this sale" - check_answer_prompt: "Tell us if buyers were registered providers, housing association or local authority tenants" - hint_text: "" - question_text: "Were any of the buyers private registered providers, housing association or local authority tenants immediately before this sale?" - not_joint_purchase: - page_header: "" - check_answer_label: "Buyer was a registered provider, housing association or local authority tenant immediately before this sale" - check_answer_prompt: "Tell us if buyer was a registered provider, housing association or local authority tenant" - hint_text: "" - question_text: "Was the buyer a private registered provider, housing association or local authority tenant immediately before this sale?" - frombeds: page_header: "" check_answer_label: "Number of bedrooms in previous property" diff --git a/spec/models/form/sales/pages/buyer_previous_spec.rb b/spec/models/form/sales/pages/buyer_previous_spec.rb deleted file mode 100644 index d467df01f..000000000 --- a/spec/models/form/sales/pages/buyer_previous_spec.rb +++ /dev/null @@ -1,77 +0,0 @@ -require "rails_helper" - -RSpec.describe Form::Sales::Pages::BuyerPrevious, type: :model do - subject(:page) { described_class.new(page_id, page_definition, subsection, joint_purchase:) } - - let(:log) { build(:sales_log, :completed) } - - let(:page_id) { "example" } - let(:page_definition) { nil } - let(:subsection) { instance_double(Form::Subsection, depends_on: nil, enabled?: true, form:) } - let(:start_date_after_2024) { false } - let(:form) { instance_double(Form, start_date: Time.zone.local(2023, 4, 1), start_year_2024_or_later?: start_date_after_2024, depends_on_met: true) } - let(:joint_purchase) { false } - - it "has correct subsection" do - expect(page.subsection).to eq(subsection) - end - - it "has correct questions" do - expect(page.questions.map(&:id)).to eq(%w[soctenant]) - end - - it "has the correct id" do - expect(page.id).to eq("example") - end - - it "has the correct description" do - expect(page.description).to be_nil - end - - context "when sales is a joint purchase" do - let(:joint_purchase) { true } - - it "has the correct depends on" do - expect(page.depends_on).to eq([{ "joint_purchase?" => true, "soctenant_is_inferred?" => false }]) - end - end - - context "when sales is not a joint purchase" do - it "has the correct depends on" do - expect(page.depends_on).to eq([{ "joint_purchase?" => false, "soctenant_is_inferred?" => false }]) - end - end - - context "with 23/24 log" do - let(:start_date_after_2024) { false } - - it "has correct routed to" do - log.staircase = 1 - expect(page.routed_to?(log, nil)).to be(true) - end - end - - context "with 24/25 log" do - let(:start_date_after_2024) { true } - - it "has correct routed to when staircase is yes" do - log.staircase = 1 - expect(page.routed_to?(log, nil)).to be(false) - end - - it "has correct routed to when staircase is nil" do - log.staircase = nil - expect(page.routed_to?(log, nil)).to be(true) - end - - it "has correct routed to when staircase is no" do - log.staircase = 2 - expect(page.routed_to?(log, nil)).to be(true) - end - - it "has correct routed to when staircase is don't know" do - log.staircase = 3 - expect(page.routed_to?(log, nil)).to be(true) - end - end -end diff --git a/spec/models/form/sales/pages/previous_bedrooms_spec.rb b/spec/models/form/sales/pages/previous_bedrooms_spec.rb index a9f9f9337..02dfcb442 100644 --- a/spec/models/form/sales/pages/previous_bedrooms_spec.rb +++ b/spec/models/form/sales/pages/previous_bedrooms_spec.rb @@ -31,10 +31,10 @@ RSpec.describe Form::Sales::Pages::PreviousBedrooms, type: :model do { "soctenant" => 0, }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 2 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 2 }, + { "ownershipsch" => 1, "prevten" => 1 }, + { "ownershipsch" => 1, "prevten" => 2 }, + { "ownershipsch" => 1, "prevtenbuy2" => 1 }, + { "ownershipsch" => 1, "prevtenbuy2" => 2 }, ]) end end diff --git a/spec/models/form/sales/pages/previous_property_type_spec.rb b/spec/models/form/sales/pages/previous_property_type_spec.rb index 41a988ee7..83e4b30c1 100644 --- a/spec/models/form/sales/pages/previous_property_type_spec.rb +++ b/spec/models/form/sales/pages/previous_property_type_spec.rb @@ -31,10 +31,10 @@ RSpec.describe Form::Sales::Pages::PreviousPropertyType, type: :model do { "soctenant" => 0, }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 2 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 2 }, + { "ownershipsch" => 1, "prevten" => 1 }, + { "ownershipsch" => 1, "prevten" => 2 }, + { "ownershipsch" => 1, "prevtenbuy2" => 1 }, + { "ownershipsch" => 1, "prevtenbuy2" => 2 }, ]) end end diff --git a/spec/models/form/sales/pages/previous_tenure_spec.rb b/spec/models/form/sales/pages/previous_tenure_spec.rb index b5e8956cc..549aed378 100644 --- a/spec/models/form/sales/pages/previous_tenure_spec.rb +++ b/spec/models/form/sales/pages/previous_tenure_spec.rb @@ -31,10 +31,10 @@ RSpec.describe Form::Sales::Pages::PreviousTenure, type: :model do { "soctenant" => 0, }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevten" => 2 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 1 }, - { "soctenant_is_inferred?" => true, "ownershipsch" => 1, "prevtenbuy2" => 2 }, + { "ownershipsch" => 1, "prevten" => 1 }, + { "ownershipsch" => 1, "prevten" => 2 }, + { "ownershipsch" => 1, "prevtenbuy2" => 1 }, + { "ownershipsch" => 1, "prevtenbuy2" => 2 }, ]) end end diff --git a/spec/models/form/sales/questions/buyer_previous_spec.rb b/spec/models/form/sales/questions/buyer_previous_spec.rb deleted file mode 100644 index e312b4f4e..000000000 --- a/spec/models/form/sales/questions/buyer_previous_spec.rb +++ /dev/null @@ -1,68 +0,0 @@ -require "rails_helper" - -RSpec.describe Form::Sales::Questions::BuyerPrevious, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page, joint_purchase:) } - - 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, start_date: Time.zone.local(2023, 4, 1)) } - let(:joint_purchase) { true } - - before do - 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 - - it "has the correct id" do - expect(question.id).to eq("soctenant") - end - - it "has the correct type" do - expect(question.type).to eq("radio") - end - - it "has the correct displayed_answer_options" do - expect(question.displayed_answer_options(nil)).to eq({ - "1" => { "value" => "Yes" }, - "2" => { "value" => "No" }, - }) - end - - it "has the correct answer_options" do - expect(question.answer_options).to eq({ - "1" => { "value" => "Yes" }, - "2" => { "value" => "No" }, - "0" => { "value" => "Don’t know" }, - }) - end - - it "has correct conditional for" do - expect(question.conditional_for).to be_nil - end - - context "when form year is before 2024" do - before do - allow(form).to receive(:start_year_2024_or_later?).and_return(false) - end - - it "is not marked as derived" do - expect(question.derived?(nil)).to be false - end - end - - context "when form year is >= 2024" do - before do - allow(form).to receive(:start_year_2024_or_later?).and_return(true) - end - - it "is marked as derived" do - expect(question.derived?(nil)).to be true - end - end -end diff --git a/spec/models/form/sales/subsections/shared_ownership_initial_purchase_spec.rb b/spec/models/form/sales/subsections/shared_ownership_initial_purchase_spec.rb index 63dd73726..d6b592647 100644 --- a/spec/models/form/sales/subsections/shared_ownership_initial_purchase_spec.rb +++ b/spec/models/form/sales/subsections/shared_ownership_initial_purchase_spec.rb @@ -7,11 +7,10 @@ RSpec.describe Form::Sales::Subsections::SharedOwnershipInitialPurchase, type: : let(:subsection_id) { nil } let(:subsection_definition) { nil } - let(:start_year_2024_or_later?) { true } let(:start_year_2025_or_later?) { true } let(:start_year_2026_or_later?) { true } let(:start_date) { current_collection_start_date } - let(:form) { instance_double(Form, start_date:, start_year_2024_or_later?: start_year_2024_or_later?, start_year_2025_or_later?: start_year_2025_or_later?, start_year_2026_or_later?: start_year_2026_or_later?) } + let(:form) { instance_double(Form, start_date:, start_year_2025_or_later?: start_year_2025_or_later?, start_year_2026_or_later?: start_year_2026_or_later?) } let(:section) { instance_double(Form::Sales::Sections::SaleInformation) } before do @@ -35,8 +34,6 @@ RSpec.describe Form::Sales::Subsections::SharedOwnershipInitialPurchase, type: : living_before_purchase_shared_ownership handover_date handover_date_check - buyer_previous_joint_purchase - buyer_previous_not_joint_purchase previous_bedrooms previous_property_type shared_ownership_previous_tenure @@ -75,8 +72,6 @@ RSpec.describe Form::Sales::Subsections::SharedOwnershipInitialPurchase, type: : living_before_purchase_shared_ownership handover_date handover_date_check - buyer_previous_joint_purchase - buyer_previous_not_joint_purchase previous_bedrooms previous_property_type shared_ownership_previous_tenure @@ -114,8 +109,6 @@ RSpec.describe Form::Sales::Subsections::SharedOwnershipInitialPurchase, type: : living_before_purchase_shared_ownership handover_date handover_date_check - buyer_previous_joint_purchase - buyer_previous_not_joint_purchase previous_bedrooms previous_property_type shared_ownership_previous_tenure diff --git a/spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb b/spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb index 2887d2565..da2eb8303 100644 --- a/spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb +++ b/spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb @@ -31,8 +31,6 @@ RSpec.describe Form::Sales::Subsections::SharedOwnershipScheme, type: :model do handover_date handover_date_check la_nominations - buyer_previous_joint_purchase - buyer_previous_not_joint_purchase previous_bedrooms previous_property_type shared_ownership_previous_tenure