Browse Source

add tests for staircasing validations

pull/3001/head
Carolyn 2 months ago
parent
commit
750ea73c12
  1. 79
      spec/models/validations/sales/financial_validations_spec.rb
  2. 169
      spec/models/validations/sales/sale_information_validations_spec.rb

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

@ -507,5 +507,84 @@ RSpec.describe Validations::Sales::FinancialValidations do
expect(record.errors).to be_empty expect(record.errors).to be_empty
end end
end end
describe "#validate_staircase_difference_enough_for_numstair" do
let(:record) { FactoryBot.build(:sales_log) }
it "adds errors if stairowned is not enough more than stairbought + equity" do
record.stairowned = 20
record.stairbought = 10
record.equity = 9
record.numstair = 3
financial_validator.validate_staircase_difference_enough_for_numstair(record)
expect(record.errors["equity"]).to include(I18n.t("validations.sales.financial.equity.more_than_stairowned_minus_stairbought_minus_prev_staircasing", equity: 9, bought: 10, numprevstair: 2, equity_sum: 21, stair_total: 20))
expect(record.errors["stairowned"]).to include(I18n.t("validations.sales.financial.equity.more_than_stairowned_minus_stairbought_minus_prev_staircasing", equity: 9, bought: 10, numprevstair: 2, equity_sum: 21, stair_total: 20))
expect(record.errors["stairbought"]).to include(I18n.t("validations.sales.financial.equity.more_than_stairowned_minus_stairbought_minus_prev_staircasing", equity: 9, bought: 10, numprevstair: 2, equity_sum: 21, stair_total: 20))
expect(record.errors["numstair"]).to include(I18n.t("validations.sales.financial.equity.more_than_stairowned_minus_stairbought_minus_prev_staircasing", equity: 9, bought: 10, numprevstair: 2, equity_sum: 21, stair_total: 20))
end
it "does not add errors if stairowned is enough more than stairbought + equity" do
record.stairowned = 25
record.stairbought = 10
record.equity = 9
record.numstair = 3
financial_validator.validate_staircase_difference_enough_for_numstair(record)
expect(record.errors).to be_empty
end
it "does not add errors if stairowned exactly equals minimum" do
record.stairowned = 20
record.stairbought = 10
record.equity = 9
record.numstair = 2
financial_validator.validate_staircase_difference_enough_for_numstair(record)
expect(record.errors).to be_empty
end
it "does not add errors if equity + stairbought is more than stairowned" do
record.stairbought = 2
record.stairowned = 3
record.equity = 2.5
record.jointpur = 2
financial_validator.validate_staircase_difference_enough_for_numstair(record)
expect(record.errors).to be_empty
end
it "does not add errors if stairowned is not given" do
record.stairbought = 20
record.stairowned = nil
record.equity = 15
record.numstair = 4
financial_validator.validate_staircase_difference_enough_for_numstair(record)
expect(record.errors).to be_empty
end
it "does not add errors if stairbought is not given" do
record.stairbought = nil
record.stairowned = 10
record.equity = 20
record.numstair = 4
financial_validator.validate_staircase_difference_enough_for_numstair(record)
expect(record.errors).to be_empty
end
it "does not add errors if equity is not given" do
record.stairbought = 25
record.stairowned = 10
record.equity = nil
record.numstair = 4
financial_validator.validate_staircase_difference_enough_for_numstair(record)
expect(record.errors).to be_empty
end
it "does not add errors if numstair is not given" do
record.stairbought = 10
record.stairowned = 40
record.equity = 25
record.numstair = nil
financial_validator.validate_staircase_difference_enough_for_numstair(record)
expect(record.errors).to be_empty
end
end
end end
end end

169
spec/models/validations/sales/sale_information_validations_spec.rb

