diff --git a/app/models/validations/sales/household_validations.rb b/app/models/validations/sales/household_validations.rb index e5a66f935..2ae120174 100644 --- a/app/models/validations/sales/household_validations.rb +++ b/app/models/validations/sales/household_validations.rb @@ -1,17 +1,6 @@ module Validations::Sales::HouseholdValidations include Validations::SharedValidations - def validate_partner_count(record) - return if record.form.start_year_2024_or_later? - - partner_numbers = (2..6).select { |n| person_is_partner?(record["relat#{n}"]) } - if partner_numbers.count > 1 - partner_numbers.each do |n| - record.errors.add "relat#{n}", I18n.t("validations.sales.household.relat.one_partner") - end - end - end - def validate_buyers_living_in_property(record) if record.buyers_will_live_in? && record.buyer_one_will_not_live_in_property? && record.buyer_two_will_not_live_in_property? record.errors.add :buylivein, I18n.t("validations.sales.household.buylivein.buyers_will_live_in_property_values_inconsistent") @@ -21,7 +10,7 @@ module Validations::Sales::HouseholdValidations end def validate_buyer1_previous_tenure(record) - return unless record.saledate && record.form.start_year_2024_or_later? + return unless record.saledate return unless record.discounted_ownership_sale? && record.prevten if [3, 4, 5, 6, 7, 9, 0].include?(record.prevten) @@ -30,62 +19,12 @@ module Validations::Sales::HouseholdValidations end end - def validate_person_age_matches_relationship(record) - return unless record.saledate && !record.form.start_year_2024_or_later? - - (2..6).each do |person_num| - age = record.public_send("age#{person_num}") - relationship = record.public_send("relat#{person_num}") - next unless age && relationship - - if age < 16 && !relationship_is_child_other_or_refused?(relationship) - record.errors.add "age#{person_num}", I18n.t("validations.sales.household.age.child_under_16", person_num:) - record.errors.add "relat#{person_num}", I18n.t("validations.sales.household.relat.child_under_16", person_num:) - elsif age >= 20 && person_is_child?(relationship) - record.errors.add "age#{person_num}", I18n.t("validations.sales.household.age.child_over_20") - record.errors.add "relat#{person_num}", I18n.t("validations.sales.household.relat.child_over_20") - end - end - end - - def validate_person_age_and_relationship_matches_economic_status(record) - return unless record.saledate && !record.form.start_year_2024_or_later? - - (2..6).each do |person_num| - age = record.public_send("age#{person_num}") - economic_status = record.public_send("ecstat#{person_num}") - relationship = record.public_send("relat#{person_num}") - next unless age && economic_status && relationship - - age_between_16_19 = age.between?(16, 19) - student = person_is_fulltime_student?(economic_status) - economic_status_refused = person_economic_status_refused?(economic_status) - child = person_is_child?(relationship) - - if age_between_16_19 && !(student || economic_status_refused) && child - record.errors.add "ecstat#{person_num}", I18n.t("validations.sales.household.ecstat.student_16_19.must_be_student") - record.errors.add "age#{person_num}", I18n.t("validations.sales.household.age.student_16_19.cannot_be_16_19.child_not_student") - record.errors.add "relat#{person_num}", I18n.t("validations.sales.household.relat.student_16_19.cannot_be_child.16_19_not_student") - end - - next unless !age_between_16_19 && student && child - - record.errors.add "age#{person_num}", I18n.t("validations.sales.household.age.student_16_19.must_be_16_19") - record.errors.add "ecstat#{person_num}", I18n.t("validations.sales.household.ecstat.student_16_19.cannot_be_student.child_not_16_19") - record.errors.add "relat#{person_num}", I18n.t("validations.sales.household.relat.student_16_19.cannot_be_child.student_not_16_19") - end - end - def validate_person_age_matches_economic_status(record) (2..6).each do |person_num| age = record.public_send("age#{person_num}") economic_status = record.public_send("ecstat#{person_num}") next unless age && economic_status - if age < 16 && !economic_status_is_child_other_or_refused?(economic_status) && !record.form.start_year_2024_or_later? - record.errors.add "ecstat#{person_num}", I18n.t("validations.sales.household.ecstat.child_under_16", person_num:) - record.errors.add "age#{person_num}", I18n.t("validations.sales.household.age.child_under_16_ecstat", person_num:) - end if person_is_economic_child?(economic_status) && age > 16 record.errors.add "ecstat#{person_num}", I18n.t("validations.sales.household.ecstat.child_over_16", person_num:) record.errors.add "age#{person_num}", I18n.t("validations.sales.household.age.child_over_16", person_num:) @@ -93,25 +32,8 @@ module Validations::Sales::HouseholdValidations end end - def validate_child_12_years_younger(record) - return unless record.saledate && !record.form.start_year_2024_or_later? - - (2..6).each do |person_num| - buyer_1_age = record.public_send("age1") - person_age = record.public_send("age#{person_num}") - relationship = record.public_send("relat#{person_num}") - next unless buyer_1_age && person_age && relationship - - next unless person_age > buyer_1_age - 12 && person_is_child?(relationship) - - record.errors.add "age1", I18n.t("validations.sales.household.age1.child_12_years_younger") - record.errors.add "age#{person_num}", I18n.t("validations.sales.household.age.child_12_years_younger") - record.errors.add "relat#{person_num}", I18n.t("validations.sales.household.relat.child_12_years_younger") - end - end - def validate_buyer_not_child(record) - return unless record.saledate && record.form.start_year_2024_or_later? + return unless record.saledate record.errors.add "ecstat1", I18n.t("validations.sales.household.ecstat1.buyer_cannot_be_child") if person_is_economic_child?(record.ecstat1) record.errors.add "ecstat2", I18n.t("validations.sales.household.ecstat2.buyer_cannot_be_child") if person_is_economic_child?(record.ecstat2) && record.joint_purchase? @@ -119,31 +41,11 @@ module Validations::Sales::HouseholdValidations private - def person_is_fulltime_student?(economic_status) - economic_status == 7 - end - def person_is_economic_child?(economic_status) economic_status == 9 end - def person_economic_status_refused?(economic_status) - economic_status == 10 - end - - def economic_status_is_child_other_or_refused?(economic_status) - [9, 0, 10].include?(economic_status) - end - - def person_is_partner?(relationship) - relationship == "P" - end - def person_is_child?(relationship) relationship == "C" end - - def relationship_is_child_other_or_refused?(relationship) - %w[C X R].include?(relationship) - end end diff --git a/spec/models/validations/sales/household_validations_spec.rb b/spec/models/validations/sales/household_validations_spec.rb index 97c64ac62..14dddc20b 100644 --- a/spec/models/validations/sales/household_validations_spec.rb +++ b/spec/models/validations/sales/household_validations_spec.rb @@ -9,39 +9,6 @@ RSpec.describe Validations::Sales::HouseholdValidations do let(:record) { build(:sales_log, saledate:) } let(:saledate) { Time.zone.now } - describe "#validate_partner_count" do - let(:saledate) { current_collection_start_date } - - it "does not validate for years >= 2024" do - record.relat2 = "P" - record.relat3 = "P" - household_validator.validate_partner_count(record) - expect(record.errors["relat2"]).to be_empty - expect(record.errors["relat3"]).to be_empty - expect(record.errors["relat4"]).to be_empty - end - end - - describe "#validate_person_age_matches_relationship" do - let(:saledate) { current_collection_start_date } - - it "does not add error if person under 16 is a partner" do - record.age2 = 14 - record.relat2 = "P" - household_validator.validate_person_age_matches_relationship(record) - expect(record.errors["relat2"]).to be_empty - expect(record.errors["age2"]).to be_empty - end - - it "does not add error if person over 19 is a child" do - record.age2 = 20 - record.relat2 = "C" - household_validator.validate_person_age_matches_relationship(record) - expect(record.errors["age2"]).to be_empty - expect(record.errors["relat2"]).to be_empty - end - end - describe "#validate_person_age_matches_economic_status" do let(:saledate) { current_collection_start_date } @@ -56,69 +23,6 @@ RSpec.describe Validations::Sales::HouseholdValidations do end end - describe "#validate_child_12_years_younger" do - let(:saledate) { current_collection_start_date } - - it "does not validate that child is at least 12 year younger than buyer" do - record.age1 = 20 - record.age2 = 17 - record.relat2 = "C" - household_validator.validate_child_12_years_younger(record) - expect(record.errors["age1"]).to be_empty - expect(record.errors["age2"]).to be_empty - expect(record.errors["relat2"]).to be_empty - end - end - - describe "#validate_person_age_and_relationship_matches_economic_status" do - let(:saledate) { current_collection_start_date } - - context "when the household contains a tenant’s child between the ages of 16 and 19" do - it "does not add an error" do - record.age2 = 17 - record.relat2 = "C" - record.ecstat2 = 1 - household_validator.validate_person_age_and_relationship_matches_economic_status(record) - expect(record.errors["ecstat2"]) - .to be_empty - expect(record.errors["age2"]) - .to be_empty - expect(record.errors["relat2"]) - .to be_empty - end - end - - it "does not add an error for a person not aged 16-19 who is a student but not a child of the buyer" do - record.age2 = 20 - record.ecstat2 = "7" - record.relat2 = "P" - household_validator.validate_person_age_and_relationship_matches_economic_status(record) - expect(record.errors["relat2"]).to be_empty - expect(record.errors["ecstat2"]).to be_empty - expect(record.errors["age2"]).to be_empty - end - - it "does not add errors" do - record.age2 = 14 - record.ecstat2 = "7" - record.relat2 = "C" - household_validator.validate_person_age_and_relationship_matches_economic_status(record) - expect(record.errors["relat2"]).to be_empty - expect(record.errors["ecstat2"]).to be_empty - expect(record.errors["age2"]).to be_empty - end - - it "does not add errors for a person who is a student and aged 16-19 but not child" do - record.age2 = 17 - record.ecstat2 = "7" - record.relat2 = "X" - household_validator.validate_person_age_and_relationship_matches_economic_status(record) - expect(record.errors["relat2"]).to be_empty - expect(record.errors["ecstat2"]).to be_empty - expect(record.errors["age2"]).to be_empty - end - end - describe "validating fields about buyers living in the property" do let(:sales_log) { build(:sales_log, :outright_sale_setup_complete, saledate:, noint: 1, companybuy: 2, buylivein:, jointpur:, jointmore:, buy1livein:) } @@ -224,8 +128,6 @@ RSpec.describe Validations::Sales::HouseholdValidations do end describe "#validate_buyer_not_child" do - let(:saledate) { current_collection_start_date } - it "validates buyer 1 isn't a child" do record.ecstat1 = 9 household_validator.validate_buyer_not_child(record)