Browse Source

delete bulk upload from disk after processing

pull/1091/head
Phil Lee 3 years ago
parent
commit
3698450429
  1. 4
      app/services/bulk_upload/downloader.rb
  2. 2
      app/services/bulk_upload/processor.rb
  3. 19
      spec/services/bulk_upload/downloader_spec.rb
  4. 17
      spec/services/bulk_upload/processor_spec.rb

4
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

2
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

19
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

17
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

Loading…
Cancel
Save