From 1f6116b2c35eafda68bee708ed61f1ca4e610d6f Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Wed, 1 Feb 2023 16:33:20 +0000 Subject: [PATCH] amend child income validation to reflect specifications and write tests to cover this validation --- .../sales/financial_validations.rb | 15 +++----- .../sales/financial_validations_spec.rb | 35 +++++++++++++++++++ 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/app/models/validations/sales/financial_validations.rb b/app/models/validations/sales/financial_validations.rb index 604f468e2..5bb41a8ac 100644 --- a/app/models/validations/sales/financial_validations.rb +++ b/app/models/validations/sales/financial_validations.rb @@ -53,16 +53,11 @@ module Validations::Sales::FinancialValidations 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 + return unless record.income2 && record.ecstat2 + + if record.income2.positive? && 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 diff --git a/spec/models/validations/sales/financial_validations_spec.rb b/spec/models/validations/sales/financial_validations_spec.rb index 3f0e4bb0b..22efbd8f9 100644 --- a/spec/models/validations/sales/financial_validations_spec.rb +++ b/spec/models/validations/sales/financial_validations_spec.rb @@ -229,4 +229,39 @@ RSpec.describe Validations::Sales::FinancialValidations do end end end + + describe "#validate_child_income" do + let(:record) { FactoryBot.create(:sales_log) } + + context "when buyer 2 is not a child" do + before do + record.update!(ecstat2: rand(0..8)) + record.reload + end + + it "does not add an error if buyer 2 has an income" do + record.ecstat2 = rand(0..8) + record.income2 = 40_000 + financial_validator.validate_child_income(record) + expect(record.errors).to be_empty + end + end + + context "when buyer 2 is a child" do + it "does not add an error if buyer 2 has no income" do + record.ecstat2 = 9 + record.income2 = 0 + financial_validator.validate_child_income(record) + expect(record.errors).to be_empty + end + + it "adds errors if buyer 2 has an income" do + record.ecstat2 = 9 + record.income2 = 40_000 + financial_validator.validate_child_income(record) + expect(record.errors["ecstat2"]).to include(match I18n.t("validations.financial.income.child_has_income")) + expect(record.errors["income2"]).to include(match I18n.t("validations.financial.income.child_has_income")) + end + end + end end