From cbe4453fba59b2f0ad6235b6cc4c699fee402597 Mon Sep 17 00:00:00 2001 From: Arthur Campbell <51094020+arfacamble@users.noreply.github.com> Date: Thu, 9 Mar 2023 16:11:54 +0000 Subject: [PATCH] CLDC-1819 previous tenure question options update (#1338) * add new options to prevten question, rename question, create test files for both previous tenure questions * reorder as per feedback from UX team * correct minor linting issue * create tests for pages * add option to renewal question as well after discussion with Rachel --- .../pages/previous_housing_situation.rb | 4 +- .../previous_housing_situation_renewal.rb | 4 +- .../lettings/questions/previous_tenure.rb | 41 +++++++++ ..._renewal.rb => previous_tenure_renewal.rb} | 3 +- app/models/form/lettings/questions/prevten.rb | 87 ------------------- ...previous_housing_situation_renewal_spec.rb | 31 +++++++ .../pages/previous_housing_situation_spec.rb | 31 +++++++ .../questions/previous_tenure_renewal_spec.rb | 44 ++++++++++ .../questions/previous_tenure_spec.rb | 66 ++++++++++++++ 9 files changed, 219 insertions(+), 92 deletions(-) create mode 100644 app/models/form/lettings/questions/previous_tenure.rb rename app/models/form/lettings/questions/{prevten_renewal.rb => previous_tenure_renewal.rb} (77%) delete mode 100644 app/models/form/lettings/questions/prevten.rb create mode 100644 spec/models/form/lettings/pages/previous_housing_situation_renewal_spec.rb create mode 100644 spec/models/form/lettings/pages/previous_housing_situation_spec.rb create mode 100644 spec/models/form/lettings/questions/previous_tenure_renewal_spec.rb create mode 100644 spec/models/form/lettings/questions/previous_tenure_spec.rb diff --git a/app/models/form/lettings/pages/previous_housing_situation.rb b/app/models/form/lettings/pages/previous_housing_situation.rb index 82bbda675..aafabe7f3 100644 --- a/app/models/form/lettings/pages/previous_housing_situation.rb +++ b/app/models/form/lettings/pages/previous_housing_situation.rb @@ -2,10 +2,10 @@ class Form::Lettings::Pages::PreviousHousingSituation < ::Form::Page def initialize(id, hsh, subsection) super @id = "previous_housing_situation" - @depends_on = [{ "renewal" => 0 }] + @depends_on = [{ "is_renewal?" => false }] end def questions - @questions ||= [Form::Lettings::Questions::Prevten.new(nil, nil, self)] + @questions ||= [Form::Lettings::Questions::PreviousTenure.new(nil, nil, self)] end end diff --git a/app/models/form/lettings/pages/previous_housing_situation_renewal.rb b/app/models/form/lettings/pages/previous_housing_situation_renewal.rb index 7f22150bf..317350911 100644 --- a/app/models/form/lettings/pages/previous_housing_situation_renewal.rb +++ b/app/models/form/lettings/pages/previous_housing_situation_renewal.rb @@ -2,10 +2,10 @@ class Form::Lettings::Pages::PreviousHousingSituationRenewal < ::Form::Page def initialize(id, hsh, subsection) super @id = "previous_housing_situation_renewal" - @depends_on = [{ "renewal" => 1, "needstype" => 2 }] + @depends_on = [{ "is_renewal?" => true, "is_supported_housing?" => true }] end def questions - @questions ||= [Form::Lettings::Questions::PrevtenRenewal.new(nil, nil, self)] + @questions ||= [Form::Lettings::Questions::PreviousTenureRenewal.new(nil, nil, self)] end end diff --git a/app/models/form/lettings/questions/previous_tenure.rb b/app/models/form/lettings/questions/previous_tenure.rb new file mode 100644 index 000000000..c100c3ddd --- /dev/null +++ b/app/models/form/lettings/questions/previous_tenure.rb @@ -0,0 +1,41 @@ +class Form::Lettings::Questions::PreviousTenure < ::Form::Question + def initialize(id, hsh, page) + super + @id = "prevten" + @check_answer_label = "Where was the household immediately before this letting?" + @header = "Where was the household immediately before this letting?" + @type = "radio" + @check_answers_card_number = 0 + @hint_text = "This is where the household was the night before they moved." + @answer_options = ANSWER_OPTIONS + end + + ANSWER_OPTIONS = { + "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" }, + "34" => { "value" => "Specialist retirement housing" }, + "36" => { "value" => "Sheltered housing for adults aged under 55 years" }, + "35" => { "value" => "Extra care housing" }, + "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" }, + "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 +end diff --git a/app/models/form/lettings/questions/prevten_renewal.rb b/app/models/form/lettings/questions/previous_tenure_renewal.rb similarity index 77% rename from app/models/form/lettings/questions/prevten_renewal.rb rename to app/models/form/lettings/questions/previous_tenure_renewal.rb index e8516e85e..6e2722b4f 100644 --- a/app/models/form/lettings/questions/prevten_renewal.rb +++ b/app/models/form/lettings/questions/previous_tenure_renewal.rb @@ -1,4 +1,4 @@ -class Form::Lettings::Questions::PrevtenRenewal < ::Form::Question +class Form::Lettings::Questions::PreviousTenureRenewal < ::Form::Question def initialize(id, hsh, page) super @id = "prevten" @@ -12,6 +12,7 @@ class Form::Lettings::Questions::PrevtenRenewal < ::Form::Question ANSWER_OPTIONS = { "34" => { "value" => "Specialist retirement housing" }, + "36" => { "value" => "Sheltered housing for adults aged under 55 years" }, "35" => { "value" => "Extra care housing" }, "6" => { "value" => "Other supported housing" }, }.freeze diff --git a/app/models/form/lettings/questions/prevten.rb b/app/models/form/lettings/questions/prevten.rb deleted file mode 100644 index 3d77f24bb..000000000 --- a/app/models/form/lettings/questions/prevten.rb +++ /dev/null @@ -1,87 +0,0 @@ -class Form::Lettings::Questions::Prevten < ::Form::Question - def initialize(id, hsh, page) - super - @id = "prevten" - @check_answer_label = "Where was the household immediately before this letting?" - @header = "Where was the household immediately before this letting?" - @type = "radio" - @check_answers_card_number = 0 - @hint_text = "This is where the household was the night before they moved." - @answer_options = ANSWER_OPTIONS - end - - ANSWER_OPTIONS = { - "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", - }, - "34" => { - "value" => "Specialist retirement housing", - }, - "35" => { - "value" => "Extra care housing", - }, - "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", - }, - "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", - }, - "25" => { - "value" => "Any other accommodation", - }, - }.freeze -end diff --git a/spec/models/form/lettings/pages/previous_housing_situation_renewal_spec.rb b/spec/models/form/lettings/pages/previous_housing_situation_renewal_spec.rb new file mode 100644 index 000000000..4bdc2d8a3 --- /dev/null +++ b/spec/models/form/lettings/pages/previous_housing_situation_renewal_spec.rb @@ -0,0 +1,31 @@ +require "rails_helper" + +RSpec.describe Form::Lettings::Pages::PreviousHousingSituationRenewal, type: :model do + subject(:page) { described_class.new(nil, nil, subsection) } + + let(:subsection) { instance_double(Form::Subsection) } + + 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[prevten]) + end + + it "has the correct id" do + expect(page.id).to eq("previous_housing_situation_renewal") + end + + it "has the correct header" do + expect(page.header).to be_nil + end + + it "has the correct description" do + expect(page.description).to be_nil + end + + it "has the correct depends_on" do + expect(page.depends_on).to eq([{ "is_renewal?" => true, "is_supported_housing?" => true }]) + end +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 new file mode 100644 index 000000000..c891996c9 --- /dev/null +++ b/spec/models/form/lettings/pages/previous_housing_situation_spec.rb @@ -0,0 +1,31 @@ +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) } + + 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[prevten]) + end + + it "has the correct id" do + expect(page.id).to eq("previous_housing_situation") + end + + it "has the correct header" do + expect(page.header).to be_nil + end + + it "has the correct description" do + expect(page.description).to be_nil + end + + it "has the correct depends_on" do + expect(page.depends_on).to eq([{ "is_renewal?" => false }]) + end +end diff --git a/spec/models/form/lettings/questions/previous_tenure_renewal_spec.rb b/spec/models/form/lettings/questions/previous_tenure_renewal_spec.rb new file mode 100644 index 000000000..91f1ec158 --- /dev/null +++ b/spec/models/form/lettings/questions/previous_tenure_renewal_spec.rb @@ -0,0 +1,44 @@ +require "rails_helper" + +RSpec.describe Form::Lettings::Questions::PreviousTenureRenewal, type: :model do + subject(:question) { described_class.new(nil, nil, page) } + + let(:page) { instance_double(Form::Page) } + + it "has the correct id" do + expect(question.id).to eq("prevten") + end + + it "has the correct header" do + expect(question.header).to eq("Where was the household immediately before this letting?") + end + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Where was the household immediately before this letting?") + end + + it "has the correct type" do + expect(question.type).to eq("radio") + end + + it "is not marked as derived" do + expect(question.derived?).to be false + end + + it "has the correct hint" do + expect(question.hint_text).to eq("") + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "34" => { "value" => "Specialist retirement housing" }, + "35" => { "value" => "Extra care housing" }, + "36" => { "value" => "Sheltered housing for adults aged under 55 years" }, + "6" => { "value" => "Other supported housing" }, + }) + end +end diff --git a/spec/models/form/lettings/questions/previous_tenure_spec.rb b/spec/models/form/lettings/questions/previous_tenure_spec.rb new file mode 100644 index 000000000..4b106601e --- /dev/null +++ b/spec/models/form/lettings/questions/previous_tenure_spec.rb @@ -0,0 +1,66 @@ +require "rails_helper" + +RSpec.describe Form::Lettings::Questions::PreviousTenure, type: :model do + subject(:question) { described_class.new(nil, nil, page) } + + let(:page) { instance_double(Form::Page) } + + it "has the correct id" do + expect(question.id).to eq("prevten") + end + + it "has the correct header" do + expect(question.header).to eq("Where was the household immediately before this letting?") + end + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Where was the household immediately before this letting?") + end + + it "has the correct type" do + expect(question.type).to eq("radio") + end + + it "is not marked as derived" do + expect(question.derived?).to be false + end + + it "has the correct hint" do + expect(question.hint_text).to eq("This is where the household was the night before they moved.") + end + + 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" }, + "34" => { "value" => "Specialist retirement housing" }, + "35" => { "value" => "Extra care housing" }, + "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" }, + "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" }, + "36" => { "value" => "Sheltered housing for adults aged under 55 years" }, + "37" => { "value" => "Host family or similar refugee accommodation" }, + "25" => { "value" => "Any other accommodation" }, + }) + end +end