Browse Source

Extract processor and validator copy

pull/2719/head
Kat 8 months ago
parent
commit
3f18e25085
  1. 4
      app/services/bulk_upload/processor.rb
  2. 10
      app/services/bulk_upload/sales/validator.rb
  3. 8
      config/locales/en.yml
  4. 5
      config/locales/validations/sales/2023/bulk_upload.en.yml
  5. 5
      config/locales/validations/sales/2024/bulk_upload.en.yml
  6. 6
      spec/services/bulk_upload/sales/validator_spec.rb

4
app/services/bulk_upload/processor.rb

@ -3,12 +3,12 @@ class BulkUpload::Processor
BLANK_TEMPLATE_ERRORS = [
I18n.t("activemodel.errors.models.bulk_upload/lettings/validator.attributes.base.blank_file"),
I18n.t("activemodel.errors.models.bulk_upload/sales/validator.attributes.base.blank_file"),
I18n.t("validations.sales.2024.bulk_upload.blank_file"),
].freeze
WRONG_TEMPLATE_ERRORS = [
*I18n.t("activemodel.errors.models.bulk_upload/lettings/validator.attributes.base", default: {}).values,
*I18n.t("activemodel.errors.models.bulk_upload/sales/validator.attributes.base", default: {}).values,
*I18n.t("validations.sales.2024", default: {}).values,
].freeze
def initialize(bulk_upload:)

10
app/services/bulk_upload/sales/validator.rb

@ -153,7 +153,7 @@ private
def validate_file_not_empty
if File.size(path).zero? || csv_parser.body_rows.flatten.compact.empty?
errors.add(:base, :blank_file)
errors.add(:base, I18n.t("validations.sales.#{@bulk_upload.year}.bulk_upload.blank_file"))
halt_validations!
end
@ -164,20 +164,20 @@ private
column_count = rows.map(&:size).max
errors.add(:base, :over_max_column_count) if column_count > csv_parser.class::MAX_COLUMNS
errors.add(:base, I18n.t("validations.sales.#{@bulk_upload.year}.bulk_upload.over_max_column_count")) if column_count > csv_parser.class::MAX_COLUMNS
end
def validate_correct_template
return if halt_validations?
errors.add(:base, :wrong_template) if csv_parser.wrong_template_for_year?
errors.add(:base, I18n.t("validations.sales.#{@bulk_upload.year}.bulk_upload.wrong_template")) if csv_parser.wrong_template_for_year?
end
def validate_missing_required_headers
return if halt_validations?
if csv_parser.missing_required_headers?
errors.add :base, I18n.t("activemodel.errors.models.bulk_upload/sales/validator.attributes.base.no_headers", guidance_link: bulk_upload_sales_log_url(id: "guidance", form: { year: bulk_upload.year }, host: ENV["APP_HOST"], anchor: "using-the-bulk-upload-template"))
errors.add :base, I18n.t("validations.sales.#{@bulk_upload.year}.bulk_upload.no_headers", guidance_link: bulk_upload_sales_log_url(id: "guidance", form: { year: bulk_upload.year }, host: ENV["APP_HOST"], anchor: "using-the-bulk-upload-template"))
end
end
@ -185,7 +185,7 @@ private
return if halt_validations?
unless csv_parser.correct_field_count?
errors.add(:base, :wrong_field_numbers_count)
errors.add(:base, I18n.t("validations.sales.#{@bulk_upload.year}.bulk_upload.wrong_field_numbers_count"))
halt_validations!
end
end

8
config/locales/en.yml

@ -69,14 +69,6 @@ en:
over_max_column_count: "Too many columns, please ensure you have used the correct template."
wrong_template: "Incorrect start dates, please ensure you have used the correct template."
no_headers: "Your file does not contain the required header rows. Add or check the header rows and upload your file again. [Read more about using the template headers](%{guidance_link})."
bulk_upload/sales/validator:
attributes:
base:
blank_file: "Template is blank - The template must be filled in for us to create the logs and check if data is correct."
wrong_field_numbers_count: "Incorrect number of fields, please ensure you have used the correct template."
over_max_column_count: "Too many columns, please ensure you have used the correct template."
wrong_template: "Incorrect sale dates, please ensure you have used the correct template."
no_headers: "Your file does not contain the required header rows. Add or check the header rows and upload your file again. [Read more about using the template headers](%{guidance_link})."
forms/bulk_upload_lettings/year:
attributes:
year:

5
config/locales/validations/sales/2023/bulk_upload.en.yml

@ -3,6 +3,11 @@ en:
sales:
2023:
bulk_upload:
blank_file: "Template is blank - The template must be filled in for us to create the logs and check if data is correct."
over_max_column_count: "Too many columns, please ensure you have used the correct template."
no_headers: "Your file does not contain the required header rows. Add or check the header rows and upload your file again. [Read more about using the template headers](%{guidance_link})."
wrong_field_numbers_count: "Incorrect number of fields, please ensure you have used the correct template."
wrong_template: "Incorrect sale dates, please ensure you have used the correct template."
not_answered: "You must answer %{question}" # this is the same as not default not answered for single log submission
invalid_option: "Enter a valid value for %{question}" # this is the same as not default not answered for single log submission
spreadsheet_dupe: "This is a duplicate of a log in your file."

5
config/locales/validations/sales/2024/bulk_upload.en.yml

@ -3,6 +3,11 @@ en:
sales:
2024:
bulk_upload:
blank_file: "Template is blank - The template must be filled in for us to create the logs and check if data is correct."
over_max_column_count: "Too many columns, please ensure you have used the correct template."
no_headers: "Your file does not contain the required header rows. Add or check the header rows and upload your file again. [Read more about using the template headers](%{guidance_link})."
wrong_field_numbers_count: "Incorrect number of fields, please ensure you have used the correct template."
wrong_template: "Incorrect sale dates, please ensure you have used the correct template."
not_answered: "You must answer %{question}" # this is the same as not default not answered for single log submission
invalid_option: "Enter a valid value for %{question}" # this is the same as not default not answered for single log submission
spreadsheet_dupe: "This is a duplicate of a log in your file."

6
spec/services/bulk_upload/sales/validator_spec.rb

@ -15,7 +15,7 @@ RSpec.describe BulkUpload::Sales::Validator do
context "when file is empty" do
it "is not valid" do
expect(validator).not_to be_valid
expect(validator.errors["base"]).to eql(["Template is blank - The template must be filled in for us to create the logs and check if data is correct."])
expect(validator.errors["base"]).to eql([I18n.t("validations.sales.2024.bulk_upload.blank_file")])
end
end
@ -27,7 +27,7 @@ RSpec.describe BulkUpload::Sales::Validator do
it "is not valid" do
expect(validator).not_to be_valid
expect(validator.errors["base"]).to eql(["Template is blank - The template must be filled in for us to create the logs and check if data is correct."])
expect(validator.errors["base"]).to eql([I18n.t("validations.sales.2024.bulk_upload.blank_file")])
end
end
@ -54,7 +54,7 @@ RSpec.describe BulkUpload::Sales::Validator do
it "is not valid" do
expect(validator).not_to be_valid
expect(validator.errors["base"]).to eql(["Incorrect sale dates, please ensure you have used the correct template."])
expect(validator.errors["base"]).to eql([I18n.t("validations.sales.2024.bulk_upload.wrong_template")])
end
end

Loading…
Cancel
Save