Browse Source

Merge 003844e198 into 56f226c9c3

pull/3147/merge
Samuel Young 2 days ago committed by GitHub
parent
commit
a4b56071ea
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 24
      app/models/form/lettings/pages/working_situation_illness_check.rb
  2. 23
      app/models/form/lettings/pages/working_situation_illness_check_lead.rb
  3. 24
      app/models/form/lettings/pages/working_situation_illness_check_person.rb
  4. 13
      app/models/form/lettings/questions/working_situation_illness_check.rb
  5. 8
      app/models/form/lettings/subsections/household_characteristics.rb
  6. 1
      app/models/form/lettings/subsections/household_needs.rb
  7. 21
      app/models/validations/soft_validations.rb
  8. 9
      config/locales/forms/2026/lettings/soft_validations.en.yml
  9. 5
      db/migrate/20260107171455_add_working_situation_illness_check_to_lettings_logs.rb
  10. 8
      db/schema.rb
  11. 6
      spec/fixtures/files/lettings_log_csv_export_codes_26.csv
  12. 6
      spec/fixtures/files/lettings_log_csv_export_labels_26.csv
  13. 1
      spec/fixtures/variable_definitions/lettings_download_26_27.csv
  14. 4
      spec/lib/tasks/log_variable_definitions_spec.rb
  15. 49
      spec/models/form/lettings/questions/working_situation_illness_check_spec.rb
  16. 56
      spec/models/form/lettings/subsections/household_characteristics_spec.rb
  17. 66
      spec/models/form/lettings/subsections/household_needs_spec.rb
  18. 38
      spec/models/validations/soft_validations_spec.rb
  19. 2
      spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb

24
app/models/form/lettings/pages/working_situation_illness_check.rb

@ -0,0 +1,24 @@
class Form::Lettings::Pages::WorkingSituationIllnessCheck < ::Form::Page
def initialize(id, hsh, subsection)
super(id, hsh, subsection)
@id = "working_situation_long_term_illness_check"
@copy_key = "lettings.soft_validations.working_situation_illness_check"
@depends_on = [{ "at_least_one_working_situation_is_sickness_and_household_sickness_is_no?" => true }]
@title_text = {
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text",
"arguments" => [],
}
@informative_text = {
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.informative_text",
"arguments" => [],
}
end
def questions
@questions ||= [Form::Lettings::Questions::WorkingSituationIllnessCheck.new(nil, nil, self, person_index: 0)]
end
def interruption_screen_question_ids
%w[illness ecstat1 ecstat2 ecstat3 ecstat4 ecstat5 ecstat6 ecstat7 ecstat8]
end
end

23
app/models/form/lettings/pages/working_situation_illness_check_lead.rb

@ -0,0 +1,23 @@
class Form::Lettings::Pages::WorkingSituationIllnessCheckLead < ::Form::Page
def initialize(id, hsh, subsection)
super(id, hsh, subsection)
@copy_key = "lettings.soft_validations.working_situation_illness_check"
@depends_on = [{ "at_least_one_working_situation_is_sickness_and_household_sickness_is_no?" => true }]
@title_text = {
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text",
"arguments" => [],
}
@informative_text = {
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.informative_text",
"arguments" => [],
}
end
def questions
@questions ||= [Form::Lettings::Questions::WorkingSituationIllnessCheck.new(nil, nil, self, person_index: 1)]
end
def interruption_screen_question_ids
%w[illness ecstat1 ecstat2 ecstat3 ecstat4 ecstat5 ecstat6 ecstat7 ecstat8]
end
end

24
app/models/form/lettings/pages/working_situation_illness_check_person.rb

