From 36984504295c54e0b2b2351ff51aa7f569ec1bd0 Mon Sep 17 00:00:00 2001 From: Phil Lee Date: Thu, 15 Dec 2022 14:58:00 +0000 Subject: [PATCH] delete bulk upload from disk after processing --- app/services/bulk_upload/downloader.rb | 4 ++++ app/services/bulk_upload/processor.rb | 2 ++ spec/services/bulk_upload/downloader_spec.rb | 19 +++++++++++++++++++ spec/services/bulk_upload/processor_spec.rb | 17 ++++++++++++++++- 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/app/services/bulk_upload/downloader.rb b/app/services/bulk_upload/downloader.rb index 000622e84..8fcd9ccca 100644 --- a/app/services/bulk_upload/downloader.rb +++ b/app/services/bulk_upload/downloader.rb @@ -11,6 +11,10 @@ class BulkUpload::Downloader download end + def delete_local_file! + file.unlink + end + private def download diff --git a/app/services/bulk_upload/processor.rb b/app/services/bulk_upload/processor.rb index f64eb48b0..5656b5a7a 100644 --- a/app/services/bulk_upload/processor.rb +++ b/app/services/bulk_upload/processor.rb @@ -8,6 +8,8 @@ class BulkUpload::Processor def call download validator.call + ensure + downloader.delete_local_file! end private diff --git a/spec/services/bulk_upload/downloader_spec.rb b/spec/services/bulk_upload/downloader_spec.rb index 195151010..48b046d8e 100644 --- a/spec/services/bulk_upload/downloader_spec.rb +++ b/spec/services/bulk_upload/downloader_spec.rb @@ -26,4 +26,23 @@ RSpec.describe BulkUpload::Downloader do expect(File.read(downloader.path)).to eql("hello") end end + + describe "#delete_local_file!" do + let(:mock_storage_service) { instance_double(Storage::S3Service, get_file_io:) } + + it "deletes the local file" do + allow(Storage::S3Service).to receive(:new).and_return(mock_storage_service) + + downloader.call + + expect(File).to exist(downloader.path) + expect(File.read(downloader.path)).to eql("hello") + + path = downloader.path + + downloader.delete_local_file! + + expect(File).not_to exist(path) + end + end end diff --git a/spec/services/bulk_upload/processor_spec.rb b/spec/services/bulk_upload/processor_spec.rb index 455cf72b8..1ecdf4bad 100644 --- a/spec/services/bulk_upload/processor_spec.rb +++ b/spec/services/bulk_upload/processor_spec.rb @@ -7,13 +7,28 @@ RSpec.describe BulkUpload::Processor do context "when processing a bulk upload with errors" do describe "#call" do - let(:mock_downloader) { instance_double(BulkUpload::Downloader, call: nil, path: file_fixture("2021_22_lettings_bulk_upload.csv")) } + let(:mock_downloader) do + instance_double( + BulkUpload::Downloader, + call: nil, + path: file_fixture("2021_22_lettings_bulk_upload.csv"), + delete_local_file!: nil, + ) + end it "persist the validation errors" do allow(BulkUpload::Downloader).to receive(:new).with(bulk_upload:).and_return(mock_downloader) expect { processor.call }.to change(BulkUploadError, :count).by(9) end + + it "deletes the local file afterwards" do + allow(BulkUpload::Downloader).to receive(:new).with(bulk_upload:).and_return(mock_downloader) + + processor.call + + expect(mock_downloader).to have_received(:delete_local_file!) + end end end end