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