Browse Source

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
CLDC-1917-allow-23-24-form^2
Arthur Campbell 2 years ago committed by GitHub
parent
commit
cbe4453fba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      app/models/form/lettings/pages/previous_housing_situation.rb
  2. 4
      app/models/form/lettings/pages/previous_housing_situation_renewal.rb
  3. 41
      app/models/form/lettings/questions/previous_tenure.rb
  4. 3
      app/models/form/lettings/questions/previous_tenure_renewal.rb
  5. 87
      app/models/form/lettings/questions/prevten.rb
  6. 31
      spec/models/form/lettings/pages/previous_housing_situation_renewal_spec.rb
  7. 31
      spec/models/form/lettings/pages/previous_housing_situation_spec.rb
  8. 44
      spec/models/form/lettings/questions/previous_tenure_renewal_spec.rb
  9. 66
      spec/models/form/lettings/questions/previous_tenure_spec.rb

4
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

4
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

41
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

3
app/models/form/lettings/questions/prevten_renewal.rb → 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

87
app/models/form/lettings/questions/prevten.rb

@ -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

31
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

31
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

44
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

66
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
Loading…
Cancel
Save