From 8bdb6e569e173ba5c97268e18c27cf32f54bdca2 Mon Sep 17 00:00:00 2001 From: Dushan Despotovic Date: Mon, 14 Mar 2022 16:16:20 +0000 Subject: [PATCH] add validation for condition_effects --- .../validations/household_validations.rb | 7 ++ config/locales/en.yml | 2 + .../validations/household_validations_spec.rb | 82 +++++++++++++++++++ 3 files changed, 91 insertions(+) diff --git a/app/models/validations/household_validations.rb b/app/models/validations/household_validations.rb index a593b105b..fd33f1699 100644 --- a/app/models/validations/household_validations.rb +++ b/app/models/validations/household_validations.rb @@ -65,6 +65,13 @@ module Validations::HouseholdValidations end end + def validate_condition_effects(record) + all_options = [record.illness_type_1, record.illness_type_2, record.illness_type_3, record.illness_type_4, record.illness_type_5, record.illness_type_6, record.illness_type_7, record.illness_type_8, record.illness_type_9, record.illness_type_10] + if all_options.count(1) >= 1 && record.illness != 0 + record.errors.add :condition_effects, I18n.t("validations.household.condition_effects.no_choices") + end + end + def validate_previous_housing_situation(record) if record.is_relet_to_temp_tenant? && !record.previous_tenancy_was_temporary? record.errors.add :prevten, I18n.t("validations.household.prevten.non_temp_accommodation") diff --git a/config/locales/en.yml b/config/locales/en.yml index 7eb9a57e4..ef3743f45 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -145,6 +145,8 @@ en: male_refuge: "Answer cannot be male as you told us their housing situation immediately before this letting was a refuge" reason: not_internal_transfer: "Answer cannot be permanently decanted from another property owned by this landlord as you told us the source of referral for this tenancy was not an internal transfer" + condition_effects: + no_choices: "You can not provide details about effects of conditions on any of the household members if you have not answered yes to the any of the household having a physical or mental health condition (or other illness) expected to last 12 months or more" tenancy: length: diff --git a/spec/models/validations/household_validations_spec.rb b/spec/models/validations/household_validations_spec.rb index b8a2dba23..1e9f0d126 100644 --- a/spec/models/validations/household_validations_spec.rb +++ b/spec/models/validations/household_validations_spec.rb @@ -482,6 +482,88 @@ RSpec.describe Validations::HouseholdValidations do end end + describe "condition effects validation" do + it "validates vision can't be selected if answer to anyone in household with health condition is not yes" do + record.illness = 1 + record.illness_type_1 = 1 + household_validator.validate_condition_effects(record) + expect(record.errors["condition_effects"]) + .to include(match I18n.t("validations.household.condition_effects.no_choices")) + end + + it "validates hearing can't be selected if answer to anyone in household with health condition is not yes" do + record.illness = 1 + record.illness_type_2 = 1 + household_validator.validate_condition_effects(record) + expect(record.errors["condition_effects"]) + .to include(match I18n.t("validations.household.condition_effects.no_choices")) + end + + it "validates mobility can't be selected if answer to anyone in household with health condition is not yes" do + record.illness = 1 + record.illness_type_3 = 1 + household_validator.validate_condition_effects(record) + expect(record.errors["condition_effects"]) + .to include(match I18n.t("validations.household.condition_effects.no_choices")) + end + + it "validates dexterity can't be selected if answer to anyone in household with health condition is not yes" do + record.illness = 1 + record.illness_type_4 = 1 + household_validator.validate_condition_effects(record) + expect(record.errors["condition_effects"]) + .to include(match I18n.t("validations.household.condition_effects.no_choices")) + end + + it "validates learning or understanding or concentrating can't be selected if answer to anyone in household with health condition is not yes" do + record.illness = 1 + record.illness_type_5 = 1 + household_validator.validate_condition_effects(record) + expect(record.errors["condition_effects"]) + .to include(match I18n.t("validations.household.condition_effects.no_choices")) + end + + it "validates memory can't be selected if answer to anyone in household with health condition is not yes" do + record.illness = 1 + record.illness_type_6 = 1 + household_validator.validate_condition_effects(record) + expect(record.errors["condition_effects"]) + .to include(match I18n.t("validations.household.condition_effects.no_choices")) + end + + it "validates mental health can't be selected if answer to anyone in household with health condition is not yes" do + record.illness = 1 + record.illness_type_7 = 1 + household_validator.validate_condition_effects(record) + expect(record.errors["condition_effects"]) + .to include(match I18n.t("validations.household.condition_effects.no_choices")) + end + + it "validates stamina or breathing or fatigue can't be selected if answer to anyone in household with health condition is not yes" do + record.illness = 1 + record.illness_type_8 = 1 + household_validator.validate_condition_effects(record) + expect(record.errors["condition_effects"]) + .to include(match I18n.t("validations.household.condition_effects.no_choices")) + end + + it "validates socially or behaviourally can't be selected if answer to anyone in household with health condition is not yes" do + record.illness = 1 + record.illness_type_9 = 1 + household_validator.validate_condition_effects(record) + expect(record.errors["condition_effects"]) + .to include(match I18n.t("validations.household.condition_effects.no_choices")) + end + + it "validates other can't be selected if answer to anyone in household with health condition is not yes" do + record.illness = 1 + record.illness_type_10 = 1 + household_validator.validate_condition_effects(record) + expect(record.errors["condition_effects"]) + .to include(match I18n.t("validations.household.condition_effects.no_choices")) + end + end + describe "accessibility requirement validations" do it "validates that mutually exclusive options can't be selected together" do record.housingneeds_a = 1