Browse Source

revamp financial validations tests against income to reflect updates

pull/1101/head
Arthur Campbell 3 years ago
parent
commit
fbd2f4bca8
  1. 243
      spec/models/validations/sales/financial_validations_spec.rb

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

@ -5,109 +5,146 @@ RSpec.describe Validations::Sales::FinancialValidations do
let(:validator_class) { Class.new { include Validations::Sales::FinancialValidations } } let(:validator_class) { Class.new { include Validations::Sales::FinancialValidations } }
describe "income validations" do describe "income validations for shared ownership" do
let(:record) { FactoryBot.create(:sales_log, ownershipsch: 1, la: "E08000035") } let(:record) { FactoryBot.create(:sales_log, ownershipsch: 1) }
context "with shared ownership" do context "in a non london borough" do
context "and non london borough" do before do
(0..8).each do |ecstat| record.update!(la: "E08000035")
it "adds an error when buyer 1 income is over hard max for ecstat #{ecstat}" do record.reload
record.income1 = 85_000 end
record.ecstat1 = ecstat
financial_validator.validate_income1(record) it "adds errors if buyer 1's economic status is not child and has income over 80,000" do
expect(record.errors["income1"]) record.income1 = 85_000
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 80_000)) record.ecstat1 = rand(0..8)
expect(record.errors["income1"]) financial_validator.validate_income1(record)
.to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000)) expect(record.errors["income1"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000))
expect(record.errors["ecstat1"]) expect(record.errors["ecstat1"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000))
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 80_000)) expect(record.errors["ownershipsch"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000))
expect(record.errors["ownershipsch"]) expect(record.errors["la"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000))
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 80_000)) expect(record.errors["postcode_full"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000))
expect(record.errors["la"]) end
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 80_000))
expect(record.errors["postcode_full"]) it "adds errors if buyer 2's economic status is not child and has income over 80,000" do
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 80_000)) record.income2 = 85_000
end record.ecstat2 = rand(0..8)
financial_validator.validate_income2(record)
it "adds an error when buyer 2 income is over hard max for ecstat #{ecstat}" do expect(record.errors["income2"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000))
record.income2 = 85_000 expect(record.errors["ecstat2"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000))
record.ecstat2 = ecstat expect(record.errors["ownershipsch"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000))
financial_validator.validate_income2(record) expect(record.errors["la"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000))
expect(record.errors["income2"]) expect(record.errors["postcode_full"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000))
.to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 80_000)) end
end
end it "does not add errors if buyer 1 has not set economic status" do
record.income1 = 85_000
it "validates that the income is within the expected range for the tenant’s employment status" do financial_validator.validate_income1(record)
record.income1 = 75_000 expect(record.errors).to be_empty
record.ecstat1 = 1 end
financial_validator.validate_income1(record)
expect(record.errors["income1"]).to be_empty it "does not add errors if buyer 1 has income below 80_000" do
expect(record.errors["ecstat1"]).to be_empty record.income1 = 75_000
expect(record.errors["ownershipsch"]).to be_empty record.ecstat1 = rand(0..8)
expect(record.errors["la"]).to be_empty financial_validator.validate_income1(record)
expect(record.errors["postcode_full"]).to be_empty expect(record.errors).to be_empty
end end
it "adds an error when combined income is over the limit" do it "does not add errors if buyer 2 has not set economic status" do
record.income1 = 45_000 record.income2 = 85_000
record.income2 = 40_000 financial_validator.validate_income2(record)
financial_validator.validate_income1(record) expect(record.errors).to be_empty
financial_validator.validate_income2(record) end
expect(record.errors["income1"])
.to include(match I18n.t("validations.financial.income.combined_over_hard_max", hard_max: 80_000)) it "does not add errors if buyer 2 has income below 80_000" do
expect(record.errors["income2"]) record.income2 = 75_000
.to include(match I18n.t("validations.financial.income.combined_over_hard_max", hard_max: 80_000)) record.ecstat2 = rand(0..8)
end financial_validator.validate_income2(record)
end expect(record.errors).to be_empty
end
context "and a london borough" do
before do it "adds errors when combined income is over 80_000" do
record.update!(la: "E09000030") record.income1 = 45_000
record.reload record.income2 = 40_000
end financial_validator.validate_combined_income(record)
expect(record.errors["income1"]).to include(match I18n.t("validations.financial.income.combined_over_hard_max", hard_max: 80_000))
(0..8).each do |ecstat| expect(record.errors["income2"]).to include(match I18n.t("validations.financial.income.combined_over_hard_max", hard_max: 80_000))
it "adds an error when buyer 1 income is over hard max for ecstat #{ecstat}" do end
record.income1 = 95_000
record.ecstat1 = ecstat it "does not add errors when combined income is under 80_000" do
financial_validator.validate_income1(record) record.income1 = 35_000
expect(record.errors["income1"]) record.income2 = 40_000
.to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 90_000)) financial_validator.validate_combined_income(record)
expect(record.errors["income1"]) expect(record.errors).to be_empty
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 90_000)) end
expect(record.errors["ecstat1"]) end
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 90_000))
expect(record.errors["ownershipsch"]) context "in a london borough" do
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 90_000)) before do
expect(record.errors["la"]) record.update!(la: "E09000030")
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 90_000)) record.reload
expect(record.errors["postcode_full"]) end
.to include(match I18n.t("validations.financial.income1.over_hard_max", hard_max: 90_000))
end it "adds errors if buyer 1's economic status is not child and has income over 90,000" do
end record.income1 = 95_000
record.ecstat1 = rand(0..8)
it "validates that the income is within the expected range for the tenant’s employment status" do financial_validator.validate_income1(record)
record.income1 = 85_000 expect(record.errors["income1"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 90_000))
record.ecstat1 = 1 expect(record.errors["ecstat1"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 90_000))
financial_validator.validate_income1(record) expect(record.errors["ownershipsch"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 90_000))
expect(record.errors["income1"]).to be_empty expect(record.errors["la"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 90_000))
expect(record.errors["ecstat1"]).to be_empty expect(record.errors["postcode_full"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 90_000))
expect(record.errors["ownershipsch"]).to be_empty end
expect(record.errors["la"]).to be_empty
expect(record.errors["postcode_full"]).to be_empty it "adds errors if buyer 2's economic status is not child and has income over 90,000" do
end record.income2 = 95_000
record.ecstat2 = rand(0..8)
it "adds an error when combined income is over the limit" do financial_validator.validate_income2(record)
record.income1 = 50_000 expect(record.errors["income2"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 90_000))
record.income2 = 45_000 expect(record.errors["ecstat2"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 90_000))
financial_validator.validate_income1(record) expect(record.errors["ownershipsch"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 90_000))
financial_validator.validate_income2(record) expect(record.errors["la"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 90_000))
expect(record.errors["income1"]) expect(record.errors["postcode_full"]).to include(match I18n.t("validations.financial.income.over_hard_max", hard_max: 90_000))
.to include(match I18n.t("validations.financial.income.combined_over_hard_max", hard_max: 90_000)) end
expect(record.errors["income2"])
.to include(match I18n.t("validations.financial.income.combined_over_hard_max", hard_max: 90_000)) it "does not add errors if buyer 1 has not set economic status" do
end record.income1 = 95_000
financial_validator.validate_income1(record)
expect(record.errors).to be_empty
end
it "does not add errors if buyer 1 has income below 90_000" do
record.income1 = 75_000
record.ecstat1 = rand(0..8)
financial_validator.validate_income1(record)
expect(record.errors).to be_empty
end
it "does not add errors if buyer 2 has not set economic status" do
record.income2 = 95_000
financial_validator.validate_income2(record)
expect(record.errors).to be_empty
end
it "does not add errors if buyer 2 has income below 90_000" do
record.income2 = 75_000
record.ecstat2 = rand(0..8)
financial_validator.validate_income2(record)
expect(record.errors).to be_empty
end
it "adds errors when combined income is over 90_000" do
record.income1 = 55_000
record.income2 = 40_000
financial_validator.validate_combined_income(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
it "does not add errors when combined income is under 90_000" do
record.income1 = 35_000
record.income2 = 40_000
financial_validator.validate_combined_income(record)
expect(record.errors).to be_empty
end end
end end
end end

Loading…
Cancel
Save