Browse Source

amend child income validation to reflect specifications and write tests to cover this validation

pull/1101/head
Arthur Campbell 3 years ago
parent
commit
1f6116b2c3
  1. 9
      app/models/validations/sales/financial_validations.rb
  2. 35
      spec/models/validations/sales/financial_validations_spec.rb

9
app/models/validations/sales/financial_validations.rb

@ -53,18 +53,13 @@ module Validations::Sales::FinancialValidations
end end
def validate_child_income(record) def validate_child_income(record)
return unless record.income2 && (record.relat2 || record.ecstat2) return unless record.income2 && record.ecstat2
if record.income2.positive? if record.income2.positive? && is_economic_status_child?(record.ecstat2)
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 :ecstat2, I18n.t("validations.financial.income.child_has_income")
record.errors.add :income2, I18n.t("validations.financial.income.child_has_income") record.errors.add :income2, I18n.t("validations.financial.income.child_has_income")
end end
end end
end
def validate_percentage_owned_not_too_much_if_older_person(record) def validate_percentage_owned_not_too_much_if_older_person(record)
return unless record.old_persons_shared_ownership? && record.stairowned return unless record.old_persons_shared_ownership? && record.stairowned

35
spec/models/validations/sales/financial_validations_spec.rb

@ -229,4 +229,39 @@ RSpec.describe Validations::Sales::FinancialValidations do
end end
end 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 end

Loading…
Cancel
Save