diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-06 21:09:38 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-05-06 21:09:38 +0300 |
commit | 73886079f3f877ffb8f8938d700643a5e99bc849 (patch) | |
tree | ff8f3c64df680962c1da38156e8c1e63a015b0fb /spec/workers | |
parent | a7beadc83470bd9ce23757a019795f49f95a6fff (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.rb | 65 |
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 |