From 7e30cf3293ee2b73ee5a90f39c71b90481fcc8de Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Thu, 12 Jan 2023 17:17:27 +0000 Subject: [PATCH] refactor: DRYing --- app/models/validations/household_validations.rb | 13 +------------ .../validations/sales/household_validations.rb | 13 +++---------- app/models/validations/shared_validations.rb | 13 +++++++++++++ 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/app/models/validations/household_validations.rb b/app/models/validations/household_validations.rb index 7053d3571..692800a87 100644 --- a/app/models/validations/household_validations.rb +++ b/app/models/validations/household_validations.rb @@ -47,7 +47,7 @@ module Validations::HouseholdValidations validate_person_age_matches_relationship(record, n) validate_person_age_and_relationship_matches_economic_status(record, n) end - validate_partner_count(record) + shared_validate_partner_count(record, 6) end def validate_person_1_economic(record) @@ -183,13 +183,6 @@ private end end - def validate_partner_count(record) - partner_count = (2..8).count { |n| tenant_is_partner?(record["relat#{n}"]) } - if partner_count > 1 - record.errors.add :base, I18n.t("validations.household.relat.one_partner") - end - end - def tenant_is_economic_child?(economic_status) economic_status == 9 end @@ -202,10 +195,6 @@ private economic_status == 10 end - def tenant_is_partner?(relationship) - relationship == "P" - end - def tenant_is_child?(relationship) relationship == "C" end diff --git a/app/models/validations/sales/household_validations.rb b/app/models/validations/sales/household_validations.rb index ee1626760..c142cd0e1 100644 --- a/app/models/validations/sales/household_validations.rb +++ b/app/models/validations/sales/household_validations.rb @@ -1,4 +1,6 @@ module Validations::Sales::HouseholdValidations + include Validations::SharedValidations + def validate_number_of_other_people_living_in_the_property(record) return if record.hholdcount.blank? @@ -8,15 +10,6 @@ module Validations::Sales::HouseholdValidations end def validate_partner_count(record) - partner_count = (2..6).count { |n| tenant_is_partner?(record["relat#{n}"]) } - if partner_count > 1 - record.errors.add :base, I18n.t("validations.household.relat.one_partner") - end - end - -private - - def tenant_is_partner?(relationship) - relationship == "P" + shared_validate_partner_count(record, 8) end end diff --git a/app/models/validations/shared_validations.rb b/app/models/validations/shared_validations.rb index 2694fd743..f15f9bb66 100644 --- a/app/models/validations/shared_validations.rb +++ b/app/models/validations/shared_validations.rb @@ -68,4 +68,17 @@ module Validations::SharedValidations { scope: status, date: date&.to_formatted_s(:govuk_date), deactivation_date: closest_reactivation&.deactivation_date&.to_formatted_s(:govuk_date) } end + + def shared_validate_partner_count(record, max_people) + partner_count = (2..max_people).count { |n| tenant_is_partner?(record["relat#{n}"]) } + if partner_count > 1 + record.errors.add :base, I18n.t("validations.household.relat.one_partner") + end + end + +private + + def tenant_is_partner?(relationship) + relationship == "P" + end end