@ -182,6 +182,175 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
end end
end end
describe "#validate_staircasing_initial_purchase_date" do
context "when initial purchase date blank" do
let(:record) { build(:sales_log, initialpurchase: nil) }
it "does not add an error" do
sale_information_validator.validate_staircasing_initial_purchase_date(record)
expect(record.errors[:initialpurchase]).not_to be_present
end
end
context "when initial purchase date in 1979" do
let(:record) { build(:sales_log, initialpurchase: Date.new(1979, 12, 31)) }
it "adds an error" do
sale_information_validator.validate_staircasing_initial_purchase_date(record)
expect(record.errors[:initialpurchase]).to be_present
end
end
context "when initial purchase date in 1980" do
let(:record) { build(:sales_log, initialpurchase: Date.new(1980, 1, 1)) }
it "does not add an error" do
sale_information_validator.validate_staircasing_initial_purchase_date(record)
expect(record.errors[:initialpurchase]).not_to be_present
end
end
context "when initial purchase date before saledate" do
let(:record) { build(:sales_log, initialpurchase: 2.months.ago, saledate: 1.month.ago) }
it "does not add the error" do
sale_information_validator.validate_staircasing_initial_purchase_date(record)
expect(record.errors[:initialpurchase]).not_to be_present
end
end
context "when initial purchase date after saledate" do
let(:record) { build(:sales_log, initialpurchase: 1.month.ago, saledate: 2.months.ago) }
it "adds error" do
sale_information_validator.validate_staircasing_initial_purchase_date(record)
expect(record.errors[:initialpurchase]).to eq(
[I18n.t("validations.sales.sale_information.initialpurchase.must_be_before_saledate")],
)
expect(record.errors[:saledate]).to eq(
[I18n.t("validations.sales.sale_information.saledate.must_be_after_initial_purchase_date")],
)
end
end
context "when initial purchase date == saledate" do
let(:record) { build(:sales_log, initialpurchase: Time.zone.parse("2023-07-01"), saledate: Time.zone.parse("2023-07-01")) }
it "does not add an error" do
sale_information_validator.validate_staircasing_initial_purchase_date(record)
expect(record.errors[:initialpurchase]).not_to be_present
end
end
end
describe "#validate_staircasing_last_transaction_date" do
context "when last transaction date blank" do
let(:record) { build(:sales_log, lasttransaction: nil) }
it "does not add an error" do
sale_information_validator.validate_staircasing_last_transaction_date(record)
expect(record.errors[:lasttransaction]).not_to be_present
end
end
context "when last transaction date in 1979" do
let(:record) { build(:sales_log, lasttransaction: Date.new(1979, 12, 31)) }
it "adds an error" do
sale_information_validator.validate_staircasing_last_transaction_date(record)
expect(record.errors[:lasttransaction]).to be_present
end
end
context "when last transaction date in 1980" do
let(:record) { build(:sales_log, lasttransaction: Date.new(1980, 1, 1)) }
it "does not add an error" do
sale_information_validator.validate_staircasing_last_transaction_date(record)
expect(record.errors[:lasttransaction]).not_to be_present
end
end
context "when last transaction date before saledate" do
let(:record) { build(:sales_log, lasttransaction: 2.months.ago, saledate: 1.month.ago) }
it "does not add the error" do
sale_information_validator.validate_staircasing_last_transaction_date(record)
expect(record.errors[:lasttransaction]).not_to be_present
end
end
context "when last transaction date after saledate" do
let(:record) { build(:sales_log, lasttransaction: 1.month.ago, saledate: 2.months.ago) }
it "adds error" do
sale_information_validator.validate_staircasing_last_transaction_date(record)
expect(record.errors[:lasttransaction]).to eq(
[I18n.t("validations.sales.sale_information.lasttransaction.must_be_before_saledate")],
)
expect(record.errors[:saledate]).to eq(
[I18n.t("validations.sales.sale_information.saledate.must_be_after_last_transaction_date")],
)
end
end
context "when last transaction date == saledate" do
let(:record) { build(:sales_log, lasttransaction: Time.zone.parse("2023-07-01"), saledate: Time.zone.parse("2023-07-01")) }
it "does not add an error" do
sale_information_validator.validate_staircasing_last_transaction_date(record)
expect(record.errors[:lasttransaction]).not_to be_present
end
end
context "when last transaction date after initial purchase date" do
let(:record) { build(:sales_log, initialpurchase: 2.months.ago, lasttransaction: 1.month.ago) }
it "does not add the error" do
sale_information_validator.validate_staircasing_last_transaction_date(record)
expect(record.errors[:lasttransaction]).not_to be_present
end
end
context "when last transaction date before initial purchase date" do
let(:record) { build(:sales_log, initialpurchase: 1.month.ago, lasttransaction: 2.months.ago) }
it "adds error" do
sale_information_validator.validate_staircasing_last_transaction_date(record)
expect(record.errors[:lasttransaction]).to eq(
[I18n.t("validations.sales.sale_information.lasttransaction.must_be_after_initial_purchase")],
)
expect(record.errors[:initialpurchase]).to eq(
[I18n.t("validations.sales.sale_information.initialpurchase.must_be_before_last_transaction")],
)
end
end
context "when last transaction date == initial purchase date" do
let(:record) { build(:sales_log, lasttransaction: Time.zone.parse("2023-07-01"), initialpurchase: Time.zone.parse("2023-07-01")) }
it "does not add an error" do
sale_information_validator.validate_staircasing_last_transaction_date(record)
expect(record.errors[:lasttransaction]).not_to be_present
end
end
end
describe "#validate_previous_property_unit_type" do describe "#validate_previous_property_unit_type" do
context "when number of bedrooms is <= 1" do context "when number of bedrooms is <= 1" do
let(:record) { FactoryBot.build(:sales_log, frombeds: 1, fromprop: 2) } let(:record) { FactoryBot.build(:sales_log, frombeds: 1, fromprop: 2) }

Loading…
Cancel
Save