Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/uploaders/records_uploads_spec.rb')
-rw-r--r--spec/uploaders/records_uploads_spec.rb73
1 files changed, 40 insertions, 33 deletions
diff --git a/spec/uploaders/records_uploads_spec.rb b/spec/uploaders/records_uploads_spec.rb
index 9a3e5d83e01..7ef7fb7d758 100644
--- a/spec/uploaders/records_uploads_spec.rb
+++ b/spec/uploaders/records_uploads_spec.rb
@@ -3,16 +3,16 @@ require 'rails_helper'
describe RecordsUploads do
let!(:uploader) do
class RecordsUploadsExampleUploader < GitlabUploader
- include RecordsUploads::Concern
+ include RecordsUploads
storage :file
- def dynamic_segment
- 'co/fe/ee'
+ def model
+ FactoryBot.build_stubbed(:user)
end
end
- RecordsUploadsExampleUploader.new(build_stubbed(:user))
+ RecordsUploadsExampleUploader.new
end
def upload_fixture(filename)
@@ -20,55 +20,48 @@ describe RecordsUploads do
end
describe 'callbacks' do
- let(:upload) { create(:upload) }
-
- before do
- uploader.upload = upload
- end
-
- it '#record_upload after `store`' do
+ it 'calls `record_upload` after `store`' do
expect(uploader).to receive(:record_upload).once
uploader.store!(upload_fixture('doc_sample.txt'))
end
- it '#destroy_upload after `remove`' do
+ it 'calls `destroy_upload` after `remove`' do
+ expect(uploader).to receive(:destroy_upload).once
+
uploader.store!(upload_fixture('doc_sample.txt'))
- expect(uploader).to receive(:destroy_upload).once
uploader.remove!
end
end
describe '#record_upload callback' do
- it 'creates an Upload record after store' do
- expect { uploader.store!(upload_fixture('rails_sample.jpg')) }.to change { Upload.count }.by(1)
- end
+ it 'returns early when not using file storage' do
+ allow(uploader).to receive(:file_storage?).and_return(false)
+ expect(Upload).not_to receive(:record)
- it 'creates a new record and assigns size, path, model, and uploader' do
uploader.store!(upload_fixture('rails_sample.jpg'))
-
- upload = uploader.upload
- aggregate_failures do
- expect(upload).to be_persisted
- expect(upload.size).to eq uploader.file.size
- expect(upload.path).to eq uploader.upload_path
- expect(upload.model_id).to eq uploader.model.id
- expect(upload.model_type).to eq uploader.model.class.to_s
- expect(upload.uploader).to eq uploader.class.to_s
- end
end
- it "does not create an Upload record when the file doesn't exist" do
+ it "returns early when the file doesn't exist" do
allow(uploader).to receive(:file).and_return(double(exists?: false))
+ expect(Upload).not_to receive(:record)
- expect { uploader.store!(upload_fixture('rails_sample.jpg')) }.not_to change { Upload.count }
+ uploader.store!(upload_fixture('rails_sample.jpg'))
+ end
+
+ it 'creates an Upload record after store' do
+ expect(Upload).to receive(:record)
+ .with(uploader)
+
+ uploader.store!(upload_fixture('rails_sample.jpg'))
end
it 'does not create an Upload record if model is missing' do
- allow_any_instance_of(RecordsUploadsExampleUploader).to receive(:model).and_return(nil)
+ expect_any_instance_of(RecordsUploadsExampleUploader).to receive(:model).and_return(nil)
+ expect(Upload).not_to receive(:record).with(uploader)
- expect { uploader.store!(upload_fixture('rails_sample.jpg')) }.not_to change { Upload.count }
+ uploader.store!(upload_fixture('rails_sample.jpg'))
end
it 'it destroys Upload records at the same path before recording' do
@@ -79,15 +72,29 @@ describe RecordsUploads do
uploader: uploader.class.to_s
)
- uploader.upload = existing
uploader.store!(upload_fixture('rails_sample.jpg'))
expect { existing.reload }.to raise_error(ActiveRecord::RecordNotFound)
- expect(Upload.count).to eq(1)
+ expect(Upload.count).to eq 1
end
end
describe '#destroy_upload callback' do
+ it 'returns early when not using file storage' do
+ uploader.store!(upload_fixture('rails_sample.jpg'))
+
+ allow(uploader).to receive(:file_storage?).and_return(false)
+ expect(Upload).not_to receive(:remove_path)
+
+ uploader.remove!
+ end
+
+ it 'returns early when file is nil' do
+ expect(Upload).not_to receive(:remove_path)
+
+ uploader.remove!
+ end
+
it 'it destroys Upload records at the same path after removal' do
uploader.store!(upload_fixture('rails_sample.jpg'))