@ -0,0 +1,24 @@
class Form::Lettings::Pages::WorkingSituationIllnessCheckPerson < ::Form::Page
def initialize(id, hsh, subsection, person_index:)
super(id, hsh, subsection)
@copy_key = "lettings.soft_validations.working_situation_illness_check"
@depends_on = [{ "at_least_one_working_situation_is_sickness_and_household_sickness_is_no?" => true, "details_known_#{person_index}" => 0 }]
@title_text = {
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.title_text",
"arguments" => [],
}
@informative_text = {
"translation" => "forms.#{form.start_date.year}.#{@copy_key}.informative_text",
"arguments" => [],
}
@person_index = person_index
end
def questions
@questions ||= [Form::Lettings::Questions::WorkingSituationIllnessCheck.new(nil, nil, self, person_index: @person_index)]
end
def interruption_screen_question_ids
%w[illness ecstat1 ecstat2 ecstat3 ecstat4 ecstat5 ecstat6 ecstat7 ecstat8]
end
end

13
app/models/form/lettings/questions/working_situation_illness_check.rb

@ -0,0 +1,13 @@
class Form::Lettings::Questions::WorkingSituationIllnessCheck < ::Form::Question
def initialize(id, hsh, page, person_index:)
super(id, hsh, page)
@id = "working_situation_illness_check"
@copy_key = page.copy_key
@type = "interruption_screen"
@check_answers_card_number = person_index
@answer_options = ANSWER_OPTIONS
@hidden_in_check_answers = { "depends_on" => [{ "working_situation_illness_check" => 0 }, { "working_situation_illness_check" => 1 }] }
end
ANSWER_OPTIONS = { "0" => { "value" => "Yes" }, "1" => { "value" => "No" } }.freeze
end

8
app/models/form/lettings/subsections/household_characteristics.rb

