2017-09-10 17:25:29 +05:30
|
|
|
require 'rails_helper'
|
|
|
|
require 'carrierwave/storage/fog'
|
|
|
|
|
|
|
|
describe GitlabUploader do
|
|
|
|
let(:uploader_class) { Class.new(described_class) }
|
|
|
|
|
2018-03-17 18:26:18 +05:30
|
|
|
subject { uploader_class.new(double) }
|
2017-09-10 17:25:29 +05:30
|
|
|
|
|
|
|
describe '#file_storage?' do
|
|
|
|
context 'when file storage is used' do
|
|
|
|
before do
|
|
|
|
uploader_class.storage(:file)
|
|
|
|
end
|
|
|
|
|
|
|
|
it { is_expected.to be_file_storage }
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when is remote storage' do
|
|
|
|
before do
|
|
|
|
uploader_class.storage(:fog)
|
|
|
|
end
|
|
|
|
|
|
|
|
it { is_expected.not_to be_file_storage }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#file_cache_storage?' do
|
|
|
|
context 'when file storage is used' do
|
|
|
|
before do
|
2018-05-09 12:01:36 +05:30
|
|
|
expect(uploader_class).to receive(:cache_storage) { CarrierWave::Storage::File }
|
2017-09-10 17:25:29 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
it { is_expected.to be_file_cache_storage }
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'when is remote storage' do
|
|
|
|
before do
|
2018-05-09 12:01:36 +05:30
|
|
|
expect(uploader_class).to receive(:cache_storage) { CarrierWave::Storage::Fog }
|
2017-09-10 17:25:29 +05:30
|
|
|
end
|
|
|
|
|
|
|
|
it { is_expected.not_to be_file_cache_storage }
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#move_to_cache' do
|
|
|
|
it 'is true' do
|
|
|
|
expect(subject.move_to_cache).to eq(true)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#move_to_store' do
|
|
|
|
it 'is true' do
|
|
|
|
expect(subject.move_to_store).to eq(true)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
describe '#cache!' do
|
|
|
|
it 'moves the file from the working directory to the cache directory' do
|
|
|
|
# One to get the work dir, the other to remove it
|
|
|
|
expect(subject).to receive(:workfile_path).exactly(2).times.and_call_original
|
|
|
|
# Test https://github.com/carrierwavesubject/carrierwave/blob/v1.0.0/lib/carrierwave/sanitized_file.rb#L200
|
|
|
|
expect(FileUtils).to receive(:mv).with(anything, /^#{subject.work_dir}/).and_call_original
|
|
|
|
expect(FileUtils).to receive(:mv).with(/^#{subject.work_dir}/, /#{subject.cache_dir}/).and_call_original
|
|
|
|
|
|
|
|
fixture = Rails.root.join('spec', 'fixtures', 'rails_sample.jpg')
|
|
|
|
subject.cache!(fixture_file_upload(fixture))
|
|
|
|
|
|
|
|
expect(subject.file.path).to match(/#{subject.cache_dir}/)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|