You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							419 lines
						
					
					
						
							17 KiB
						
					
					
				
			
		
		
	
	
							419 lines
						
					
					
						
							17 KiB
						
					
					
				require "rails_helper" | 
						|
 | 
						|
RSpec.describe Form::Sales::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::Sales::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 2023/24 form" do | 
						|
    before do | 
						|
      allow(form).to receive(:start_date).and_return(Time.zone.local(2023, 4, 1)) | 
						|
      allow(form).to receive(:start_year_2024_or_later?).and_return(false) | 
						|
      allow(form).to receive(:start_year_2025_or_later?).and_return(false) | 
						|
    end | 
						|
 | 
						|
    it "has correct pages" do | 
						|
      expect(household_characteristics.pages.map(&:id)).to eq( | 
						|
        %w[ | 
						|
          buyer_interview_joint_purchase | 
						|
          buyer_interview | 
						|
          privacy_notice_joint_purchase | 
						|
          privacy_notice | 
						|
          buyer_1_age | 
						|
          age_1_retirement_value_check | 
						|
          age_1_old_persons_shared_ownership_joint_purchase_value_check | 
						|
          age_1_old_persons_shared_ownership_value_check | 
						|
          buyer_1_gender_identity | 
						|
          buyer_1_ethnic_group | 
						|
          buyer_1_ethnic_background_black | 
						|
          buyer_1_ethnic_background_asian | 
						|
          buyer_1_ethnic_background_arab | 
						|
          buyer_1_ethnic_background_mixed | 
						|
          buyer_1_ethnic_background_white | 
						|
          buyer_1_nationality | 
						|
          buyer_1_working_situation | 
						|
          working_situation_1_retirement_value_check | 
						|
          working_situation_buyer_1_income_value_check | 
						|
          buyer_1_live_in_property | 
						|
          buyer_1_live_in_property_value_check | 
						|
          buyer_2_relationship_to_buyer_1 | 
						|
          buyer_2_relationship_student_not_child_value_check | 
						|
          buyer_2_age | 
						|
          age_2_old_persons_shared_ownership_joint_purchase_value_check | 
						|
          age_2_old_persons_shared_ownership_value_check | 
						|
          age_2_buyer_retirement_value_check | 
						|
          buyer_2_age_student_not_child_value_check | 
						|
          buyer_2_gender_identity | 
						|
          buyer_2_ethnic_group | 
						|
          buyer_2_ethnic_background_black | 
						|
          buyer_2_ethnic_background_asian | 
						|
          buyer_2_ethnic_background_arab | 
						|
          buyer_2_ethnic_background_mixed | 
						|
          buyer_2_ethnic_background_white | 
						|
          buyer_2_nationality | 
						|
          buyer_2_working_situation | 
						|
          working_situation_2_retirement_value_check_joint_purchase | 
						|
          working_situation_buyer_2_income_value_check | 
						|
          buyer_2_working_situation_student_not_child_value_check | 
						|
          buyer_2_live_in_property | 
						|
          buyer_2_live_in_property_value_check | 
						|
          number_of_others_in_property | 
						|
          number_of_others_in_property_joint_purchase | 
						|
          person_2_known | 
						|
          person_2_relationship_to_buyer_1 | 
						|
          relationship_2_student_not_child_value_check | 
						|
          person_2_age | 
						|
          age_2_retirement_value_check | 
						|
          age_2_student_not_child_value_check | 
						|
          person_2_gender_identity | 
						|
          person_2_working_situation | 
						|
          working_situation_2_retirement_value_check | 
						|
          working_situation_2_student_not_child_value_check | 
						|
          person_3_known | 
						|
          person_3_relationship_to_buyer_1 | 
						|
          relationship_3_student_not_child_value_check | 
						|
          person_3_age | 
						|
          age_3_retirement_value_check | 
						|
          age_3_student_not_child_value_check | 
						|
          person_3_gender_identity | 
						|
          person_3_working_situation | 
						|
          working_situation_3_retirement_value_check | 
						|
          working_situation_3_student_not_child_value_check | 
						|
          person_4_known | 
						|
          person_4_relationship_to_buyer_1 | 
						|
          relationship_4_student_not_child_value_check | 
						|
          person_4_age | 
						|
          age_4_retirement_value_check | 
						|
          age_4_student_not_child_value_check | 
						|
          person_4_gender_identity | 
						|
          person_4_working_situation | 
						|
          working_situation_4_retirement_value_check | 
						|
          working_situation_4_student_not_child_value_check | 
						|
          person_5_known | 
						|
          person_5_relationship_to_buyer_1 | 
						|
          relationship_5_student_not_child_value_check | 
						|
          person_5_age | 
						|
          age_5_retirement_value_check | 
						|
          age_5_student_not_child_value_check | 
						|
          person_5_gender_identity | 
						|
          person_5_working_situation | 
						|
          working_situation_5_retirement_value_check | 
						|
          working_situation_5_student_not_child_value_check | 
						|
          person_6_known | 
						|
          person_6_relationship_to_buyer_1 | 
						|
          relationship_6_student_not_child_value_check | 
						|
          person_6_age | 
						|
          age_6_retirement_value_check | 
						|
          age_6_student_not_child_value_check | 
						|
          person_6_gender_identity | 
						|
          person_6_working_situation | 
						|
          working_situation_6_retirement_value_check | 
						|
          working_situation_6_student_not_child_value_check | 
						|
        ], | 
						|
      ) | 
						|
    end | 
						|
  end | 
						|
 | 
						|
  context "with 2024/25 form" do | 
						|
    before do | 
						|
      allow(form).to receive(:start_date).and_return(Time.zone.local(2024, 4, 1)) | 
						|
      allow(form).to receive(:start_year_2024_or_later?).and_return(true) | 
						|
      allow(form).to receive(:start_year_2025_or_later?).and_return(false) | 
						|
    end | 
						|
 | 
						|
    it "has correct depends on" do | 
						|
      expect(household_characteristics.depends_on).to eq([{ "setup_completed?" => true, "company_buyer?" => false }]) | 
						|
    end | 
						|
 | 
						|
    context "when the sale is to a company buyer" do | 
						|
      let(:log) { FactoryBot.build(:sales_log, ownershipsch: 3, companybuy: 1) } | 
						|
 | 
						|
      it "is not displayed in tasklist" do | 
						|
        expect(household_characteristics.displayed_in_tasklist?(log)).to eq(false) | 
						|
      end | 
						|
    end | 
						|
 | 
						|
    context "when the sale is not to a company buyer" do | 
						|
      let(:log) { FactoryBot.build(:sales_log, ownershipsch: 3, companybuy: 2) } | 
						|
 | 
						|
      it "is displayed in tasklist" do | 
						|
        expect(household_characteristics.displayed_in_tasklist?(log)).to eq(true) | 
						|
      end | 
						|
    end | 
						|
 | 
						|
    it "has correct pages" do | 
						|
      expect(household_characteristics.pages.map(&:id)).to eq( | 
						|
        %w[ | 
						|
          buyer_1_age | 
						|
          age_1_retirement_value_check | 
						|
          age_1_not_retired_value_check | 
						|
          age_1_old_persons_shared_ownership_joint_purchase_value_check | 
						|
          age_1_old_persons_shared_ownership_value_check | 
						|
          buyer_1_gender_identity | 
						|
          buyer_1_ethnic_group | 
						|
          buyer_1_ethnic_background_black | 
						|
          buyer_1_ethnic_background_asian | 
						|
          buyer_1_ethnic_background_arab | 
						|
          buyer_1_ethnic_background_mixed | 
						|
          buyer_1_ethnic_background_white | 
						|
          buyer_1_nationality | 
						|
          buyer_1_working_situation | 
						|
          working_situation_1_retirement_value_check | 
						|
          working_situation_1_not_retired_value_check | 
						|
          working_situation_buyer_1_income_value_check | 
						|
          buyer_1_live_in_property | 
						|
          buyer_1_live_in_property_value_check | 
						|
          buyer_2_relationship_to_buyer_1 | 
						|
          buyer_2_relationship_student_not_child_value_check | 
						|
          buyer_2_age | 
						|
          age_2_old_persons_shared_ownership_joint_purchase_value_check | 
						|
          age_2_old_persons_shared_ownership_value_check | 
						|
          age_2_buyer_retirement_value_check | 
						|
          age_2_buyer_not_retired_value_check | 
						|
          buyer_2_age_student_not_child_value_check | 
						|
          buyer_2_gender_identity | 
						|
          buyer_2_ethnic_group | 
						|
          buyer_2_ethnic_background_black | 
						|
          buyer_2_ethnic_background_asian | 
						|
          buyer_2_ethnic_background_arab | 
						|
          buyer_2_ethnic_background_mixed | 
						|
          buyer_2_ethnic_background_white | 
						|
          buyer_2_nationality | 
						|
          buyer_2_working_situation | 
						|
          working_situation_2_retirement_value_check_joint_purchase | 
						|
          working_situation_2_not_retired_value_check_joint_purchase | 
						|
          working_situation_buyer_2_income_value_check | 
						|
          buyer_2_working_situation_student_not_child_value_check | 
						|
          buyer_2_live_in_property | 
						|
          buyer_2_live_in_property_value_check | 
						|
          number_of_others_in_property | 
						|
          number_of_others_in_property_joint_purchase | 
						|
          person_2_known | 
						|
          person_2_relationship_to_buyer_1 | 
						|
          relationship_2_partner_under_16_value_check | 
						|
          relationship_2_multiple_partners_value_check | 
						|
          relationship_2_student_not_child_value_check | 
						|
          person_2_age | 
						|
          age_2_retirement_value_check | 
						|
          age_2_not_retired_value_check | 
						|
          age_2_student_not_child_value_check | 
						|
          age_2_partner_under_16_value_check | 
						|
          person_2_gender_identity | 
						|
          person_2_working_situation | 
						|
          working_situation_2_retirement_value_check | 
						|
          working_situation_2_not_retired_value_check | 
						|
          working_situation_2_student_not_child_value_check | 
						|
          person_3_known | 
						|
          person_3_relationship_to_buyer_1 | 
						|
          relationship_3_partner_under_16_value_check | 
						|
          relationship_3_multiple_partners_value_check | 
						|
          relationship_3_student_not_child_value_check | 
						|
          person_3_age | 
						|
          age_3_retirement_value_check | 
						|
          age_3_not_retired_value_check | 
						|
          age_3_student_not_child_value_check | 
						|
          age_3_partner_under_16_value_check | 
						|
          person_3_gender_identity | 
						|
          person_3_working_situation | 
						|
          working_situation_3_retirement_value_check | 
						|
          working_situation_3_not_retired_value_check | 
						|
          working_situation_3_student_not_child_value_check | 
						|
          person_4_known | 
						|
          person_4_relationship_to_buyer_1 | 
						|
          relationship_4_partner_under_16_value_check | 
						|
          relationship_4_multiple_partners_value_check | 
						|
          relationship_4_student_not_child_value_check | 
						|
          person_4_age | 
						|
          age_4_retirement_value_check | 
						|
          age_4_not_retired_value_check | 
						|
          age_4_student_not_child_value_check | 
						|
          age_4_partner_under_16_value_check | 
						|
          person_4_gender_identity | 
						|
          person_4_working_situation | 
						|
          working_situation_4_retirement_value_check | 
						|
          working_situation_4_not_retired_value_check | 
						|
          working_situation_4_student_not_child_value_check | 
						|
          person_5_known | 
						|
          person_5_relationship_to_buyer_1 | 
						|
          relationship_5_partner_under_16_value_check | 
						|
          relationship_5_multiple_partners_value_check | 
						|
          relationship_5_student_not_child_value_check | 
						|
          person_5_age | 
						|
          age_5_retirement_value_check | 
						|
          age_5_not_retired_value_check | 
						|
          age_5_student_not_child_value_check | 
						|
          age_5_partner_under_16_value_check | 
						|
          person_5_gender_identity | 
						|
          person_5_working_situation | 
						|
          working_situation_5_retirement_value_check | 
						|
          working_situation_5_not_retired_value_check | 
						|
          working_situation_5_student_not_child_value_check | 
						|
          person_6_known | 
						|
          person_6_relationship_to_buyer_1 | 
						|
          relationship_6_partner_under_16_value_check | 
						|
          relationship_6_multiple_partners_value_check | 
						|
          relationship_6_student_not_child_value_check | 
						|
          person_6_age | 
						|
          age_6_retirement_value_check | 
						|
          age_6_not_retired_value_check | 
						|
          age_6_student_not_child_value_check | 
						|
          age_6_partner_under_16_value_check | 
						|
          person_6_gender_identity | 
						|
          person_6_working_situation | 
						|
          working_situation_6_retirement_value_check | 
						|
          working_situation_6_not_retired_value_check | 
						|
          working_situation_6_student_not_child_value_check | 
						|
        ], | 
						|
      ) | 
						|
    end | 
						|
  end | 
						|
 | 
						|
  context "with 2025/26 form" do | 
						|
    before do | 
						|
      allow(form).to receive(:start_date).and_return(Time.zone.local(2025, 4, 1)) | 
						|
      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 | 
						|
      expect(household_characteristics.pages.map(&:id)).to eq( | 
						|
        %w[ | 
						|
          buyer_1_age | 
						|
          age_1_retirement_value_check | 
						|
          age_1_not_retired_value_check | 
						|
          age_1_old_persons_shared_ownership_joint_purchase_value_check | 
						|
          age_1_old_persons_shared_ownership_value_check | 
						|
          buyer_1_gender_identity | 
						|
          buyer_1_ethnic_group | 
						|
          buyer_1_ethnic_background_black | 
						|
          buyer_1_ethnic_background_asian | 
						|
          buyer_1_ethnic_background_arab | 
						|
          buyer_1_ethnic_background_mixed | 
						|
          buyer_1_ethnic_background_white | 
						|
          buyer_1_nationality | 
						|
          buyer_1_working_situation | 
						|
          working_situation_1_retirement_value_check | 
						|
          working_situation_1_not_retired_value_check | 
						|
          working_situation_buyer_1_income_value_check | 
						|
          buyer_1_live_in_property | 
						|
          buyer_1_live_in_property_value_check | 
						|
          buyer_2_relationship_to_buyer_1 | 
						|
          buyer_2_relationship_student_not_child_value_check | 
						|
          buyer_2_age | 
						|
          age_2_old_persons_shared_ownership_joint_purchase_value_check | 
						|
          age_2_old_persons_shared_ownership_value_check | 
						|
          age_2_buyer_retirement_value_check | 
						|
          age_2_buyer_not_retired_value_check | 
						|
          buyer_2_age_student_not_child_value_check | 
						|
          buyer_2_gender_identity | 
						|
          buyer_2_ethnic_group | 
						|
          buyer_2_ethnic_background_black | 
						|
          buyer_2_ethnic_background_asian | 
						|
          buyer_2_ethnic_background_arab | 
						|
          buyer_2_ethnic_background_mixed | 
						|
          buyer_2_ethnic_background_white | 
						|
          buyer_2_nationality | 
						|
          buyer_2_working_situation | 
						|
          working_situation_2_retirement_value_check_joint_purchase | 
						|
          working_situation_2_not_retired_value_check_joint_purchase | 
						|
          working_situation_buyer_2_income_value_check | 
						|
          buyer_2_working_situation_student_not_child_value_check | 
						|
          buyer_2_live_in_property | 
						|
          buyer_2_live_in_property_value_check | 
						|
          number_of_others_in_property | 
						|
          number_of_others_in_property_joint_purchase | 
						|
          person_2_known | 
						|
          person_2_relationship_to_buyer_1 | 
						|
          relationship_2_partner_under_16_value_check | 
						|
          relationship_2_multiple_partners_value_check | 
						|
          relationship_2_student_not_child_value_check | 
						|
          person_2_age | 
						|
          age_2_retirement_value_check | 
						|
          age_2_not_retired_value_check | 
						|
          age_2_student_not_child_value_check | 
						|
          age_2_partner_under_16_value_check | 
						|
          person_2_gender_identity | 
						|
          person_2_working_situation | 
						|
          working_situation_2_retirement_value_check | 
						|
          working_situation_2_not_retired_value_check | 
						|
          working_situation_2_student_not_child_value_check | 
						|
          person_3_known | 
						|
          person_3_relationship_to_buyer_1 | 
						|
          relationship_3_partner_under_16_value_check | 
						|
          relationship_3_multiple_partners_value_check | 
						|
          relationship_3_student_not_child_value_check | 
						|
          person_3_age | 
						|
          age_3_retirement_value_check | 
						|
          age_3_not_retired_value_check | 
						|
          age_3_student_not_child_value_check | 
						|
          age_3_partner_under_16_value_check | 
						|
          person_3_gender_identity | 
						|
          person_3_working_situation | 
						|
          working_situation_3_retirement_value_check | 
						|
          working_situation_3_not_retired_value_check | 
						|
          working_situation_3_student_not_child_value_check | 
						|
          person_4_known | 
						|
          person_4_relationship_to_buyer_1 | 
						|
          relationship_4_partner_under_16_value_check | 
						|
          relationship_4_multiple_partners_value_check | 
						|
          relationship_4_student_not_child_value_check | 
						|
          person_4_age | 
						|
          age_4_retirement_value_check | 
						|
          age_4_not_retired_value_check | 
						|
          age_4_student_not_child_value_check | 
						|
          age_4_partner_under_16_value_check | 
						|
          person_4_gender_identity | 
						|
          person_4_working_situation | 
						|
          working_situation_4_retirement_value_check | 
						|
          working_situation_4_not_retired_value_check | 
						|
          working_situation_4_student_not_child_value_check | 
						|
          person_5_known | 
						|
          person_5_relationship_to_buyer_1 | 
						|
          relationship_5_partner_under_16_value_check | 
						|
          relationship_5_multiple_partners_value_check | 
						|
          relationship_5_student_not_child_value_check | 
						|
          person_5_age | 
						|
          age_5_retirement_value_check | 
						|
          age_5_not_retired_value_check | 
						|
          age_5_student_not_child_value_check | 
						|
          age_5_partner_under_16_value_check | 
						|
          person_5_gender_identity | 
						|
          person_5_working_situation | 
						|
          working_situation_5_retirement_value_check | 
						|
          working_situation_5_not_retired_value_check | 
						|
          working_situation_5_student_not_child_value_check | 
						|
          person_6_known | 
						|
          person_6_relationship_to_buyer_1 | 
						|
          relationship_6_partner_under_16_value_check | 
						|
          relationship_6_multiple_partners_value_check | 
						|
          relationship_6_student_not_child_value_check | 
						|
          person_6_age | 
						|
          age_6_retirement_value_check | 
						|
          age_6_not_retired_value_check | 
						|
          age_6_student_not_child_value_check | 
						|
          age_6_partner_under_16_value_check | 
						|
          person_6_gender_identity | 
						|
          person_6_working_situation | 
						|
          working_situation_6_retirement_value_check | 
						|
          working_situation_6_not_retired_value_check | 
						|
          working_situation_6_student_not_child_value_check | 
						|
        ], | 
						|
      ) | 
						|
    end | 
						|
 | 
						|
    it "has correct depends on" do | 
						|
      expect(household_characteristics.depends_on).to eq([{ "setup_completed?" => true }]) | 
						|
    end | 
						|
  end | 
						|
end
 | 
						|
 |