@ -31,6 +31,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection
Form::Lettings::Pages::LeadTenantWorkingSituation.new(nil, nil, self),
Form::Lettings::Pages::LeadTenantUnderRetirementValueCheck.new("working_situation_lead_tenant_under_retirement_value_check", nil, self),
Form::Lettings::Pages::LeadTenantOverRetirementValueCheck.new("working_situation_lead_tenant_over_retirement_value_check", nil, self),
(Form::Lettings::Pages::WorkingSituationIllnessCheckLead.new("working_situation_lead_tenant_long_term_illness_check", nil, self) if form.start_year_2026_or_later?),
Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 2),
relationship_question(person_index: 2),
(Form::Lettings::Pages::PartnerUnder16ValueCheck.new("relationship_2_partner_under_16_value_check", nil, self, person_index: 2) if form.start_year_2024_or_later?),
@ -51,6 +52,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection
Form::Lettings::Pages::PersonWorkingSituation.new(nil, nil, self, person_index: 2),
Form::Lettings::Pages::PersonUnderRetirementValueCheck.new("working_situation_2_under_retirement_value_check", nil, self, person_index: 2),
Form::Lettings::Pages::PersonOverRetirementValueCheck.new("working_situation_2_over_retirement_value_check", nil, self, person_index: 2),
(Form::Lettings::Pages::WorkingSituationIllnessCheckPerson.new("working_situation_2_long_term_illness_check", nil, self, person_index: 2) if form.start_year_2026_or_later?),
Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 3),
relationship_question(person_index: 3),
(Form::Lettings::Pages::PartnerUnder16ValueCheck.new("relationship_3_partner_under_16_value_check", nil, self, person_index: 3) if form.start_year_2024_or_later?),
@ -71,6 +73,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection
Form::Lettings::Pages::PersonWorkingSituation.new(nil, nil, self, person_index: 3),
Form::Lettings::Pages::PersonUnderRetirementValueCheck.new("working_situation_3_under_retirement_value_check", nil, self, person_index: 3),
Form::Lettings::Pages::PersonOverRetirementValueCheck.new("working_situation_3_over_retirement_value_check", nil, self, person_index: 3),
(Form::Lettings::Pages::WorkingSituationIllnessCheckPerson.new("working_situation_3_long_term_illness_check", nil, self, person_index: 3) if form.start_year_2026_or_later?),
Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 4),
relationship_question(person_index: 4),
(Form::Lettings::Pages::PartnerUnder16ValueCheck.new("relationship_4_partner_under_16_value_check", nil, self, person_index: 4) if form.start_year_2024_or_later?),
@ -91,6 +94,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection
Form::Lettings::Pages::PersonWorkingSituation.new(nil, nil, self, person_index: 4),
Form::Lettings::Pages::PersonUnderRetirementValueCheck.new("working_situation_4_under_retirement_value_check", nil, self, person_index: 4),
Form::Lettings::Pages::PersonOverRetirementValueCheck.new("working_situation_4_over_retirement_value_check", nil, self, person_index: 4),
(Form::Lettings::Pages::WorkingSituationIllnessCheckPerson.new("working_situation_4_long_term_illness_check", nil, self, person_index: 4) if form.start_year_2026_or_later?),
Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 5),
relationship_question(person_index: 5),
(Form::Lettings::Pages::PartnerUnder16ValueCheck.new("relationship_5_partner_under_16_value_check", nil, self, person_index: 5) if form.start_year_2024_or_later?),
@ -111,6 +115,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection
Form::Lettings::Pages::PersonWorkingSituation.new(nil, nil, self, person_index: 5),
Form::Lettings::Pages::PersonUnderRetirementValueCheck.new("working_situation_5_under_retirement_value_check", nil, self, person_index: 5),
Form::Lettings::Pages::PersonOverRetirementValueCheck.new("working_situation_5_over_retirement_value_check", nil, self, person_index: 5),
(Form::Lettings::Pages::WorkingSituationIllnessCheckPerson.new("working_situation_5_long_term_illness_check", nil, self, person_index: 5) if form.start_year_2026_or_later?),
Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 6),
relationship_question(person_index: 6),
(Form::Lettings::Pages::PartnerUnder16ValueCheck.new("relationship_6_partner_under_16_value_check", nil, self, person_index: 6) if form.start_year_2024_or_later?),
@ -131,6 +136,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection
Form::Lettings::Pages::PersonWorkingSituation.new(nil, nil, self, person_index: 6),
Form::Lettings::Pages::PersonUnderRetirementValueCheck.new("working_situation_6_under_retirement_value_check", nil, self, person_index: 6),
Form::Lettings::Pages::PersonOverRetirementValueCheck.new("working_situation_6_over_retirement_value_check", nil, self, person_index: 6),
(Form::Lettings::Pages::WorkingSituationIllnessCheckPerson.new("working_situation_6_long_term_illness_check", nil, self, person_index: 6) if form.start_year_2026_or_later?),
Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 7),
relationship_question(person_index: 7),
(Form::Lettings::Pages::PartnerUnder16ValueCheck.new("relationship_7_partner_under_16_value_check", nil, self, person_index: 7) if form.start_year_2024_or_later?),
@ -151,6 +157,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection
Form::Lettings::Pages::PersonWorkingSituation.new(nil, nil, self, person_index: 7),
Form::Lettings::Pages::PersonUnderRetirementValueCheck.new("working_situation_7_under_retirement_value_check", nil, self, person_index: 7),
Form::Lettings::Pages::PersonOverRetirementValueCheck.new("working_situation_7_over_retirement_value_check", nil, self, person_index: 7),
(Form::Lettings::Pages::WorkingSituationIllnessCheckPerson.new("working_situation_7_long_term_illness_check", nil, self, person_index: 7) if form.start_year_2026_or_later?),
Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 8),
relationship_question(person_index: 8),
(Form::Lettings::Pages::PartnerUnder16ValueCheck.new("relationship_8_partner_under_16_value_check", nil, self, person_index: 8) if form.start_year_2024_or_later?),
@ -171,6 +178,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection
Form::Lettings::Pages::PersonWorkingSituation.new(nil, nil, self, person_index: 8),
Form::Lettings::Pages::PersonUnderRetirementValueCheck.new("working_situation_8_under_retirement_value_check", nil, self, person_index: 8),
Form::Lettings::Pages::PersonOverRetirementValueCheck.new("working_situation_8_over_retirement_value_check", nil, self, person_index: 8),
(Form::Lettings::Pages::WorkingSituationIllnessCheckPerson.new("working_situation_8_long_term_illness_check", nil, self, person_index: 8) if form.start_year_2026_or_later?),
].compact
end

1
app/models/form/lettings/subsections/household_needs.rb

