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-06-20 06:06:58 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-20 06:06:58 +0300
commitaccf0d7db3d58a62212125703df39e341d327ec6 (patch)
tree7ea5e828e0350f9ecd3fd9c8d6daee02849ab2ef /spec/workers
parentd7511e6d2f947dbae4b19947b746fdabb0897d92 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/workers')
-rw-r--r--spec/workers/merge_requests/mergeability_check_batch_worker_spec.rb54
1 files changed, 46 insertions, 8 deletions
diff --git a/spec/workers/merge_requests/mergeability_check_batch_worker_spec.rb b/spec/workers/merge_requests/mergeability_check_batch_worker_spec.rb
index 2c429ed62fb..828ffb0c811 100644
--- a/spec/workers/merge_requests/mergeability_check_batch_worker_spec.rb
+++ b/spec/workers/merge_requests/mergeability_check_batch_worker_spec.rb
@@ -5,6 +5,8 @@ require 'spec_helper'
RSpec.describe MergeRequests::MergeabilityCheckBatchWorker, feature_category: :code_review_workflow do
subject { described_class.new }
+ let_it_be(:user) { create(:user) }
+
describe '#perform' do
context 'when some merge_requests do not exist' do
it 'ignores unknown merge request ids' do
@@ -12,26 +14,49 @@ RSpec.describe MergeRequests::MergeabilityCheckBatchWorker, feature_category: :c
expect(Sidekiq.logger).not_to receive(:error)
- subject.perform([1234, 5678])
+ subject.perform([1234, 5678], user.id)
end
end
context 'when some merge_requests needs mergeability checks' do
let(:merge_request_1) { create(:merge_request, merge_status: :unchecked) }
- let(:merge_request_2) { create(:merge_request, merge_status: :cannot_be_merged_rechecking) }
+ let(:merge_request_2) { create(:merge_request, merge_status: :unchecked) }
let(:merge_request_3) { create(:merge_request, merge_status: :can_be_merged) }
+ before do
+ merge_request_1.project.add_developer(user)
+ merge_request_2.project.add_reporter(user)
+ merge_request_3.project.add_developer(user)
+ end
+
it 'executes MergeabilityCheckService on merge requests that needs to be checked' do
expect_next_instance_of(MergeRequests::MergeabilityCheckService, merge_request_1) do |service|
expect(service).to receive(:execute).and_return(ServiceResponse.success)
end
- expect_next_instance_of(MergeRequests::MergeabilityCheckService, merge_request_2) do |service|
- expect(service).to receive(:execute).and_return(ServiceResponse.success)
- end
+ expect(MergeRequests::MergeabilityCheckService).not_to receive(:new).with(merge_request_2.id)
expect(MergeRequests::MergeabilityCheckService).not_to receive(:new).with(merge_request_3.id)
expect(MergeRequests::MergeabilityCheckService).not_to receive(:new).with(1234)
- subject.perform([merge_request_1.id, merge_request_2.id, merge_request_3.id, 1234])
+ subject.perform([merge_request_1.id, merge_request_2.id, merge_request_3.id, 1234], user.id)
+ end
+
+ context 'when restrict_merge_status_recheck FF is off' do
+ before do
+ stub_feature_flags(restrict_merge_status_recheck: false)
+ end
+
+ it 'executes MergeabilityCheckService on merge requests that needs to be checked' do
+ expect_next_instance_of(MergeRequests::MergeabilityCheckService, merge_request_1) do |service|
+ expect(service).to receive(:execute).and_return(ServiceResponse.success)
+ end
+ expect_next_instance_of(MergeRequests::MergeabilityCheckService, merge_request_2) do |service|
+ expect(service).to receive(:execute).and_return(ServiceResponse.success)
+ end
+ expect(MergeRequests::MergeabilityCheckService).not_to receive(:new).with(merge_request_3.id)
+ expect(MergeRequests::MergeabilityCheckService).not_to receive(:new).with(1234)
+
+ subject.perform([merge_request_1.id, merge_request_2.id, merge_request_3.id, 1234], user.id)
+ end
end
it 'structurally logs a failed mergeability check' do
@@ -45,13 +70,26 @@ RSpec.describe MergeRequests::MergeabilityCheckBatchWorker, feature_category: :c
worker: described_class.to_s,
message: 'Failed to check mergeability of merge request: solar flares')
- subject.perform([merge_request_1.id])
+ subject.perform([merge_request_1.id], user.id)
+ end
+
+ context 'when user is nil' do
+ let(:user) { nil }
+
+ it 'does not run any mergeability checks' do
+ expect(MergeRequests::MergeabilityCheckService).not_to receive(:new).with(merge_request_1.id)
+ expect(MergeRequests::MergeabilityCheckService).not_to receive(:new).with(merge_request_2.id)
+ expect(MergeRequests::MergeabilityCheckService).not_to receive(:new).with(merge_request_3.id)
+ expect(MergeRequests::MergeabilityCheckService).not_to receive(:new).with(1234)
+
+ subject.perform([merge_request_1.id, merge_request_2.id, merge_request_3.id, 1234], user&.id)
+ end
end
end
it_behaves_like 'an idempotent worker' do
let(:merge_request) { create(:merge_request) }
- let(:job_args) { [merge_request.id] }
+ let(:job_args) { [[merge_request.id], user.id] }
it 'is mergeable' do
subject