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:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-09-11 15:10:57 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-09-11 15:10:57 +0300
commit320d8adff14c100cd8a6798880b7eeff8e137f15 (patch)
tree38aade64f34de6d98b7c0ca8630b3d8f01a9b613 /spec/workers/gitlab/github_import
parent3fc19e14429002aa548f6bd2691cea3f9cde7773 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/workers/gitlab/github_import')
-rw-r--r--spec/workers/gitlab/github_import/advance_stage_worker_spec.rb123
1 files changed, 2 insertions, 121 deletions
diff --git a/spec/workers/gitlab/github_import/advance_stage_worker_spec.rb b/spec/workers/gitlab/github_import/advance_stage_worker_spec.rb
index 2faa28a365e..60c117a2a90 100644
--- a/spec/workers/gitlab/github_import/advance_stage_worker_spec.rb
+++ b/spec/workers/gitlab/github_import/advance_stage_worker_spec.rb
@@ -2,125 +2,6 @@
require 'spec_helper'
-RSpec.describe Gitlab::GithubImport::AdvanceStageWorker, :clean_gitlab_redis_shared_state, feature_category: :importers do
- let(:project) { create(:project) }
- let(:import_state) { create(:import_state, project: project, jid: '123') }
- let(:worker) { described_class.new }
-
- describe '#perform' do
- context 'when the project no longer exists' do
- it 'does not perform any work' do
- expect(worker).not_to receive(:wait_for_jobs)
-
- worker.perform(-1, { '123' => 2 }, :finish)
- end
- end
-
- context 'when there are remaining jobs' do
- before do
- allow(worker)
- .to receive(:find_import_state)
- .and_return(import_state)
- end
-
- it 'reschedules itself' do
- expect(worker)
- .to receive(:wait_for_jobs)
- .with({ '123' => 2 })
- .and_return({ '123' => 1 })
-
- expect(described_class)
- .to receive(:perform_in)
- .with(described_class::INTERVAL, project.id, { '123' => 1 }, :finish)
-
- worker.perform(project.id, { '123' => 2 }, :finish)
- end
-
- context 'when import state is nil' do
- let(:import_state) { nil }
-
- it 'clears the JobWaiter cache and does not perform any work' do
- expect(Gitlab::JobWaiter).to receive(:delete_key).with('123')
- expect(worker).not_to receive(:wait_for_jobs)
-
- worker.perform(project.id, { '123' => 2 }, :finish)
- end
- end
- end
-
- context 'when there are no remaining jobs' do
- before do
- allow(worker)
- .to receive(:find_import_state)
- .and_return(import_state)
-
- allow(worker)
- .to receive(:wait_for_jobs)
- .with({ '123' => 2 })
- .and_return({})
- end
-
- it 'schedules the next stage' do
- expect(import_state)
- .to receive(:refresh_jid_expiration)
-
- expect(Gitlab::GithubImport::Stage::FinishImportWorker)
- .to receive(:perform_async)
- .with(project.id)
-
- worker.perform(project.id, { '123' => 2 }, :finish)
- end
-
- it 'raises KeyError when the stage name is invalid' do
- expect { worker.perform(project.id, { '123' => 2 }, :kittens) }
- .to raise_error(KeyError)
- end
- end
- end
-
- describe '#wait_for_jobs' do
- it 'waits for jobs to complete and returns a new pair of keys to wait for' do
- waiter1 = double(:waiter1, jobs_remaining: 1, key: '123')
- waiter2 = double(:waiter2, jobs_remaining: 0, key: '456')
-
- expect(Gitlab::JobWaiter)
- .to receive(:new)
- .ordered
- .with(2, '123')
- .and_return(waiter1)
-
- expect(Gitlab::JobWaiter)
- .to receive(:new)
- .ordered
- .with(1, '456')
- .and_return(waiter2)
-
- expect(waiter1)
- .to receive(:wait)
- .with(described_class::BLOCKING_WAIT_TIME)
-
- expect(waiter2)
- .to receive(:wait)
- .with(described_class::BLOCKING_WAIT_TIME)
-
- new_waiters = worker.wait_for_jobs({ '123' => 2, '456' => 1 })
-
- expect(new_waiters).to eq({ '123' => 1 })
- end
- end
-
- describe '#find_import_state' do
- it 'returns a ProjectImportState' do
- import_state.update_column(:status, 'started')
-
- found = worker.find_import_state(project.id)
-
- expect(found).to be_an_instance_of(ProjectImportState)
- expect(found.attributes.keys).to match_array(%w(id jid))
- end
-
- it 'returns nil if the project import is not running' do
- expect(worker.find_import_state(project.id)).to be_nil
- end
- end
+RSpec.describe Gitlab::GithubImport::AdvanceStageWorker, feature_category: :importers do
+ it_behaves_like Gitlab::Import::AdvanceStage, factory: :import_state
end