@ -17,6 +17,7 @@ class Form::Lettings::Subsections::HouseholdNeeds < ::Form::Subsection
Form::Lettings::Pages::AccessNeedsExist.new("access_needs_exist", nil, self),
Form::Lettings::Pages::TypeOfAccessNeeds.new(nil, nil, self),
Form::Lettings::Pages::HealthConditions.new("health_conditions", nil, self),
(Form::Lettings::Pages::WorkingSituationIllnessCheck.new(nil, nil, self) if form.start_year_2026_or_later?),
Form::Lettings::Pages::HealthConditionEffects.new(nil, nil, self),
].compact
end

21
app/models/validations/soft_validations.rb

@ -215,6 +215,10 @@ module Validations::SoftValidations
(2..max_person_with_details).many? { |n| public_send("relat#{n}") == "P" }
end
def at_least_one_working_situation_is_sickness_and_household_sickness_is_no?
at_least_one_person_working_situation_is_illness? && no_one_in_household_with_illness?
end
private
def details_known_or_lead_tenant?(tenant_number)
@ -282,4 +286,21 @@ private
age < 16 && relationship == "P"
end
def at_least_one_person_working_situation_is_illness?
return unless hhmemb
person_count = hhmemb || 8
(1..person_count).any? do |n|
ecstat = public_send("ecstat#{n}")
ecstat == 8
end
end
def no_one_in_household_with_illness?
return unless illness
illness == 2
end
end

9
config/locales/forms/2026/lettings/soft_validations.en.yml

@ -155,3 +155,12 @@ en:
question_text: "We could not find an address that matches your search. You can search again or continue to enter the address manually."
title_text: "No address found"
informative_text: "We could not find an address that matches your search. You can search again or continue to enter the address manually."
working_situation_illness_check:
page_header: ""
check_answer_label: "Working situation illness confirmation"
check_answer_prompt: "Confirm 'unable to work due to illness' working situation and long-term illness warning"
hint_text: ""
question_text: "Are you sure this is correct?"
title_text: "You have said that at least one person's situation is 'Unable to work because of long-term sickness or disability'."
informative_text: "You also told us there is no-one in the household with a long-lasting health condition."

5
db/migrate/20260107171455_add_working_situation_illness_check_to_lettings_logs.rb

@ -0,0 +1,5 @@
class AddWorkingSituationIllnessCheckToLettingsLogs < ActiveRecord::Migration[7.2]
def change
add_column :lettings_logs, :working_situation_illness_check, :integer
end
end

8
db/schema.rb

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.2].define(version: 2025_04_16_111741) do
ActiveRecord::Schema[7.2].define(version: 2026_01_07_171455) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -373,8 +373,9 @@ ActiveRecord::Schema[7.2].define(version: 2025_04_16_111741) do
t.integer "partner_under_16_value_check"
t.integer "multiple_partners_value_check"
t.bigint "created_by_id"
t.integer "referral_type"
t.boolean "manual_address_entry_selected", default: false
t.integer "referral_type"
t.integer "working_situation_illness_check"
t.index ["assigned_to_id"], name: "index_lettings_logs_on_assigned_to_id"
t.index ["bulk_upload_id"], name: "index_lettings_logs_on_bulk_upload_id"
t.index ["created_by_id"], name: "index_lettings_logs_on_created_by_id"
@ -504,7 +505,7 @@ ActiveRecord::Schema[7.2].define(version: 2025_04_16_111741) do
t.date "discarded_at"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["organisation_id", "startdate"], name: "index_org_name_changes_on_org_id_and_startdate", unique: true
t.index ["organisation_id", "startdate", "discarded_at"], name: "index_org_name_changes_on_org_id_startdate_discarded_at", unique: true
t.index ["organisation_id"], name: "index_organisation_name_changes_on_organisation_id"
end
@ -894,6 +895,7 @@ ActiveRecord::Schema[7.2].define(version: 2025_04_16_111741) do
add_foreign_key "local_authority_links", "local_authorities"
add_foreign_key "local_authority_links", "local_authorities", column: "linked_local_authority_id"
add_foreign_key "locations", "schemes"
add_foreign_key "organisation_name_changes", "organisations"
add_foreign_key "organisation_relationships", "organisations", column: "child_organisation_id"
add_foreign_key "organisation_relationships", "organisations", column: "parent_organisation_id"
add_foreign_key "organisations", "organisations", column: "absorbing_organisation_id"

