require "rails_helper" RSpec.describe Form::Lettings::Subsections::HouseholdCharacteristics, type: :model do subject(:household_characteristics) { described_class.new(subsection_id, subsection_definition, section) } let(:subsection_id) { nil } let(:subsection_definition) { nil } let(:section) { instance_double(Form::Lettings::Sections::Household) } let(:form) { instance_double(Form) } before do allow(section).to receive(:form).and_return(form) end it "has correct section" do expect(household_characteristics.section).to eq(section) end context "with start year before 2024" do before do allow(form).to receive(:start_year_after_2024?).and_return(false) 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 lead_tenant_age no_females_pregnant_household_lead_age_value_check females_in_soft_age_range_in_pregnant_household_lead_age_value_check age_lead_tenant_under_retirement_value_check age_lead_tenant_over_retirement_value_check lead_tenant_gender_identity no_females_pregnant_household_lead_value_check females_in_soft_age_range_in_pregnant_household_lead_value_check gender_lead_tenant_over_retirement_value_check lead_tenant_ethnic_group lead_tenant_ethnic_background_arab lead_tenant_ethnic_background_asian lead_tenant_ethnic_background_black lead_tenant_ethnic_background_mixed lead_tenant_ethnic_background_white lead_tenant_nationality lead_tenant_working_situation 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_age_child person_2_age_non_child 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 person_2_gender_identity no_females_pregnant_household_person_2_value_check females_in_soft_age_range_in_pregnant_household_person_2_value_check gender_2_over_retirement_value_check person_2_working_situation working_situation_2_under_retirement_value_check working_situation_2_over_retirement_value_check person_3_known person_3_relationship_to_lead person_3_age_child person_3_age_non_child 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 person_3_gender_identity no_females_pregnant_household_person_3_value_check females_in_soft_age_range_in_pregnant_household_person_3_value_check gender_3_over_retirement_value_check person_3_working_situation working_situation_3_under_retirement_value_check working_situation_3_over_retirement_value_check person_4_known person_4_relationship_to_lead person_4_age_child person_4_age_non_child 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 person_4_gender_identity no_females_pregnant_household_person_4_value_check females_in_soft_age_range_in_pregnant_household_person_4_value_check gender_4_over_retirement_value_check person_4_working_situation working_situation_4_under_retirement_value_check working_situation_4_over_retirement_value_check person_5_known person_5_relationship_to_lead person_5_age_child person_5_age_non_child 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 person_5_gender_identity no_females_pregnant_household_person_5_value_check females_in_soft_age_range_in_pregnant_household_person_5_value_check gender_5_over_retirement_value_check person_5_working_situation working_situation_5_under_retirement_value_check working_situation_5_over_retirement_value_check person_6_known person_6_relationship_to_lead person_6_age_child person_6_age_non_child 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 person_6_gender_identity no_females_pregnant_household_person_6_value_check females_in_soft_age_range_in_pregnant_household_person_6_value_check gender_6_over_retirement_value_check person_6_working_situation working_situation_6_under_retirement_value_check working_situation_6_over_retirement_value_check person_7_known person_7_relationship_to_lead person_7_age_child person_7_age_non_child 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 person_7_gender_identity no_females_pregnant_household_person_7_value_check females_in_soft_age_range_in_pregnant_household_person_7_value_check gender_7_over_retirement_value_check person_7_working_situation working_situation_7_under_retirement_value_check working_situation_7_over_retirement_value_check person_8_known person_8_relationship_to_lead person_8_age_child person_8_age_non_child 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 person_8_gender_identity no_females_pregnant_household_person_8_value_check females_in_soft_age_range_in_pregnant_household_person_8_value_check gender_8_over_retirement_value_check person_8_working_situation working_situation_8_under_retirement_value_check working_situation_8_over_retirement_value_check ], ) end end context "with start year >= 2024" do before do allow(form).to receive(:start_year_after_2024?).and_return(true) end it "has correct pages" do expect(household_characteristics.pages.map(&:id)).to eq( %w[ household_members no_females_pregnant_household_lead_hhmemb_value_check females_in_soft_age_range_in_pregnant_household_lead_hhmemb_value_check lead_tenant_age no_females_pregnant_household_lead_age_value_check females_in_soft_age_range_in_pregnant_household_lead_age_value_check age_lead_tenant_under_retirement_value_check age_lead_tenant_over_retirement_value_check lead_tenant_gender_identity no_females_pregnant_household_lead_value_check females_in_soft_age_range_in_pregnant_household_lead_value_check gender_lead_tenant_over_retirement_value_check lead_tenant_ethnic_group lead_tenant_ethnic_background_arab lead_tenant_ethnic_background_asian lead_tenant_ethnic_background_black lead_tenant_ethnic_background_mixed lead_tenant_ethnic_background_white lead_tenant_nationality lead_tenant_working_situation working_situation_lead_tenant_under_retirement_value_check 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_child person_2_age_non_child 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 gender_2_over_retirement_value_check person_2_working_situation working_situation_2_under_retirement_value_check 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_child person_3_age_non_child 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 gender_3_over_retirement_value_check person_3_working_situation working_situation_3_under_retirement_value_check 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_child person_4_age_non_child 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 gender_4_over_retirement_value_check person_4_working_situation working_situation_4_under_retirement_value_check 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_child person_5_age_non_child 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 gender_5_over_retirement_value_check person_5_working_situation working_situation_5_under_retirement_value_check 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_child person_6_age_non_child 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 gender_6_over_retirement_value_check person_6_working_situation working_situation_6_under_retirement_value_check 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_child person_7_age_non_child 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 gender_7_over_retirement_value_check person_7_working_situation working_situation_7_under_retirement_value_check 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_child person_8_age_non_child 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 gender_8_over_retirement_value_check person_8_working_situation working_situation_8_under_retirement_value_check working_situation_8_over_retirement_value_check ], ) end end it "has the correct id" do expect(household_characteristics.id).to eq("household_characteristics") end it "has the correct label" do expect(household_characteristics.label).to eq("Household characteristics") end it "has the correct depends_on" do expect(household_characteristics.depends_on).to eq([ { "non_location_setup_questions_completed?" => true, }, ]) end end