diff --git a/app/models/form/lettings/questions/previous_tenure.rb b/app/models/form/lettings/questions/previous_tenure.rb index bf21f5b6d..47647b03c 100644 --- a/app/models/form/lettings/questions/previous_tenure.rb +++ b/app/models/form/lettings/questions/previous_tenure.rb @@ -5,7 +5,13 @@ class Form::Lettings::Questions::PreviousTenure < ::Form::Question @copy_key = "lettings.household_situation.prevten.not_renewal" @type = "radio" @check_answers_card_number = 0 - @answer_options = form.start_year_2025_or_later? ? ANSWER_OPTIONS_2025 : ANSWER_OPTIONS + @answer_options = if form.start_year_2026_or_later? + ANSWER_OPTIONS_2026_OR_LATER + elsif form.start_date.year == 2025 + ANSWER_OPTIONS_2025 + else + ANSWER_OPTIONS + end @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] end @@ -67,5 +73,35 @@ class Form::Lettings::Questions::PreviousTenure < ::Form::Question "25" => { "value" => "Any other accommodation" }, }.freeze + ANSWER_OPTIONS_2026_OR_LATER = { + "30" => { "value" => "Fixed-term local authority general needs tenancy" }, + "32" => { "value" => "Fixed-term private registered provider (PRP) general needs tenancy" }, + "31" => { "value" => "Lifetime local authority general needs tenancy" }, + "33" => { "value" => "Lifetime private registered provider (PRP) general needs tenancy" }, + "40" => { "value" => "Other general needs" }, + "35" => { "value" => "Extra care housing" }, + "38" => { "value" => "Older people’s housing for tenants with low support needs" }, + "6" => { "value" => "Other supported housing" }, + "3" => { "value" => "Private sector tenancy" }, + "27" => { "value" => "Owner occupation (low-cost home ownership)" }, + "26" => { "value" => "Owner occupation (private)" }, + "28" => { "value" => "Living with friends or family (long-term)" }, + "39" => { "value" => "Sofa surfing (moving regularly between family or friends, no permanent bed)" }, + "14" => { "value" => "Bed and breakfast" }, + "7" => { "value" => "Direct access hostel" }, + "10" => { "value" => "Hospital" }, + "29" => { "value" => "Prison or approved probation hostel" }, + "19" => { "value" => "Rough sleeping" }, + "18" => { "value" => "Any other temporary accommodation" }, + "13" => { "value" => "Children’s home or foster care" }, + "24" => { "value" => "Home Office Asylum Support" }, + "37" => { "value" => "Host family or similar refugee accommodation" }, + "23" => { "value" => "Mobile home or caravan" }, + "21" => { "value" => "Refuge" }, + "9" => { "value" => "Residential care home" }, + "4" => { "value" => "Tied housing or rented with job" }, + "25" => { "value" => "Any other accommodation" }, + }.freeze + QUESTION_NUMBER_FROM_YEAR = { 2023 => 78, 2024 => 77 }.freeze end diff --git a/spec/models/form/lettings/pages/previous_housing_situation_spec.rb b/spec/models/form/lettings/pages/previous_housing_situation_spec.rb index 907c8671e..811da5bbd 100644 --- a/spec/models/form/lettings/pages/previous_housing_situation_spec.rb +++ b/spec/models/form/lettings/pages/previous_housing_situation_spec.rb @@ -3,7 +3,7 @@ require "rails_helper" RSpec.describe Form::Lettings::Pages::PreviousHousingSituation, type: :model do subject(:page) { described_class.new(nil, nil, subsection) } - let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2024, 4, 1), start_year_2025_or_later?: false)) } + let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2024, 4, 1), start_year_2025_or_later?: false, start_year_2026_or_later?: false)) } it "has correct subsection" do expect(page.subsection).to eq(subsection) diff --git a/spec/models/form/lettings/questions/previous_tenure_spec.rb b/spec/models/form/lettings/questions/previous_tenure_spec.rb index 4523848b2..af891e568 100644 --- a/spec/models/form/lettings/questions/previous_tenure_spec.rb +++ b/spec/models/form/lettings/questions/previous_tenure_spec.rb @@ -1,9 +1,14 @@ require "rails_helper" RSpec.describe Form::Lettings::Questions::PreviousTenure, type: :model do + include CollectionTimeHelper + subject(:question) { described_class.new(nil, nil, page) } - let(:form) { instance_double(Form, start_date: Time.zone.local(2023, 4, 1), start_year_2025_or_later?: false) } + let(:year) { current_collection_start_year } + let(:start_year_2025_or_later?) { false } + let(:start_year_2026_or_later?) { false } + let(:form) { instance_double(Form, start_date: collection_start_date_for_year(year), start_year_2025_or_later?: start_year_2025_or_later?, start_year_2026_or_later?: start_year_2026_or_later?) } let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, form:)) } it "has the correct id" do @@ -22,7 +27,9 @@ RSpec.describe Form::Lettings::Questions::PreviousTenure, type: :model do expect(question.derived?(nil)).to be false end - context "with start year before 2025" do + context "with 2024 logs" do + let(:year) { 2024 } + it "has the correct answer_options" do expect(question.answer_options).to eq({ "30" => { "value" => "Fixed-term local authority general needs tenancy" }, @@ -56,7 +63,45 @@ RSpec.describe Form::Lettings::Questions::PreviousTenure, type: :model do end context "with 2025 logs" do - let(:form) { instance_double(Form, start_date: Time.zone.local(2025, 4, 1), start_year_2025_or_later?: true) } + let(:year) { 2025 } + let(:start_year_2025_or_later?) { true } + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "30" => { "value" => "Fixed-term local authority general needs tenancy" }, + "32" => { "value" => "Fixed-term private registered provider (PRP) general needs tenancy" }, + "31" => { "value" => "Lifetime local authority general needs tenancy" }, + "33" => { "value" => "Lifetime private registered provider (PRP) general needs tenancy" }, + "35" => { "value" => "Extra care housing" }, + "38" => { "value" => "Older people’s housing for tenants with low support needs" }, + "6" => { "value" => "Other supported housing" }, + "3" => { "value" => "Private sector tenancy" }, + "27" => { "value" => "Owner occupation (low-cost home ownership)" }, + "26" => { "value" => "Owner occupation (private)" }, + "28" => { "value" => "Living with friends or family (long-term)" }, + "39" => { "value" => "Sofa surfing (moving regularly between family or friends, no permanent bed)" }, + "14" => { "value" => "Bed and breakfast" }, + "7" => { "value" => "Direct access hostel" }, + "10" => { "value" => "Hospital" }, + "29" => { "value" => "Prison or approved probation hostel" }, + "19" => { "value" => "Rough sleeping" }, + "18" => { "value" => "Any other temporary accommodation" }, + "13" => { "value" => "Children’s home or foster care" }, + "24" => { "value" => "Home Office Asylum Support" }, + "23" => { "value" => "Mobile home or caravan" }, + "21" => { "value" => "Refuge" }, + "9" => { "value" => "Residential care home" }, + "4" => { "value" => "Tied housing or rented with job" }, + "37" => { "value" => "Host family or similar refugee accommodation" }, + "25" => { "value" => "Any other accommodation" }, + }) + end + end + + context "with 2026 logs" do + let(:year) { 2026 } + let(:start_year_2025_or_later?) { true } + let(:start_year_2026_or_later?) { true } it "has the correct answer_options" do expect(question.answer_options).to eq({ @@ -64,6 +109,7 @@ RSpec.describe Form::Lettings::Questions::PreviousTenure, type: :model do "32" => { "value" => "Fixed-term private registered provider (PRP) general needs tenancy" }, "31" => { "value" => "Lifetime local authority general needs tenancy" }, "33" => { "value" => "Lifetime private registered provider (PRP) general needs tenancy" }, + "40" => { "value" => "Other general needs" }, "35" => { "value" => "Extra care housing" }, "38" => { "value" => "Older people’s housing for tenants with low support needs" }, "6" => { "value" => "Other supported housing" },