6
spec/fixtures/files/lettings_log_csv_export_codes_26.csv vendored

File diff suppressed because one or more lines are too long

6
spec/fixtures/files/lettings_log_csv_export_labels_26.csv vendored

File diff suppressed because one or more lines are too long

1
spec/fixtures/variable_definitions/lettings_download_26_27.csv vendored

@ -0,0 +1 @@
working_situation_illness_check,The following soft validation was confirmed: You have said that at least one person's situation is 'Unable to work because of long-term sickness or disability'.
1 working_situation_illness_check The following soft validation was confirmed: You have said that at least one person's situation is 'Unable to work because of long-term sickness or disability'.

4
spec/lib/tasks/log_variable_definitions_spec.rb

@ -14,7 +14,7 @@ RSpec.describe "log_variable_definitions" do
end
it "adds CsvVariableDefinition records from each file in the specified directory" do
expect { task.invoke(path) }.to change(CsvVariableDefinition, :count).by(416)
expect { task.invoke(path) }.to change(CsvVariableDefinition, :count).by(417)
end
it "handles an empty directory without errors" do
@ -34,7 +34,7 @@ RSpec.describe "log_variable_definitions" do
task.invoke(path)
second_run_count = CsvVariableDefinition.count
expect(first_run_count).to eq(initial_count + 416)
expect(first_run_count).to eq(initial_count + 417)
expect(second_run_count).to eq(first_run_count)
end
end

49
spec/models/form/lettings/questions/working_situation_illness_check_spec.rb

@ -0,0 +1,49 @@
require "rails_helper"
RSpec.describe Form::Lettings::Questions::WorkingSituationIllnessCheck, type: :model do
subject(:question) { described_class.new(question_id, question_definition, page, person_index: 1) }
let(:question_id) { nil }
let(:question_definition) { nil }
let(:page) { instance_double(Form::Page, copy_key: nil) }
it "has correct page" do
expect(question.page).to eq(page)
end
it "has the correct id" do
expect(question.id).to eq("working_situation_illness_check")
end
it "has the correct type" do
expect(question.type).to eq("interruption_screen")
end
it "is not marked as derived" do
expect(question.derived?(nil)).to be false
end
it "has a correct check_answers_card_number" do
expect(question.check_answers_card_number).to eq(1)
end
it "has the correct answer_options" do
expect(question.answer_options).to eq({
"0" => { "value" => "Yes" },
"1" => { "value" => "No" },
})
end
it "has the correct hidden_in_check_answers" do
expect(question.hidden_in_check_answers).to eq({
"depends_on" => [
{
"working_situation_illness_check" => 0,
},
{
"working_situation_illness_check" => 1,
},
],
})
end
end

56
spec/models/form/lettings/subsections/household_characteristics_spec.rb

