From 1c72c6bb21c22beba671f8077b6f56b1973f7696 Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Wed, 1 Feb 2023 15:57:16 +0000 Subject: [PATCH] move validation on child income to financial validations to stop it being triggered on lettings logs, minor amendments to tests broken by changes --- .../sales/financial_validations.rb | 28 +++++++++++++++++-- app/models/validations/shared_validations.rb | 8 ------ spec/models/sales_log_spec.rb | 1 + 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/app/models/validations/sales/financial_validations.rb b/app/models/validations/sales/financial_validations.rb index e18078987..604f468e2 100644 --- a/app/models/validations/sales/financial_validations.rb +++ b/app/models/validations/sales/financial_validations.rb @@ -25,10 +25,10 @@ module Validations::Sales::FinancialValidations end def validate_combined_income(record) - return unless record.ecstat1 && record.income1 && record.ecstat2 && record.income2 && record.la && record.ownershipsch == 1 + return unless record.income1 && record.income2 && record.la && record.ownershipsch == 1 combined_income = record.income1 + record.income2 - relevant_fields = %i[income1 ecstat1 income2 ecstat2 ownershipsch la postcode_full] + relevant_fields = %i[income1 income2 ownershipsch la postcode_full] if record.london_property? && combined_income > 90_000 relevant_fields.each { |field| record.errors.add field, I18n.t("validations.financial.income.combined_over_hard_max", hard_max: 90_000) } elsif record.property_not_in_london? && combined_income > 80_000 @@ -52,6 +52,20 @@ module Validations::Sales::FinancialValidations end end + def validate_child_income(record) + return unless record.income2 && (record.relat2 || record.ecstat2) + + if record.income2.positive? + if is_relationship_child? record.relat2 + record.errors.add :relat2, I18n.t("validations.financial.income.child_has_income") + record.errors.add :income2, I18n.t("validations.financial.income.child_has_income") + elsif is_economic_status_child? record.ecstat2 + record.errors.add :ecstat2, I18n.t("validations.financial.income.child_has_income") + record.errors.add :income2, I18n.t("validations.financial.income.child_has_income") + end + end + end + def validate_percentage_owned_not_too_much_if_older_person(record) return unless record.old_persons_shared_ownership? && record.stairowned @@ -60,4 +74,14 @@ module Validations::Sales::FinancialValidations record.errors.add :type, I18n.t("validations.financial.staircasing.older_person_percentage_owned_maximum_75") end end + +private + + def is_relationship_child?(relationship) + relationship == "C" + end + + def is_economic_status_child?(economic_status) + economic_status == 9 + end end diff --git a/app/models/validations/shared_validations.rb b/app/models/validations/shared_validations.rb index fae376624..bffd6daa2 100644 --- a/app/models/validations/shared_validations.rb +++ b/app/models/validations/shared_validations.rb @@ -139,12 +139,4 @@ private record.errors.add question.id.to_sym, I18n.t("validations.numeric.above_min", field:, min:) end end - - def is_relationship_child?(relationship) - relationship == "C" - end - - def is_economic_status_child?(economic_status) - economic_status == 9 - end end diff --git a/spec/models/sales_log_spec.rb b/spec/models/sales_log_spec.rb index 42bf9d4cd..5d6df47ab 100644 --- a/spec/models/sales_log_spec.rb +++ b/spec/models/sales_log_spec.rb @@ -261,6 +261,7 @@ RSpec.describe SalesLog, type: :model do relat4: "X", relat5: "X", relat6: "P", + income2: 0, ecstat2: 9, ecstat3: 7, age1: 47,