You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.8 KiB
78 lines
2.8 KiB
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 |
|
context "and non london borough" 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 |
|
end |
|
|
|
context "and a london borough" do |
|
before do |
|
record.update!(la: "E09000030") |
|
record.reload |
|
end |
|
|
|
(0..8).each do |ecstat| |
|
it "adds an error when buyer 1 income is over hard max for ecstat #{ecstat}" do |
|
record.income1 = 95_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: 90_000)) |
|
end |
|
end |
|
|
|
it "validates that the income is within the expected range for the tenant’s employment status" do |
|
record.income1 = 85_000 |
|
record.ecstat1 = 1 |
|
financial_validator.validate_income1(record) |
|
expect(record.errors["income1"]).to be_empty |
|
end |
|
end |
|
end |
|
end |
|
|
|
describe "#validate_cash_discount" do |
|
let(:record) { FactoryBot.create(:sales_log) } |
|
|
|
it "adds an error if the cash discount is below zero" do |
|
record.cashdis = -1 |
|
financial_validator.validate_cash_discount(record) |
|
expect(record.errors["cashdis"]).to include(match I18n.t("validations.financial.cash_discount_invalid")) |
|
end |
|
|
|
it "adds an error if the cash discount is one million or more" do |
|
record.cashdis = 1_000_000 |
|
financial_validator.validate_cash_discount(record) |
|
expect(record.errors["cashdis"]).to include(match I18n.t("validations.financial.cash_discount_invalid")) |
|
end |
|
|
|
it "does not add an error if the cash discount is in the expected range" do |
|
record.cashdis = 10_000 |
|
financial_validator.validate_cash_discount(record) |
|
expect(record.errors["cashdis"]).to be_empty |
|
end |
|
end |
|
end
|
|
|