Browse Source

create logs when processing bulk uploads

pull/1208/head
Phil Lee 3 years ago
parent
commit
69542b87fb
  1. 19
      app/services/bulk_upload/processor.rb
  2. 34
      spec/services/bulk_upload/processor_spec.rb

19
app/services/bulk_upload/processor.rb

@ -8,12 +8,31 @@ class BulkUpload::Processor
def call
download
validator.call
create_logs
ensure
downloader.delete_local_file!
end
private
def create_logs
log_creator_class.new(
bulk_upload:,
path: downloader.path,
).call
end
def log_creator_class
case bulk_upload.log_type
when "lettings"
BulkUpload::Lettings::LogCreator
when "sales"
BulkUpload::Sales::LogCreator
else
raise "Log creator not found for #{bulk_upload.log_type}"
end
end
def downloader
@downloader ||= BulkUpload::Downloader.new(bulk_upload:)
end

34
spec/services/bulk_upload/processor_spec.rb

@ -5,8 +5,8 @@ RSpec.describe BulkUpload::Processor do
let(:bulk_upload) { create(:bulk_upload, :lettings) }
context "when processing a bulk upload with errors" do
describe "#call" do
describe "#call" do
context "when processing a bulk upload with errors" do
let(:mock_downloader) do
instance_double(
BulkUpload::Downloader,
@ -30,5 +30,35 @@ RSpec.describe BulkUpload::Processor do
expect(mock_downloader).to have_received(:delete_local_file!)
end
end
context "when processing a bulk with perfect data" do
let(:path) { file_fixture("2022_23_lettings_bulk_upload.csv") }
let(:mock_downloader) do
instance_double(
BulkUpload::Downloader,
call: nil,
path:,
delete_local_file!: nil,
)
end
let(:mock_creator) do
instance_double(
BulkUpload::Lettings::LogCreator,
call: nil,
path:,
)
end
it "creates logs" do
allow(BulkUpload::Downloader).to receive(:new).with(bulk_upload:).and_return(mock_downloader)
allow(BulkUpload::Lettings::LogCreator).to receive(:new).with(bulk_upload:, path:).and_return(mock_creator)
processor.call
expect(mock_creator).to have_received(:call)
end
end
end
end

Loading…
Cancel
Save