4 changed files with 60 additions and 0 deletions
@ -0,0 +1,14 @@ |
|||||||
|
module Validations::Sales::FinancialValidations |
||||||
|
# Validations methods need to be called 'validate_<page_name>' to run on model save |
||||||
|
# or 'validate_' to run on submit as well |
||||||
|
|
||||||
|
def validate_income1(record) |
||||||
|
if record.ecstat1 && record.income1 && record.ownershipsch == 1 |
||||||
|
if record.buyer_1_child? && record.income1.positive? |
||||||
|
record.errors.add :income1, I18n.t("validations.financial.income1.child_income") |
||||||
|
elsif record.income1 > 80_000 |
||||||
|
record.errors.add :income1, I18n.t("validations.financial.income1.over_hard_max", hard_max: 80_000) |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,38 @@ |
|||||||
|
require "rails_helper" |
||||||
|
|
||||||
|
RSpec.describe Validations::Sales::FinancialValidations do |
||||||
|
subject(:financial_validator) { validator_class.new } |
||||||
|
|
||||||
|
let(:validator_class) { Class.new { include Validations::Sales::FinancialValidations } } |
||||||
|
|
||||||
|
describe "income validations" do |
||||||
|
let(:record) { FactoryBot.create(:sales_log, ownershipsch: 1) } |
||||||
|
|
||||||
|
context "with shared ownership" do |
||||||
|
(0..8).each do |ecstat| |
||||||
|
it "adds an error when buyer 1 income is over hard max for ecstat #{ecstat}" do |
||||||
|
record.income1 = 85_000 |
||||||
|
record.ecstat1 = ecstat |
||||||
|
financial_validator.validate_income1(record) |
||||||
|
expect(record.errors["income1"]) |
||||||
|
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 80_000)) |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
it "validates that the income is within the expected range for the tenant’s employment status" do |
||||||
|
record.income1 = 75_000 |
||||||
|
record.ecstat1 = 1 |
||||||
|
financial_validator.validate_income1(record) |
||||||
|
expect(record.errors["income1"]).to be_empty |
||||||
|
end |
||||||
|
|
||||||
|
it "validates income correctly if the ecstat is child" do |
||||||
|
record.income1 = 1 |
||||||
|
record.ecstat1 = 9 |
||||||
|
financial_validator.validate_income1(record) |
||||||
|
expect(record.errors["income1"]) |
||||||
|
.to include(match I18n.t("validations.financial.income1.child_income")) |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
Loading…
Reference in new issue