Browse Source

faet: add validation and tests

pull/1218/head
natdeanlewissoftwire 3 years ago
parent
commit
8db685a56d
  1. 15
      app/models/validations/sales/sale_information_validations.rb
  2. 67
      spec/models/validations/sales/sale_information_validations_spec.rb

15
app/models/validations/sales/sale_information_validations.rb

@ -7,11 +7,24 @@ module Validations::Sales::SaleInformationValidations
end end
end end
def validate_pratical_completion_date_before_saledate(record) def validate_practical_completion_date_before_saledate(record)
return if record.saledate.blank? || record.hodate.blank? return if record.saledate.blank? || record.hodate.blank?
unless record.saledate > record.hodate unless record.saledate > record.hodate
record.errors.add :hodate, "Practical completion or handover date must be before exchange date" record.errors.add :hodate, "Practical completion or handover date must be before exchange date"
end end
end end
def validate_years_living_in_property_before_purchase(record)
return unless record.proplen && record.proplen.nonzero?
case record.type
when 18
record.errors.add :type, "Social HomeBuy buyers should not have lived here before"
record.errors.add :proplen, "Social HomeBuy or Rent to Buy buyers should not have lived here before"
when 28, 29
record.errors.add :type, "Rent to Buy buyers should not have lived here before"
record.errors.add :proplen, "Rent to Buy buyers should not have lived here before"
end
end
end end

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

@ -47,12 +47,12 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
end end
end end
describe "#validate_pratical_completion_date_before_saledate" do describe "#validate_practical_completion_date_before_saledate" do
context "when hodate blank" do context "when hodate blank" do
let(:record) { build(:sales_log, hodate: nil) } let(:record) { build(:sales_log, hodate: nil) }
it "does not add an error" do it "does not add an error" do
sale_information_validator.validate_pratical_completion_date_before_saledate(record) sale_information_validator.validate_practical_completion_date_before_saledate(record)
expect(record.errors).not_to be_present expect(record.errors).not_to be_present
end end
@ -62,7 +62,7 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
let(:record) { build(:sales_log, saledate: nil) } let(:record) { build(:sales_log, saledate: nil) }
it "does not add an error" do it "does not add an error" do
sale_information_validator.validate_pratical_completion_date_before_saledate(record) sale_information_validator.validate_practical_completion_date_before_saledate(record)
expect(record.errors).not_to be_present expect(record.errors).not_to be_present
end end
@ -72,7 +72,7 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
let(:record) { build(:sales_log, hodate: nil, saledate: nil) } let(:record) { build(:sales_log, hodate: nil, saledate: nil) }
it "does not add an error" do it "does not add an error" do
sale_information_validator.validate_pratical_completion_date_before_saledate(record) sale_information_validator.validate_practical_completion_date_before_saledate(record)
expect(record.errors).not_to be_present expect(record.errors).not_to be_present
end end
@ -82,7 +82,7 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
let(:record) { build(:sales_log, hodate: 2.months.ago, saledate: 1.month.ago) } let(:record) { build(:sales_log, hodate: 2.months.ago, saledate: 1.month.ago) }
it "does not add the error" do it "does not add the error" do
sale_information_validator.validate_pratical_completion_date_before_saledate(record) sale_information_validator.validate_practical_completion_date_before_saledate(record)
expect(record.errors).not_to be_present expect(record.errors).not_to be_present
end end
@ -92,7 +92,7 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
let(:record) { build(:sales_log, hodate: 1.month.ago, saledate: 2.months.ago) } let(:record) { build(:sales_log, hodate: 1.month.ago, saledate: 2.months.ago) }
it "adds error" do it "adds error" do
sale_information_validator.validate_pratical_completion_date_before_saledate(record) sale_information_validator.validate_practical_completion_date_before_saledate(record)
expect(record.errors[:hodate]).to be_present expect(record.errors[:hodate]).to be_present
end end
@ -102,10 +102,63 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
let(:record) { build(:sales_log, hodate: Time.zone.parse("2023-07-01"), saledate: Time.zone.parse("2023-07-01")) } let(:record) { build(:sales_log, hodate: Time.zone.parse("2023-07-01"), saledate: Time.zone.parse("2023-07-01")) }
it "does not add an error" do it "does not add an error" do
sale_information_validator.validate_pratical_completion_date_before_saledate(record) sale_information_validator.validate_practical_completion_date_before_saledate(record)
expect(record.errors[:hodate]).to be_present expect(record.errors[:hodate]).to be_present
end end
end end
end end
describe "#validate_years_living_in_property_before_purchase" do
context "when proplen blank" do
let(:record) { build(:sales_log, proplen: nil) }
it "does not add an error" do
sale_information_validator.validate_years_living_in_property_before_purchase(record)
expect(record.errors).not_to be_present
end
end
context "when type blank" do
let(:record) { build(:sales_log, type: nil) }
it "does not add an error" do
sale_information_validator.validate_years_living_in_property_before_purchase(record)
expect(record.errors).not_to be_present
end
end
context "when proplen 0" do
let(:record) { build(:sales_log, proplen: 0) }
it "does not add an error" do
sale_information_validator.validate_years_living_in_property_before_purchase(record)
expect(record.errors).not_to be_present
end
end
context "when type Rent to Buy and proplen > 0" do
let(:record) { build(:sales_log, proplen: 1, type: 28) }
it "adds an error" do
sale_information_validator.validate_years_living_in_property_before_purchase(record)
expect(record.errors).to be_present
end
end
context "when type Social HomeBuy and proplen > 0" do
let(:record) { build(:sales_log, proplen: 1, type: 18) }
it "adds an error" do
sale_information_validator.validate_years_living_in_property_before_purchase(record)
expect(record.errors).to be_present
end
end
end
end end

Loading…
Cancel
Save