Browse Source

CLDC-853 Add new tests for new page and refactor slightly

pull/1101/head
David May-Miller 3 years ago committed by Arthur Campbell
parent
commit
0e331511b0
  1. 1
      app/models/validations/sales/financial_validations.rb
  2. 1
      app/models/validations/sales/household_validations.rb
  3. 9
      app/models/validations/sales/shared_validations.rb
  4. 30
      spec/models/validations/sales/financial_validations_spec.rb
  5. 18
      spec/models/validations/sales/shared_validations_spec.rb

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

@ -1,4 +1,5 @@
module Validations::Sales::FinancialValidations
include Validations::Sales::SharedValidations
# Validations methods need to be called 'validate_<page_name>' to run on model save
# or 'validate_' to run on submit as well

1
app/models/validations/sales/household_validations.rb

@ -1,5 +1,6 @@
module Validations::Sales::HouseholdValidations
include Validations::SharedValidations
include Validations::Sales::SharedValidations
def validate_household_number_of_other_members(record)
(2..6).each do |n|

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

@ -0,0 +1,9 @@
module Validations::Sales::SharedValidations
def child_income_validation(record, field)
if record.relat2 && record.income2
if record.relat2 == "C" && record.income2 > 0
record.errors.add field, I18n.t("validations.financial.income.child_has_income")
end
end
end
end

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

@ -28,6 +28,14 @@ RSpec.describe Validations::Sales::FinancialValidations do
expect(record.errors["postcode_full"])
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 80_000))
end
it "adds an error when buyer 2 income is over hard max for ecstat #{ecstat}" do
record.income1 = 85_000
record.ecstat1 = ecstat
financial_validator.validate_income2(record)
expect(record.errors["income2"])
.to include(match I18n.t("validations.financial.income.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
@ -40,6 +48,17 @@ RSpec.describe Validations::Sales::FinancialValidations do
expect(record.errors["la"]).to be_empty
expect(record.errors["postcode_full"]).to be_empty
end
it "adds an error when combined income is over the limit" do
record.income1 = 45_000
record.income2 = 40_000
financial_validator.validate_income1(record)
financial_validator.validate_income2(record)
expect(record.errors["income1"])
.to include(match I18n.t("validations.financial.income.combined_over_hard_max", hard_max: 80_000))
expect(record.errors["income2"])
.to include(match I18n.t("validations.financial.income.combined_over_hard_max", hard_max: 80_000))
end
end
context "and a london borough" do
@ -78,6 +97,17 @@ RSpec.describe Validations::Sales::FinancialValidations do
expect(record.errors["la"]).to be_empty
expect(record.errors["postcode_full"]).to be_empty
end
it "adds an error when combined income is over the limit" do
record.income1 = 50_000
record.income2 = 45_000
financial_validator.validate_income1(record)
financial_validator.validate_income2(record)
expect(record.errors["income1"])
.to include(match I18n.t("validations.financial.income.combined_over_hard_max", hard_max: 90_000))
expect(record.errors["income2"])
.to include(match I18n.t("validations.financial.income.combined_over_hard_max", hard_max: 90_000))
end
end
end
end

18
spec/models/validations/sales/shared_validations_spec.rb

@ -0,0 +1,18 @@
require "rails_helper"
RSpec.describe Validations::Sales::SharedValidations do
subject(:household_validator) { validator_class.new }
let(:validator_class) { Class.new { include Validations::Sales::HouseholdValidations } }
let(:record) { FactoryBot.create(:sales_log) }
describe "child income validation" do
it "adds an error when a child has an income greater than 0" do
record.relat2 = "C"
record.income2 = 100
household_validator.validate_relat2(record)
expect(record.errors["relat2"])
.to include(match I18n.t("validations.financial.income.child_has_income"))
end
end
end
Loading…
Cancel
Save