@ -10,22 +10,23 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
before do
allow(section).to receive(:form).and_return(form)
allow(form).to receive(:start_year_2024_or_later?).and_return(false)
allow(form).to receive(:start_year_2025_or_later?).and_return(false)
allow(form).to receive(:start_year_2026_or_later?).and_return(false)
end
it "has correct section" do
expect(household_characteristics.section).to eq(section)
end
context "with start year before 2024" do
context "with start year >= 2024", metadata: { year: 24 } do
before do
allow(form).to receive(:start_year_2024_or_later?).and_return(false)
allow(form).to receive(:start_year_2024_or_later?).and_return(true)
end
it "has correct pages" do
expect(household_characteristics.pages.map(&:id)).to eq(
%w[
declaration
household_members
no_females_pregnant_household_lead_hhmemb_value_check
females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check
@ -50,11 +51,14 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_lead_tenant_over_retirement_value_check
person_2_known
person_2_relationship_to_lead
relationship_2_partner_under_16_value_check
relationship_2_multiple_partners_value_check
person_2_age
no_females_pregnant_household_person_2_age_value_check
females_in_soft_age_range_in_pregnant_household_person_2_age_value_check
age_2_under_retirement_value_check
age_2_over_retirement_value_check
age_2_partner_under_16_value_check
person_2_gender_identity
no_females_pregnant_household_person_2_value_check
females_in_soft_age_range_in_pregnant_household_person_2_value_check
@ -64,11 +68,14 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_2_over_retirement_value_check
person_3_known
person_3_relationship_to_lead
relationship_3_partner_under_16_value_check
relationship_3_multiple_partners_value_check
person_3_age
no_females_pregnant_household_person_3_age_value_check
females_in_soft_age_range_in_pregnant_household_person_3_age_value_check
age_3_under_retirement_value_check
age_3_over_retirement_value_check
age_3_partner_under_16_value_check
person_3_gender_identity
no_females_pregnant_household_person_3_value_check
females_in_soft_age_range_in_pregnant_household_person_3_value_check
@ -78,11 +85,14 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_3_over_retirement_value_check
person_4_known
person_4_relationship_to_lead
relationship_4_partner_under_16_value_check
relationship_4_multiple_partners_value_check
person_4_age
no_females_pregnant_household_person_4_age_value_check
females_in_soft_age_range_in_pregnant_household_person_4_age_value_check
age_4_under_retirement_value_check
age_4_over_retirement_value_check
age_4_partner_under_16_value_check
person_4_gender_identity
no_females_pregnant_household_person_4_value_check
females_in_soft_age_range_in_pregnant_household_person_4_value_check
@ -92,11 +102,14 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_4_over_retirement_value_check
person_5_known
person_5_relationship_to_lead
relationship_5_partner_under_16_value_check
relationship_5_multiple_partners_value_check
person_5_age
no_females_pregnant_household_person_5_age_value_check
females_in_soft_age_range_in_pregnant_household_person_5_age_value_check
age_5_under_retirement_value_check
age_5_over_retirement_value_check
age_5_partner_under_16_value_check
person_5_gender_identity
no_females_pregnant_household_person_5_value_check
females_in_soft_age_range_in_pregnant_household_person_5_value_check
@ -106,11 +119,14 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_5_over_retirement_value_check
person_6_known
person_6_relationship_to_lead
relationship_6_partner_under_16_value_check
relationship_6_multiple_partners_value_check
person_6_age
no_females_pregnant_household_person_6_age_value_check
females_in_soft_age_range_in_pregnant_household_person_6_age_value_check
age_6_under_retirement_value_check
age_6_over_retirement_value_check
age_6_partner_under_16_value_check
person_6_gender_identity
no_females_pregnant_household_person_6_value_check
females_in_soft_age_range_in_pregnant_household_person_6_value_check
@ -120,11 +136,14 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_6_over_retirement_value_check
person_7_known
person_7_relationship_to_lead
relationship_7_partner_under_16_value_check
relationship_7_multiple_partners_value_check
person_7_age
no_females_pregnant_household_person_7_age_value_check
females_in_soft_age_range_in_pregnant_household_person_7_age_value_check
age_7_under_retirement_value_check
age_7_over_retirement_value_check
age_7_partner_under_16_value_check
person_7_gender_identity
no_females_pregnant_household_person_7_value_check
females_in_soft_age_range_in_pregnant_household_person_7_value_check
@ -134,11 +153,14 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_7_over_retirement_value_check
person_8_known
person_8_relationship_to_lead
relationship_8_partner_under_16_value_check
relationship_8_multiple_partners_value_check
person_8_age
no_females_pregnant_household_person_8_age_value_check
females_in_soft_age_range_in_pregnant_household_person_8_age_value_check
age_8_under_retirement_value_check
age_8_over_retirement_value_check
age_8_partner_under_16_value_check
person_8_gender_identity
no_females_pregnant_household_person_8_value_check
females_in_soft_age_range_in_pregnant_household_person_8_value_check
@ -151,9 +173,10 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
end
end
context "with start year >= 2024" do
context "with start year >= 2025", metadata: { year: 25 } do
before do
allow(form).to receive(:start_year_2024_or_later?).and_return(true)
allow(form).to receive(:start_year_2025_or_later?).and_return(true)
end
it "has correct pages" do
@ -182,7 +205,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_lead_tenant_under_retirement_value_check
working_situation_lead_tenant_over_retirement_value_check
person_2_known
person_2_relationship_to_lead
person_2_lead_partner
relationship_2_partner_under_16_value_check
relationship_2_multiple_partners_value_check
person_2_age
@ -199,7 +222,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_2_under_retirement_value_check
working_situation_2_over_retirement_value_check
person_3_known
person_3_relationship_to_lead
person_3_lead_partner
relationship_3_partner_under_16_value_check
relationship_3_multiple_partners_value_check
person_3_age
@ -216,7 +239,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_3_under_retirement_value_check
working_situation_3_over_retirement_value_check
person_4_known
person_4_relationship_to_lead
person_4_lead_partner
relationship_4_partner_under_16_value_check
relationship_4_multiple_partners_value_check
person_4_age
@ -233,7 +256,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_4_under_retirement_value_check
working_situation_4_over_retirement_value_check
person_5_known
person_5_relationship_to_lead
person_5_lead_partner
relationship_5_partner_under_16_value_check
relationship_5_multiple_partners_value_check
person_5_age
@ -250,7 +273,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_5_under_retirement_value_check
working_situation_5_over_retirement_value_check
person_6_known
person_6_relationship_to_lead
person_6_lead_partner
relationship_6_partner_under_16_value_check
relationship_6_multiple_partners_value_check
person_6_age
@ -267,7 +290,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_6_under_retirement_value_check
working_situation_6_over_retirement_value_check
person_7_known
person_7_relationship_to_lead
person_7_lead_partner
relationship_7_partner_under_16_value_check
relationship_7_multiple_partners_value_check
person_7_age
@ -284,7 +307,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
working_situation_7_under_retirement_value_check
working_situation_7_over_retirement_value_check
person_8_known
person_8_relationship_to_lead
person_8_lead_partner
relationship_8_partner_under_16_value_check
relationship_8_multiple_partners_value_check
person_8_age
@ -305,10 +328,11 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
end
end
context "with start year >= 2025" do
context "with start year >= 2026", metadata: { year: 26 } do
before do
allow(form).to receive(:start_year_2024_or_later?).and_return(true)
allow(form).to receive(:start_year_2025_or_later?).and_return(true)
allow(form).to receive(:start_year_2026_or_later?).and_return(true)
end
it "has correct pages" do
@ -336,6 +360,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
lead_tenant_working_situation
working_situation_lead_tenant_under_retirement_value_check
working_situation_lead_tenant_over_retirement_value_check
working_situation_lead_tenant_long_term_illness_check
person_2_known
person_2_lead_partner
relationship_2_partner_under_16_value_check
@ -353,6 +378,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
person_2_working_situation
working_situation_2_under_retirement_value_check
working_situation_2_over_retirement_value_check
working_situation_2_long_term_illness_check
person_3_known
person_3_lead_partner
relationship_3_partner_under_16_value_check
@ -370,6 +396,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
person_3_working_situation
working_situation_3_under_retirement_value_check
working_situation_3_over_retirement_value_check
working_situation_3_long_term_illness_check
person_4_known
person_4_lead_partner
relationship_4_partner_under_16_value_check
@ -387,6 +414,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
person_4_working_situation
working_situation_4_under_retirement_value_check
working_situation_4_over_retirement_value_check
working_situation_4_long_term_illness_check
person_5_known
person_5_lead_partner
relationship_5_partner_under_16_value_check
@ -404,6 +432,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
person_5_working_situation
working_situation_5_under_retirement_value_check
working_situation_5_over_retirement_value_check
working_situation_5_long_term_illness_check
person_6_known
person_6_lead_partner
relationship_6_partner_under_16_value_check
@ -421,6 +450,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
person_6_working_situation
working_situation_6_under_retirement_value_check
working_situation_6_over_retirement_value_check
working_situation_6_long_term_illness_check
person_7_known
person_7_lead_partner
relationship_7_partner_under_16_value_check
@ -438,6 +468,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
person_7_working_situation
working_situation_7_under_retirement_value_check
working_situation_7_over_retirement_value_check
working_situation_7_long_term_illness_check
person_8_known
person_8_lead_partner
relationship_8_partner_under_16_value_check
@ -455,6 +486,7 @@ RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :mod
person_8_working_situation
working_situation_8_under_retirement_value_check
working_situation_8_over_retirement_value_check
working_situation_8_long_term_illness_check
],
)
end

