diff --git a/app/services/bulk_upload/processor.rb b/app/services/bulk_upload/processor.rb index 5656b5a7a..93d3fd3e7 100644 --- a/app/services/bulk_upload/processor.rb +++ b/app/services/bulk_upload/processor.rb @@ -22,11 +22,21 @@ private downloader.call end - # TODO: handle sales def validator - @validator ||= BulkUpload::Lettings::Validator.new( + @validator ||= validator_class.new( bulk_upload:, path: downloader.path, ) end + + def validator_class + case bulk_upload.log_type + when "lettings" + BulkUpload::Lettings::Validator + when "sales" + BulkUpload::Sales::Validator + else + raise "Validator not found for #{bulk_upload.log_type}" + end + end end diff --git a/app/services/bulk_upload/sales/validator.rb b/app/services/bulk_upload/sales/validator.rb index f2855bc7c..8cf637ec9 100644 --- a/app/services/bulk_upload/sales/validator.rb +++ b/app/services/bulk_upload/sales/validator.rb @@ -1,4 +1,6 @@ class BulkUpload::Sales::Validator + include ActiveModel::Validations + QUESTIONS = { field_1: "What is the purchaser code?", field_2: "What is the day of the sale completion date? - DD", @@ -130,4 +132,14 @@ class BulkUpload::Sales::Validator def self.question_for_field(field) QUESTIONS[field] end + + attr_reader :bulk_upload, :path + + def initialize(bulk_upload:, path:) + @bulk_upload = bulk_upload + @path = path + end + + def call + end end diff --git a/spec/services/bulk_upload/processor_spec.rb b/spec/services/bulk_upload/processor_spec.rb index 1ecdf4bad..f780eb1ad 100644 --- a/spec/services/bulk_upload/processor_spec.rb +++ b/spec/services/bulk_upload/processor_spec.rb @@ -3,7 +3,7 @@ require "rails_helper" RSpec.describe BulkUpload::Processor do subject(:processor) { described_class.new(bulk_upload:) } - let(:bulk_upload) { create(:bulk_upload) } + let(:bulk_upload) { create(:bulk_upload, :lettings) } context "when processing a bulk upload with errors" do describe "#call" do