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:
Diffstat (limited to 'spec/models/merge_request_spec.rb')
-rw-r--r--spec/models/merge_request_spec.rb71
1 files changed, 56 insertions, 15 deletions
diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb
index bf71d289105..da3f691b63a 100644
--- a/spec/models/merge_request_spec.rb
+++ b/spec/models/merge_request_spec.rb
@@ -1869,16 +1869,25 @@ RSpec.describe MergeRequest, factory_default: :keep, feature_category: :code_rev
end
describe '#committers' do
- it 'returns all the committers of every commit in the merge request' do
- users = subject.commits.without_merge_commits.map(&:committer_email).uniq.map do |email|
- create(:user, email: email)
- end
+ let(:commits) { double }
+ let(:committers) { double }
+
+ context 'when not given with_merge_commits' do
+ it 'calls committers on the commits object with the expected param' do
+ expect(subject).to receive(:commits).and_return(commits)
+ expect(commits).to receive(:committers).with(with_merge_commits: false).and_return(committers)
- expect(subject.committers).to match_array(users)
+ expect(subject.committers).to eq(committers)
+ end
end
- it 'returns an empty array if no committer is associated with a user' do
- expect(subject.committers).to be_empty
+ context 'when given with_merge_commits true' do
+ it 'calls committers on the commits object with the expected param' do
+ expect(subject).to receive(:commits).and_return(commits)
+ expect(commits).to receive(:committers).with(with_merge_commits: true).and_return(committers)
+
+ expect(subject.committers(with_merge_commits: true)).to eq(committers)
+ end
end
end
@@ -3257,6 +3266,15 @@ RSpec.describe MergeRequest, factory_default: :keep, feature_category: :code_rev
end
end
end
+
+ context 'with check_mergeability_retry_lease option' do
+ it 'call check_mergeability with sync_retry_lease' do
+ allow(subject).to receive(:mergeable_state?) { true }
+ expect(subject).to receive(:check_mergeability).with(sync_retry_lease: true)
+
+ subject.mergeable?(check_mergeability_retry_lease: true)
+ end
+ end
end
describe '#skipped_mergeable_checks' do
@@ -3291,6 +3309,14 @@ RSpec.describe MergeRequest, factory_default: :keep, feature_category: :code_rev
subject.check_mergeability
end
+ context 'when sync_retry_lease is true' do
+ it 'executes MergeabilityCheckService' do
+ expect(mergeability_service).to receive(:execute).with(retry_lease: true)
+
+ subject.check_mergeability(sync_retry_lease: true)
+ end
+ end
+
context 'when async is true' do
it 'executes MergeabilityCheckService asynchronously' do
expect(mergeability_service).to receive(:async_execute)
@@ -5124,24 +5150,39 @@ RSpec.describe MergeRequest, factory_default: :keep, feature_category: :code_rev
let(:merge_request) { build(:merge_request, source_project: create(:project, :repository)) }
- it 'does schedule MergeRequests::CleanupRefWorker' do
- expect(MergeRequests::CleanupRefWorker).to receive(:perform_async).with(merge_request.id, 'train')
+ it 'deletes refs asynchronously' do
+ expect(merge_request.target_project.repository)
+ .to receive(:async_delete_refs)
+ .with(merge_request.train_ref_path)
subject
end
- context 'when merge_request_cleanup_ref_worker_async is disabled' do
+ context 'when merge_request_delete_gitaly_refs_in_batches is disabled' do
before do
- stub_feature_flags(merge_request_cleanup_ref_worker_async: false)
+ stub_feature_flags(merge_request_delete_gitaly_refs_in_batches: false)
end
- it 'deletes all refs from the target project' do
- expect(merge_request.target_project.repository)
- .to receive(:delete_refs)
- .with(merge_request.train_ref_path)
+ it 'does schedule MergeRequests::CleanupRefWorker' do
+ expect(MergeRequests::CleanupRefWorker).to receive(:perform_async).with(merge_request.id, 'train')
subject
end
+
+ context 'when merge_request_cleanup_ref_worker_async is disabled' do
+ before do
+ stub_feature_flags(merge_request_delete_gitaly_refs_in_batches: false)
+ stub_feature_flags(merge_request_cleanup_ref_worker_async: false)
+ end
+
+ it 'deletes all refs from the target project' do
+ expect(merge_request.target_project.repository)
+ .to receive(:delete_refs)
+ .with(merge_request.train_ref_path)
+
+ subject
+ end
+ end
end
end