Browse Source

CLDC-3676: sales property validations

CLDC-3676-remove-all-pre-2025-validations
samyou-softwire 1 week ago
parent
commit
fb9e2ef697
  1. 17
      app/models/validations/sales/property_validations.rb
  2. 58
      spec/models/validations/sales/property_validations_spec.rb

17
app/models/validations/sales/property_validations.rb

@ -1,17 +1,4 @@
module Validations::Sales::PropertyValidations module Validations::Sales::PropertyValidations
def validate_postcodes_match_if_discounted_ownership(record)
return unless record.saledate && !record.form.start_year_2024_or_later?
return unless record.ppostcode_full.present? && record.postcode_full.present?
if record.discounted_ownership_sale? && record.ppostcode_full != record.postcode_full
joint_purchase_id = record.joint_purchase? ? "joint_purchase" : "not_joint_purchase"
record.errors.add :postcode_full, I18n.t("validations.sales.property_information.postcode_full.postcode_must_match_previous.#{joint_purchase_id}")
record.errors.add :ppostcode_full, I18n.t("validations.sales.property_information.ppostcode_full.postcode_must_match_previous.#{joint_purchase_id}")
record.errors.add :ownershipsch, I18n.t("validations.sales.property_information.ownershipsch.postcode_must_match_previous.#{joint_purchase_id}")
record.errors.add :uprn, I18n.t("validations.sales.property_information.uprn.postcode_must_match_previous.#{joint_purchase_id}")
end
end
def validate_bedsit_number_of_beds(record) def validate_bedsit_number_of_beds(record)
return unless record.proptype.present? && record.beds.present? return unless record.proptype.present? && record.beds.present?
@ -43,7 +30,7 @@ module Validations::Sales::PropertyValidations
# see also: this validation in validations/property_validations.rb # see also: this validation in validations/property_validations.rb
def validate_la_in_england(record) def validate_la_in_england(record)
return unless record.form.start_year_2025_or_later? && record.la.present? return unless record.la.present?
return if record.la.in?(LocalAuthority.england.pluck(:code)) return if record.la.in?(LocalAuthority.england.pluck(:code))
record.errors.add :la, I18n.t("validations.sales.property_information.la.not_in_england") record.errors.add :la, I18n.t("validations.sales.property_information.la.not_in_england")
@ -59,7 +46,7 @@ module Validations::Sales::PropertyValidations
# see also: this validation in validations/property_validations.rb # see also: this validation in validations/property_validations.rb
def validate_la_is_active(record) def validate_la_is_active(record)
return unless record.form.start_year_2025_or_later? && record.la.present? && record.startdate.present? return unless record.la.present? && record.startdate.present?
la = LocalAuthority.england.find_by(code: record.la) la = LocalAuthority.england.find_by(code: record.la)

58
spec/models/validations/sales/property_validations_spec.rb

@ -7,18 +7,6 @@ RSpec.describe Validations::Sales::PropertyValidations do
let(:property_validator_class) { Class.new { include Validations::Sales::PropertyValidations } } let(:property_validator_class) { Class.new { include Validations::Sales::PropertyValidations } }
describe "#validate_postcodes_match_if_discounted_ownership" do
let(:record) { build(:sales_log, ownershipsch: 1, saledate: current_collection_start_date) }
it "is not validated for years >= 2024" do
record.postcode_full = "SW1A 1AA"
record.ppostcode_full = "SW1A 0AA"
property_validator.validate_postcodes_match_if_discounted_ownership(record)
expect(record.errors["postcode_full"]).to be_empty
end
end
describe "#validate_property_unit_type" do describe "#validate_property_unit_type" do
context "when number of bedrooms is 1" do context "when number of bedrooms is 1" do
let(:record) { build(:sales_log, beds: 1, proptype: 2) } let(:record) { build(:sales_log, beds: 1, proptype: 2) }
@ -85,11 +73,6 @@ RSpec.describe Validations::Sales::PropertyValidations do
end end
describe "#validate_la_in_england" do describe "#validate_la_in_england" do
context "with a log on or after 2025" do
before do
allow(log.form).to receive(:start_year_2025_or_later?).and_return true
end
context "and the local authority is not in England" do context "and the local authority is not in England" do
let(:log) { build(:sales_log, la: "S12000019") } let(:log) { build(:sales_log, la: "S12000019") }
@ -117,33 +100,12 @@ RSpec.describe Validations::Sales::PropertyValidations do
end end
end end
context "with a log before 2025" do
before do
allow(log.form).to receive(:start_year_2025_or_later?).and_return false
end
context "and the local authority is not in England" do
let(:log) { build(:sales_log, la: "S12000019") }
it "does not add an error" do
property_validator.validate_la_in_england(log)
expect(log.errors["la"]).to be_empty
expect(log.errors["postcode_full"]).to be_empty
expect(log.errors["uprn"]).to be_empty
expect(log.errors["uprn_selection"]).to be_empty
expect(log.errors["saledate"]).to be_empty
end
end
end
end
describe "#validate_la_is_active" do describe "#validate_la_is_active" do
let(:la_ecode_active) { "E09000033" } let(:la_ecode_active) { "E09000033" }
let(:la_ecode_inactive) { "E07000156" } let(:la_ecode_inactive) { "E07000156" }
let(:local_authority_active) { LocalAuthority.find_by(code: la_ecode_active) } let(:local_authority_active) { LocalAuthority.find_by(code: la_ecode_active) }
let(:local_authority_inactive) { LocalAuthority.find_by(code: la_ecode_inactive) } let(:local_authority_inactive) { LocalAuthority.find_by(code: la_ecode_inactive) }
context "with a log on or after 2025" do
before do before do
allow(log.form).to receive(:start_year_2025_or_later?).and_return true allow(log.form).to receive(:start_year_2025_or_later?).and_return true
end end
@ -174,24 +136,4 @@ RSpec.describe Validations::Sales::PropertyValidations do
end end
end end
end end
context "with a log before 2025" do
before do
allow(log.form).to receive(:start_year_2025_or_later?).and_return false
end
context "and the local authority is inactive" do
let(:log) { build(:sales_log, :completed, la: la_ecode_inactive) }
it "does not add an error" do
property_validator.validate_la_is_active(log)
expect(log.errors["la"]).to be_empty
expect(log.errors["postcode_full"]).to be_empty
expect(log.errors["uprn"]).to be_empty
expect(log.errors["uprn_selection"]).to be_empty
expect(log.errors["saledate"]).to be_empty
end
end
end
end
end end

Loading…
Cancel
Save