Browse Source

feat: add validation for number of field labels

pull/1588/head
Sam Seed 3 years ago
parent
commit
55b84e7aaf
  1. 7
      app/services/bulk_upload/lettings/validator.rb
  2. 5
      app/services/bulk_upload/lettings/year2023/csv_parser.rb
  3. 1
      config/locales/en.yml

7
app/services/bulk_upload/lettings/validator.rb

@ -9,6 +9,7 @@ class BulkUpload::Lettings::Validator
attr_reader :bulk_upload, :path attr_reader :bulk_upload, :path
validate :validate_file_not_empty validate :validate_file_not_empty
validate :validate_fields_count
validate :validate_min_columns validate :validate_min_columns
validate :validate_max_columns validate :validate_max_columns
@ -145,6 +146,12 @@ private
errors.add(:base, :over_max_column_count) if column_count > csv_parser.class::MAX_COLUMNS errors.add(:base, :over_max_column_count) if column_count > csv_parser.class::MAX_COLUMNS
end end
def validate_fields_count
return if halt_validations?
errors.add(:base, :wrong_field_count) if csv_parser.non_blank_fields_count != csv_parser.class::FIELDS
end
def halt_validations! def halt_validations!
@halt_validations = true @halt_validations = true
end end

5
app/services/bulk_upload/lettings/year2023/csv_parser.rb

@ -3,6 +3,7 @@ require "csv"
class BulkUpload::Lettings::Year2023::CsvParser class BulkUpload::Lettings::Year2023::CsvParser
MIN_COLUMNS = 141 MIN_COLUMNS = 141
MAX_COLUMNS = 143 MAX_COLUMNS = 143
FIELDS = 134
attr_reader :path attr_reader :path
@ -47,6 +48,10 @@ class BulkUpload::Lettings::Year2023::CsvParser
cols[field_numbers.find_index(field) + col_offset] cols[field_numbers.find_index(field) + col_offset]
end end
def non_blank_fields_count
field_numbers.count { |f| f != "field_blank" }
end
private private
def default_field_numbers def default_field_numbers

1
config/locales/en.yml

@ -46,6 +46,7 @@ en:
base: base:
over_max_column_count: "too many columns, please ensure you have used the correct template" over_max_column_count: "too many columns, please ensure you have used the correct template"
under_min_column_count: "too few columns, please ensure you have used the correct template" under_min_column_count: "too few columns, please ensure you have used the correct template"
wrong_field_count: "incorrect number of fields, please ensure you have used the correct template"
forms/bulk_upload_lettings/year: forms/bulk_upload_lettings/year:
attributes: attributes:
year: year:

Loading…
Cancel
Save