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>2020-05-06 21:09:38 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-05-06 21:09:38 +0300
commit73886079f3f877ffb8f8938d700643a5e99bc849 (patch)
treeff8f3c64df680962c1da38156e8c1e63a015b0fb /spec/workers
parenta7beadc83470bd9ce23757a019795f49f95a6fff (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/workers')
-rw-r--r--spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb65
1 files changed, 56 insertions, 9 deletions
diff --git a/spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb b/spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb
index c4af829a5e2..8fe3f27c8b1 100644
--- a/spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb
+++ b/spec/workers/update_head_pipeline_for_merge_request_worker_spec.rb
@@ -4,18 +4,27 @@ require 'spec_helper'
describe UpdateHeadPipelineForMergeRequestWorker do
describe '#perform' do
- let(:user) { create(:user) }
- let(:project) { create(:project, :repository) }
- let(:merge_request) { create(:merge_request, source_project: project) }
- let(:latest_sha) { 'b83d6e391c22777fca1ed3012fce84f633d7fed0' }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:project, :repository) }
+ let_it_be(:merge_request) { create(:merge_request, source_project: project) }
+ let_it_be(:latest_sha) { 'b83d6e391c22777fca1ed3012fce84f633d7fed0' }
context 'when pipeline exists for the source project and branch' do
- before do
- create(:ci_empty_pipeline, project: project, ref: merge_request.source_branch, sha: latest_sha)
- end
+ let_it_be(:pipeline) { create(:ci_empty_pipeline, project: project, ref: merge_request.source_branch, sha: latest_sha) }
it 'updates the head_pipeline_id of the merge_request' do
- expect { subject.perform(merge_request.id) }.to change { merge_request.reload.head_pipeline_id }
+ expect { subject.perform(merge_request.id) }
+ .to change { merge_request.reload.head_pipeline_id }.from(nil).to(pipeline.id)
+ end
+
+ it_behaves_like 'an idempotent worker' do
+ let(:job_args) { merge_request.id }
+
+ it 'sets the pipeline as the head pipeline when run multiple times' do
+ subject
+
+ expect(merge_request.reload.head_pipeline_id).to eq(pipeline.id)
+ end
end
context 'when merge request sha does not equal pipeline sha' do
@@ -27,6 +36,15 @@ describe UpdateHeadPipelineForMergeRequestWorker do
expect { subject.perform(merge_request.id) }
.not_to change { merge_request.reload.head_pipeline_id }
end
+
+ it_behaves_like 'an idempotent worker' do
+ let(:job_args) { merge_request.id }
+
+ it 'does not update the head_pipeline_id when run multiple times' do
+ expect { subject }
+ .not_to change { merge_request.reload.head_pipeline_id }
+ end
+ end
end
end
@@ -35,10 +53,19 @@ describe UpdateHeadPipelineForMergeRequestWorker do
expect { subject.perform(merge_request.id) }
.not_to change { merge_request.reload.head_pipeline_id }
end
+
+ it_behaves_like 'an idempotent worker' do
+ let(:job_args) { merge_request.id }
+
+ it 'does not update the head_pipeline_id when run multiple times' do
+ expect { subject }
+ .not_to change { merge_request.reload.head_pipeline_id }
+ end
+ end
end
context 'when a merge request pipeline exists' do
- let!(:merge_request_pipeline) do
+ let_it_be(:merge_request_pipeline) do
create(:ci_pipeline,
project: project,
source: :merge_request_event,
@@ -52,6 +79,16 @@ describe UpdateHeadPipelineForMergeRequestWorker do
.from(nil).to(merge_request_pipeline.id)
end
+ it_behaves_like 'an idempotent worker' do
+ let(:job_args) { merge_request.id }
+
+ it 'sets the merge request pipeline as the head pipeline when run multiple times' do
+ subject
+
+ expect(merge_request.reload.head_pipeline_id).to eq(merge_request_pipeline.id)
+ end
+ end
+
context 'when branch pipeline exists' do
let!(:branch_pipeline) do
create(:ci_pipeline, project: project, source: :push, sha: latest_sha)
@@ -62,6 +99,16 @@ describe UpdateHeadPipelineForMergeRequestWorker do
.to change { merge_request.reload.head_pipeline_id }
.from(nil).to(merge_request_pipeline.id)
end
+
+ it_behaves_like 'an idempotent worker' do
+ let(:job_args) { merge_request.id }
+
+ it 'sets the merge request pipeline as the head pipeline when run multiple times' do
+ subject
+
+ expect(merge_request.reload.head_pipeline_id).to eq(merge_request_pipeline.id)
+ end
+ end
end
end
end