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 module Validations::Sales::FinancialValidations
include Validations::Sales::SharedValidations
# Validations methods need to be called 'validate_<page_name>' to run on model save # Validations methods need to be called 'validate_<page_name>' to run on model save
# or 'validate_' to run on submit as well # or 'validate_' to run on submit as well

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

@ -1,5 +1,6 @@
module Validations::Sales::HouseholdValidations module Validations::Sales::HouseholdValidations
include Validations::SharedValidations include Validations::SharedValidations
include Validations::Sales::SharedValidations
def validate_household_number_of_other_members(record) def validate_household_number_of_other_members(record)
(2..6).each do |n| (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"]) expect(record.errors["postcode_full"])
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 80_000)) .to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 80_000))
end 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 end
it "validates that the income is within the expected range for the tenant’s employment status" do 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["la"]).to be_empty
expect(record.errors["postcode_full"]).to be_empty expect(record.errors["postcode_full"]).to be_empty
end 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 end
context "and a london borough" do 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["la"]).to be_empty
expect(record.errors["postcode_full"]).to be_empty expect(record.errors["postcode_full"]).to be_empty
end 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 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