Browse Source

revamp financial validations tests against income to reflect updates

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

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