Browse Source

CLDC-3676: lettings sale validations

CLDC-3676-remove-all-pre-2025-validations
samyou-softwire 1 week ago
parent
commit
ebab7f20ed
  1. 19
      app/models/validations/sales/sale_information_validations.rb
  2. 30
      spec/models/validations/sales/sale_information_validations_spec.rb

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

@ -12,12 +12,9 @@ module Validations::Sales::SaleInformationValidations
record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_after_hodate") record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_after_hodate")
end end
if (record.saledate - 5.years) >= record.hodate && record.form.start_year_2025_or_later? if (record.saledate - 5.years) >= record.hodate
record.errors.add :hodate, I18n.t("validations.sales.sale_information.hodate.must_be_less_than_5_years_from_saledate") record.errors.add :hodate, I18n.t("validations.sales.sale_information.hodate.must_be_less_than_5_years_from_saledate")
record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_less_than_5_years_from_hodate") record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_less_than_5_years_from_hodate")
elsif (record.saledate - 3.years) >= record.hodate && record.startdate.year <= 2024
record.errors.add :hodate, I18n.t("validations.sales.sale_information.hodate.must_be_less_than_3_years_from_saledate")
record.errors.add :saledate, I18n.t("validations.sales.sale_information.saledate.must_be_less_than_3_years_from_hodate")
end end
end end
@ -75,7 +72,7 @@ module Validations::Sales::SaleInformationValidations
end end
def validate_discounted_ownership_value(record) def validate_discounted_ownership_value(record)
return unless record.saledate && record.form.start_year_2024_or_later? return unless record.saledate
return unless record.value && record.deposit && record.ownershipsch return unless record.value && record.deposit && record.ownershipsch
return unless record.mortgage || record.mortgageused == 2 return unless record.mortgage || record.mortgageused == 2
return unless record.discount || record.grant || record.type == 29 return unless record.discount || record.grant || record.type == 29
@ -103,7 +100,7 @@ module Validations::Sales::SaleInformationValidations
end end
def validate_outright_sale_value_matches_mortgage_plus_deposit(record) def validate_outright_sale_value_matches_mortgage_plus_deposit(record)
return unless record.saledate && record.form.start_year_2024_or_later? return unless record.saledate
return unless record.outright_sale? return unless record.outright_sale?
return unless record.mortgage_used? && record.mortgage return unless record.mortgage_used? && record.mortgage
return unless record.deposit && record.value return unless record.deposit && record.value
@ -134,7 +131,7 @@ module Validations::Sales::SaleInformationValidations
end end
def validate_grant_amount(record) def validate_grant_amount(record)
return unless record.saledate && record.form.start_year_2024_or_later? return unless record.saledate
return unless record.grant && [8, 21].include?(record.type) return unless record.grant && [8, 21].include?(record.type)
unless record.grant.between?(9_000, 16_000) unless record.grant.between?(9_000, 16_000)
@ -144,7 +141,7 @@ module Validations::Sales::SaleInformationValidations
def validate_stairbought(record) def validate_stairbought(record)
return unless record.stairbought && record.type return unless record.stairbought && record.type
return unless record.saledate && record.form.start_year_2024_or_later? return unless record.saledate
max_stairbought = case record.type max_stairbought = case record.type
when 30, 16, 28, 31, 32 when 30, 16, 28, 31, 32
@ -162,7 +159,7 @@ module Validations::Sales::SaleInformationValidations
end end
def validate_discount_and_value(record) def validate_discount_and_value(record)
return unless record.saledate && record.form.start_year_2024_or_later? return unless record.saledate
return unless record.discount && record.value && record.la return unless record.discount && record.value && record.la
if record.london_property? && record.discount_value > 137_400 if record.london_property? && record.discount_value > 137_400
@ -177,7 +174,7 @@ module Validations::Sales::SaleInformationValidations
end end
def validate_non_staircasing_mortgage(record) def validate_non_staircasing_mortgage(record)
return unless record.saledate && record.form.start_year_2024_or_later? return unless record.saledate
return unless record.value && record.deposit && record.equity return unless record.value && record.deposit && record.equity
return unless record.shared_ownership_scheme? && record.type && record.mortgageused && record.is_not_staircasing? return unless record.shared_ownership_scheme? && record.type && record.mortgageused && record.is_not_staircasing?
@ -189,7 +186,7 @@ module Validations::Sales::SaleInformationValidations
end end
def validate_staircasing_mortgage(record) def validate_staircasing_mortgage(record)
return unless record.saledate && record.form.start_year_2024_or_later? return unless record.saledate
return unless record.value && record.deposit && record.stairbought return unless record.value && record.deposit && record.stairbought
return unless record.shared_ownership_scheme? && record.type && record.mortgageused && record.is_staircase? return unless record.shared_ownership_scheme? && record.type && record.mortgageused && record.is_staircase?

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

@ -49,8 +49,8 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
end end
end end
context "when hodate less than 3 years before saledate" do context "when hodate less than 5 years before saledate" do
let(:record) { build(:sales_log, hodate: current_collection_start_date - 3.years + 1.day, saledate: current_collection_start_date) } let(:record) { build(:sales_log, hodate: current_collection_start_date - 5.years + 1.day, saledate: current_collection_start_date) }
it "does not add an error" do it "does not add an error" do
sale_information_validator.validate_practical_completion_date(record) sale_information_validator.validate_practical_completion_date(record)
@ -59,32 +59,6 @@ RSpec.describe Validations::Sales::SaleInformationValidations do
end end
end end
context "when hodate 3 or more years before saledate" do
let(:record) { build(:sales_log, hodate: saledate - 3.years, saledate:) }
context "and form year is 2024 or earlier" do
let(:saledate) { collection_start_date_for_year(2024) }
it "does add an error" do
sale_information_validator.validate_practical_completion_date(record)
expect(record.errors[:hodate]).to be_present
expect(record.errors[:saledate]).to be_present
end
end
context "and form year is 2025 or later" do
let(:saledate) { collection_start_date_for_year_or_later(2025) }
it "does not add an error" do
sale_information_validator.validate_practical_completion_date(record)
expect(record.errors[:hodate]).to be_empty
expect(record.errors[:saledate]).to be_empty
end
end
end
context "when hodate 5 or more years before saledate" do context "when hodate 5 or more years before saledate" do
let(:record) { build(:sales_log, hodate: current_collection_start_date - 5.years, saledate: current_collection_start_date) } let(:record) { build(:sales_log, hodate: current_collection_start_date - 5.years, saledate: current_collection_start_date) }

Loading…
Cancel
Save