diff --git a/app/models/lettings_log.rb b/app/models/lettings_log.rb index cd1fffd22..a4a3f9192 100644 --- a/app/models/lettings_log.rb +++ b/app/models/lettings_log.rb @@ -7,7 +7,6 @@ class LettingsLogValidator < ActiveModel::Validator include Validations::FinancialValidations include Validations::TenancyValidations include Validations::DateValidations - include Validations::LocalAuthorityValidations def validate(record) validation_methods = public_methods.select { |method| method.starts_with?("validate_") } diff --git a/app/models/sales_log.rb b/app/models/sales_log.rb index ebb3ef4e3..4c849826d 100644 --- a/app/models/sales_log.rb +++ b/app/models/sales_log.rb @@ -6,7 +6,6 @@ class SalesLogValidator < ActiveModel::Validator include Validations::Sales::FinancialValidations include Validations::Sales::SaleInformationValidations include Validations::SharedValidations - include Validations::LocalAuthorityValidations def validate(record) validation_methods = public_methods.select { |method| method.starts_with?("validate_") } diff --git a/app/models/validations/local_authority_validations.rb b/app/models/validations/local_authority_validations.rb deleted file mode 100644 index 76377d587..000000000 --- a/app/models/validations/local_authority_validations.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Validations::LocalAuthorityValidations - def validate_previous_accommodation_postcode(record) - postcode = record.ppostcode_full - if record.previous_postcode_known? && (postcode.blank? || !postcode.match(POSTCODE_REGEXP)) - record.errors.add :ppostcode_full, I18n.t("validations.postcode") - record.errors.add :ppostcodenk, I18n.t("validations.postcode") - end - end -end diff --git a/app/models/validations/shared_validations.rb b/app/models/validations/shared_validations.rb index f032a089c..e8dd5e876 100644 --- a/app/models/validations/shared_validations.rb +++ b/app/models/validations/shared_validations.rb @@ -43,6 +43,15 @@ module Validations::SharedValidations end end + def validate_previous_accommodation_postcode(record) + postcode = record.ppostcode_full + if record.previous_postcode_known? && (postcode.blank? || !postcode.match(POSTCODE_REGEXP)) + error_message = I18n.t("validations.postcode") + record.errors.add :ppostcode_full, message: error_message + record.errors.add :ppcodenk, message: error_message + end + end + def location_during_startdate_validation(record, field) location_inactive_status = inactive_status(record.startdate, record.location) @@ -96,6 +105,8 @@ module Validations::SharedValidations end end + + private def person_is_partner?(relationship) diff --git a/spec/models/validations/local_authority_validations_spec.rb b/spec/models/validations/local_authority_validations_spec.rb index 1c0388c34..c2c7b3ba4 100644 --- a/spec/models/validations/local_authority_validations_spec.rb +++ b/spec/models/validations/local_authority_validations_spec.rb @@ -6,33 +6,5 @@ RSpec.describe Validations::LocalAuthorityValidations do let(:validator_class) { Class.new { include Validations::LocalAuthorityValidations } } let(:record) { FactoryBot.create(:lettings_log) } - describe "#validate_previous_accommodation_postcode" do - it "does not add an error if the record ppostcode_full is missing" do - record.ppostcode_full = nil - local_auth_validator.validate_previous_accommodation_postcode(record) - expect(record.errors).to be_empty - end - it "does not add an error if the record ppostcode_full is valid (uppercase space)" do - record.ppcodenk = 1 - record.ppostcode_full = "M1 1AE" - local_auth_validator.validate_previous_accommodation_postcode(record) - expect(record.errors).to be_empty - end - - it "does not add an error if the record ppostcode_full is valid (lowercase no space)" do - record.ppcodenk = 1 - record.ppostcode_full = "m11ae" - local_auth_validator.validate_previous_accommodation_postcode(record) - expect(record.errors).to be_empty - end - - it "does add an error when the postcode is invalid" do - record.ppcodenk = 1 - record.ppostcode_full = "invalid" - local_auth_validator.validate_previous_accommodation_postcode(record) - expect(record.errors).not_to be_empty - expect(record.errors["ppostcode_full"]).to include(match I18n.t("validations.postcode")) - end - end end diff --git a/spec/models/validations/shared_validations_spec.rb b/spec/models/validations/shared_validations_spec.rb index 8f5038c5d..b9d29f4cb 100644 --- a/spec/models/validations/shared_validations_spec.rb +++ b/spec/models/validations/shared_validations_spec.rb @@ -113,4 +113,45 @@ RSpec.describe Validations::SharedValidations do end end end + + describe "#validate_previous_accommodation_postcode" do + it "does not add an error if the record ppostcode_full is missing when postcode not known" do + record.ppcodenk = 2 + record.ppostcode_full = nil + shared_validator.validate_previous_accommodation_postcode(record) + expect(record.errors).to be_empty + end + + it "does add an error if the record ppostcode_full is missing when postcode is known" do + record.ppcodenk = 1 + record.ppostcode_full = nil + shared_validator.validate_previous_accommodation_postcode(record) + expect(record.errors).not_to be_empty + expect(record.errors["ppostcode_full"].first).to eq(I18n.t("validations.postcode")) + expect(record.errors["ppcodenk"].first).to eq(I18n.t("validations.postcode")) + end + + it "does not add an error if the record ppostcode_full is valid (uppercase space)" do + record.ppcodenk = 1 + record.ppostcode_full = "M1 1AE" + shared_validator.validate_previous_accommodation_postcode(record) + expect(record.errors).to be_empty + end + + it "does not add an error if the record ppostcode_full is valid (lowercase no space)" do + record.ppcodenk = 1 + record.ppostcode_full = "m11ae" + shared_validator.validate_previous_accommodation_postcode(record) + expect(record.errors).to be_empty + end + + it "does add an error when the postcode is invalid" do + record.ppcodenk = 1 + record.ppostcode_full = "invalid" + shared_validator.validate_previous_accommodation_postcode(record) + expect(record.errors).not_to be_empty + expect(record.errors["ppostcode_full"].first).to eq(I18n.t("validations.postcode")) + expect(record.errors["ppcodenk"].first).to eq(I18n.t("validations.postcode")) + end + end end