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

migrate_rake_spec.rb « uploads « gitlab « tasks « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: f273992008e1c6555dc85f0f88c2b1aff1e7a55b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
require 'rake_helper'

describe 'gitlab:uploads:migrate rake tasks' do
  let!(:projects) { create_list(:project, 10, :with_avatar) }
  let(:model_class) { Project }
  let(:uploader_class) { AvatarUploader }
  let(:mounted_as) { :avatar }
  let(:batch_size) { 3 }

  before do
    stub_env('BATCH', batch_size.to_s)
    stub_uploads_object_storage(uploader_class)
    Rake.application.rake_require 'tasks/gitlab/uploads/migrate'

    allow(ObjectStorage::MigrateUploadsWorker).to receive(:perform_async)
  end

  def run
    args = [uploader_class.to_s, model_class.to_s, mounted_as].compact
    run_rake_task("gitlab:uploads:migrate", *args)
  end

  shared_examples 'enqueue jobs in batch' do |batch:|
    it do
      expect(ObjectStorage::MigrateUploadsWorker)
        .to receive(:perform_async).exactly(batch).times
              .and_return("A fake job.")

      run
    end
  end

  context 'Upload has store = nil' do
    before do
      Upload.where(model: projects.first(5)).update_all(store: nil)
    end

    it_behaves_like 'enqueue jobs in batch', batch: 4
  end
end