From 6e17f2bd8f83813a1eea517838cb487af2d3a80a Mon Sep 17 00:00:00 2001 From: baarkerlounger Date: Mon, 14 Feb 2022 15:44:38 +0000 Subject: [PATCH] Refactor other household member validation specs --- .../validations/household_validations.rb | 2 +- spec/models/case_log_spec.rb | 11 -- .../validations/household_validations_spec.rb | 132 ++++++++++++++++++ 3 files changed, 133 insertions(+), 12 deletions(-) diff --git a/app/models/validations/household_validations.rb b/app/models/validations/household_validations.rb index 6116cd6b2..cdc316ff6 100644 --- a/app/models/validations/household_validations.rb +++ b/app/models/validations/household_validations.rb @@ -127,7 +127,7 @@ private relationship = record.public_send("relat#{person_num}") return unless age && economic_status && relationship - if age >= 16 && age <= 19 && relationship == "Child - includes young adult and grown-up" && (economic_status != "Full-time student" || economic_status != "Prefer not to say") + if age >= 16 && age <= 19 && relationship == "Child - includes young adult and grown-up" && (economic_status != "Full-time student" && economic_status != "Prefer not to say") record.errors.add "ecstat#{person_num}", I18n.t("validations.household.ecstat.student_16_19", person_num:) end end diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index 65adaf965..83cff5de0 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -172,17 +172,6 @@ RSpec.describe CaseLog do end context "when validating household members" do - it "validate that persons aged under 16 must have relationship Child" do - expect { - described_class.create!( - age2: 14, - relat2: "Partner", - owning_organisation:, - managing_organisation:, - ) - }.to raise_error(ActiveRecord::RecordInvalid) - end - it "validate that persons aged over 70 must be retired" do expect { described_class.create!( diff --git a/spec/models/validations/household_validations_spec.rb b/spec/models/validations/household_validations_spec.rb index 2b620b35e..c06cc6f29 100644 --- a/spec/models/validations/household_validations_spec.rb +++ b/spec/models/validations/household_validations_spec.rb @@ -305,4 +305,136 @@ RSpec.describe Validations::HouseholdValidations do end end end + + describe "household member validations" do + it "validates that only 1 partner exists" do + record.relat2 = "Partner" + record.relat3 = "Partner" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["base"]) + .to include(match I18n.t("validations.household.relat.one_partner")) + end + + it "expects that a tenant can have a partner" do + record.relat3 = "Partner" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["base"]).to be_empty + end + + context "when the household contains a person under 16" do + it "validates that person must be a child of the tenant" do + record.age2 = "14" + record.relat2 = "Partner" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["relat2"]) + .to include(match I18n.t("validations.household.relat.child_under_16", person_num: 2)) + end + + it "expects that person is a child of the tenant" do + record.age2 = "14" + record.relat2 = "Child - includes young adult and grown-up" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["relat2"]).to be_empty + end + + it "validates that person's economic status must be Child" do + record.age2 = "14" + record.ecstat2 = "Full-time - 30 hours or more" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["ecstat2"]) + .to include(match I18n.t("validations.household.ecstat.child_under_16", person_num: 2)) + end + + it "expects that person's economic status is Child" do + record.age2 = "14" + record.ecstat2 = "Child under 16" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["ecstat2"]).to be_empty + end + end + + context "when the household contains a tenant's child between the ages of 16 and 19" do + it "validates that person's economic status must be full time student or refused" do + record.age2 = "17" + record.relat2 = "Child - includes young adult and grown-up" + record.ecstat2 = "Full-time - 30 hours or more" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["ecstat2"]) + .to include(match I18n.t("validations.household.ecstat.student_16_19", person_num: 2)) + end + + it "expects that person can be a full time student" do + record.age2 = "17" + record.relat2 = "Child - includes young adult and grown-up" + record.ecstat2 = "Full-time student" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["ecstat2"]).to be_empty + end + + it "expects that person can refuse to share their work status" do + record.age2 = "17" + record.relat2 = "Child - includes young adult and grown-up" + record.ecstat2 = "Prefer not to say" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["ecstat2"]).to be_empty + end + end + + context "when the household contains a person over 70" do + it "validates that person must be retired" do + record.age2 = "71" + record.ecstat2 = "Full-time - 30 hours or more" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["ecstat2"]) + .to include(match I18n.t("validations.household.ecstat.retired_over_70", person_num: 2)) + end + + it "expects that person is retired" do + record.age2 = "50" + record.ecstat2 = "Full-time - 30 hours or more" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["ecstat2"]).to be_empty + end + end + + context "when the household contains a retired male" do + it "validates that person must be over 65" do + record.age2 = "64" + record.sex2 = "Male" + record.ecstat2 = "Retired" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["age2"]) + .to include(match I18n.t("validations.household.age.retired_male")) + end + + it "expects that person is over 65" do + record.age2 = "66" + record.sex2 = "Male" + record.ecstat2 = "Retired" + household_validator.validate_household_number_of_other_members(record) + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["ecstat2"]).to be_empty + end + end + + context "when the household contains a retired female" do + it "validates that person must be over 60" do + record.age2 = "59" + record.sex2 = "Female" + record.ecstat2 = "Retired" + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["age2"]) + .to include(match I18n.t("validations.household.age.retired_female")) + end + + it "expects that person is over 60" do + record.age2 = "61" + record.sex2 = "Female" + record.ecstat2 = "Retired" + household_validator.validate_household_number_of_other_members(record) + household_validator.validate_household_number_of_other_members(record) + expect(record.errors["ecstat2"]).to be_empty + end + end + end end