Browse Source

add validations for field_1

pull/1148/head
Phil Lee 3 years ago
parent
commit
c64a348eb6
  1. 1
      app/models/lettings_log.rb
  2. 20
      app/services/bulk_upload/lettings/row_parser.rb
  3. 36
      spec/services/bulk_upload/lettings/row_parser_spec.rb

1
app/models/lettings_log.rb

@ -8,6 +8,7 @@ class LettingsLogValidator < ActiveModel::Validator
include Validations::TenancyValidations include Validations::TenancyValidations
include Validations::DateValidations include Validations::DateValidations
include Validations::LocalAuthorityValidations 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_") }
validation_methods.each { |meth| public_send(meth, record) } validation_methods.each { |meth| public_send(meth, record) }

20
app/services/bulk_upload/lettings/row_parser.rb

@ -137,10 +137,27 @@ class BulkUpload::Lettings::RowParser
attribute :field_133, :integer attribute :field_133, :integer
attribute :field_134, :integer attribute :field_134, :integer
validates :field_1, presence: true, inclusion: { in: (1..12).to_a }
def attribute_set
@attribute_set ||= instance_variable_get(:@attributes)
end
def validate_data_types
unless attribute_set["field_1"].value_before_type_cast&.match?(/\A\d+\z/)
errors.add(:field_1, :invalid)
end
end
def valid? def valid?
errors.clear
super
validate_data_types
log.valid? log.valid?
errors.clear
log.errors.each do |error| log.errors.each do |error|
field = field_for_attribute(error.attribute) field = field_for_attribute(error.attribute)
@ -160,6 +177,7 @@ private
def field_mapping def field_mapping
{ {
field_1: :lettype,
field_134: :renewal, field_134: :renewal,
} }
end end

36
spec/services/bulk_upload/lettings/row_parser_spec.rb

@ -20,7 +20,41 @@ RSpec.describe BulkUpload::Lettings::RowParser do
end end
end end
describe "field_134" do describe "#field_1" do
context "when null" do
let(:attributes) { { field_1: nil } }
it "returns an error" do
expect(parser.errors[:field_1]).to be_present
end
end
context "when incorrect data type" do
let(:attributes) { { field_1: "foo" } }
it "returns an error" do
expect(parser.errors[:field_1]).to be_present
end
end
context "when unpermitted value" do
let(:attributes) { { field_1: "101" } }
it "returns an error" do
expect(parser.errors[:field_1]).to be_present
end
end
context "when valid" do
let(:attributes) { { field_1: "1" } }
it "does not return any errors" do
expect(parser.errors[:field_1]).to be_blank
end
end
end
describe "#field_134" do
context "when an unpermitted value" do context "when an unpermitted value" do
let(:attributes) { { field_134: 3 } } let(:attributes) { { field_134: 3 } }

Loading…
Cancel
Save