Browse Source

feat: move la vals to shared and move and add tests

pull/1570/head
natdeanlewissoftwire 3 years ago
parent
commit
50b2b210fc
  1. 1
      app/models/lettings_log.rb
  2. 1
      app/models/sales_log.rb
  3. 9
      app/models/validations/local_authority_validations.rb
  4. 11
      app/models/validations/shared_validations.rb
  5. 28
      spec/models/validations/local_authority_validations_spec.rb
  6. 41
      spec/models/validations/shared_validations_spec.rb

1
app/models/lettings_log.rb

@ -7,7 +7,6 @@ class LettingsLogValidator < ActiveModel::Validator
include Validations::FinancialValidations include Validations::FinancialValidations
include Validations::TenancyValidations include Validations::TenancyValidations
include Validations::DateValidations include Validations::DateValidations
include Validations::LocalAuthorityValidations
def validate(record) def validate(record)
validation_methods = public_methods.select { |method| method.starts_with?("validate_") } validation_methods = public_methods.select { |method| method.starts_with?("validate_") }

1
app/models/sales_log.rb

@ -6,7 +6,6 @@ class SalesLogValidator < ActiveModel::Validator
include Validations::Sales::FinancialValidations include Validations::Sales::FinancialValidations
include Validations::Sales::SaleInformationValidations include Validations::Sales::SaleInformationValidations
include Validations::SharedValidations include Validations::SharedValidations
include Validations::LocalAuthorityValidations
def validate(record) def validate(record)
validation_methods = public_methods.select { |method| method.starts_with?("validate_") } validation_methods = public_methods.select { |method| method.starts_with?("validate_") }

9
app/models/validations/local_authority_validations.rb

@ -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

11
app/models/validations/shared_validations.rb

@ -43,6 +43,15 @@ module Validations::SharedValidations
end end
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) def location_during_startdate_validation(record, field)
location_inactive_status = inactive_status(record.startdate, record.location) location_inactive_status = inactive_status(record.startdate, record.location)
@ -96,6 +105,8 @@ module Validations::SharedValidations
end end
end end
private private
def person_is_partner?(relationship) def person_is_partner?(relationship)

28
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(:validator_class) { Class.new { include Validations::LocalAuthorityValidations } }
let(:record) { FactoryBot.create(:lettings_log) } 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 end

41
spec/models/validations/shared_validations_spec.rb

@ -113,4 +113,45 @@ RSpec.describe Validations::SharedValidations do
end end
end 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 end

Loading…
Cancel
Save