66
spec/models/form/lettings/subsections/household_needs_spec.rb

@ -8,25 +8,61 @@ RSpec.describe Form::Lettings::Subsections::HouseholdNeeds, type: :model do
let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1)) }
let(:section) { instance_double(Form::Lettings::Sections::Household, form:) }
before do
allow(form).to receive(:start_year_2025_or_later?).and_return(false)
allow(form).to receive(:start_year_2026_or_later?).and_return(false)
end
it "has correct section" do
expect(household_needs.section).to eq(section)
end
it "has correct pages" do
expect(household_needs.pages.map(&:id)).to eq(
%w[
armed_forces
armed_forces_serving
armed_forces_injured
pregnant
no_females_pregnant_household_value_check
females_in_soft_age_range_in_pregnant_household_value_check
access_needs_exist
type_of_access_needs
health_conditions
health_condition_effects
],
)
context "with start year >= 2025", metadata: { year: 25 } do
before do
allow(form).to receive(:start_year_2025_or_later?).and_return(true)
end
it "has correct pages" do
expect(household_needs.pages.map(&:id)).to eq(
%w[
armed_forces
armed_forces_serving
armed_forces_injured
pregnant
no_females_pregnant_household_value_check
females_in_soft_age_range_in_pregnant_household_value_check
access_needs_exist
type_of_access_needs
health_conditions
health_condition_effects
],
)
end
end
context "with start year >= 2026", metadata: { year: 26 } do
before do
allow(form).to receive(:start_year_2025_or_later?).and_return(true)
allow(form).to receive(:start_year_2026_or_later?).and_return(true)
end
it "has correct pages" do
expect(household_needs.pages.map(&:id)).to eq(
%w[
armed_forces
armed_forces_serving
armed_forces_injured
pregnant
no_females_pregnant_household_value_check
females_in_soft_age_range_in_pregnant_household_value_check
access_needs_exist
type_of_access_needs
health_conditions
working_situation_long_term_illness_check
health_condition_effects
],
)
end
end
it "has the correct id" do

