diff --git a/spec/models/validations/sales/sale_information_validations_spec.rb b/spec/models/validations/sales/sale_information_validations_spec.rb index fafe2786a..0fbc102a8 100644 --- a/spec/models/validations/sales/sale_information_validations_spec.rb +++ b/spec/models/validations/sales/sale_information_validations_spec.rb @@ -109,6 +109,80 @@ RSpec.describe Validations::Sales::SaleInformationValidations do end end + describe "#validate_exchange_and_completion_date" do + context "when exdate blank" do + let(:record) { build(:sales_log, exdate: nil) } + + it "does not add an error" do + sale_information_validator.validate_exchange_and_completion_date(record) + + expect(record.errors).not_to be_present + end + end + + context "when saledate blank" do + let(:record) { build(:sales_log, saledate: nil) } + + it "does not add an error" do + sale_information_validator.validate_exchange_and_completion_date(record) + + expect(record.errors).not_to be_present + end + end + + context "when saledate and exdate blank" do + let(:record) { build(:sales_log, exdate: nil, saledate: nil) } + + it "does not add an error" do + sale_information_validator.validate_exchange_and_completion_date(record) + + expect(record.errors).not_to be_present + end + end + + context "when exdate less than a year before saledate" do + let(:record) { build(:sales_log, exdate: 2.months.ago, saledate: 1.month.ago) } + + it "does not add the error" do + sale_information_validator.validate_exchange_and_completion_date(record) + + expect(record.errors).not_to be_present + end + end + + context "when exdate more than a year before saledate" do + let(:record) { build(:sales_log, exdate: 2.years.ago, saledate: 1.month.ago) } + + it "adds error" do + sale_information_validator.validate_exchange_and_completion_date(record) + + expect(record.errors[:exdate]).to include(I18n.t("validations.sale_information.completion_exchange.exchange_after_one_year_before_completion")) + expect(record.errors[:saledate]).to include(I18n.t("validations.sale_information.completion_exchange.completion_before_one_year_after_exchange")) + end + end + + context "when exdate after saledate" do + let(:record) { build(:sales_log, exdate: 1.month.ago, saledate: 2.months.ago) } + + it "adds error" do + sale_information_validator.validate_exchange_and_completion_date(record) + + expect(record.errors[:exdate]).to include(I18n.t("validations.sale_information.completion_exchange.exchange_before_completion")) + expect(record.errors[:saledate]).to include(I18n.t("validations.sale_information.completion_exchange.completion_after_exchange")) + end + end + + context "when exdate == saledate" do + let(:record) { build(:sales_log, exdate: Time.zone.parse("2023-07-01"), saledate: Time.zone.parse("2023-07-01")) } + + it "does not add an error" do + sale_information_validator.validate_exchange_and_completion_date(record) + + expect(record.errors).not_to be_present + end + end + end + describe "#validate_previous_property_unit_type" do context "when number of bedrooms is <= 1" do let(:record) { FactoryBot.build(:sales_log, frombeds: 1, fromprop: 2) }