38
spec/models/validations/soft_validations_spec.rb

@ -1354,4 +1354,42 @@ RSpec.describe Validations::SoftValidations do
expect(record).to be_reasonother_might_be_existing_category
end
end
describe "at_least_one_working_situation_is_sickness_and_household_sickness_is_no" do
it "returns true if one person has working situation as illness and household sickness is no" do
record.illness = 2
record.hhmemb = 2
record.ecstat1 = 8
record.ecstat2 = 1
expect(record.at_least_one_working_situation_is_sickness_and_household_sickness_is_no?).to be true
end
it "returns true if all people has working situation as illness and household sickness is no" do
record.illness = 2
record.hhmemb = 2
record.ecstat1 = 8
record.ecstat2 = 8
expect(record.at_least_one_working_situation_is_sickness_and_household_sickness_is_no?).to be true
end
it "returns false if household sickness is yes" do
record.illness = 1
record.hhmemb = 2
record.ecstat1 = 8
record.ecstat2 = 1
expect(record.at_least_one_working_situation_is_sickness_and_household_sickness_is_no?).to be false
end
it "returns false if no working situation is illness" do
record.illness = 2
record.hhmemb = 2
record.ecstat1 = 1
record.ecstat2 = 1
expect(record.at_least_one_working_situation_is_sickness_and_household_sickness_is_no?).to be false
end
end
end

2
spec/services/bulk_upload/lettings/year2026/row_parser_spec.rb

@ -197,7 +197,7 @@ RSpec.describe BulkUpload::Lettings::Year2026::RowParser do
field_82: "1",
field_83: "0",
field_85: "2",
field_85: "3",
field_96: "11",
field_97: "2",

Loading…
Cancel
Save