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/services/merge_requests/create_service_spec.rb')
-rw-r--r--spec/services/merge_requests/create_service_spec.rb43
1 files changed, 37 insertions, 6 deletions
diff --git a/spec/services/merge_requests/create_service_spec.rb b/spec/services/merge_requests/create_service_spec.rb
index 0bc8258af42..da8e8d944d6 100644
--- a/spec/services/merge_requests/create_service_spec.rb
+++ b/spec/services/merge_requests/create_service_spec.rb
@@ -336,6 +336,12 @@ RSpec.describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do
it_behaves_like 'reviewer_ids filter' do
let(:execute) { service.execute }
end
+
+ context 'when called in a transaction' do
+ it 'does not raise an error' do
+ expect { MergeRequest.transaction { described_class.new(project: project, current_user: user, params: opts).execute } }.not_to raise_error
+ end
+ end
end
it_behaves_like 'issuable record that supports quick actions' do
@@ -495,15 +501,40 @@ RSpec.describe MergeRequests::CreateService, :clean_gitlab_redis_shared_state do
project.add_developer(user)
end
- it 'creates the merge request', :sidekiq_might_not_need_inline do
- expect_next_instance_of(MergeRequest) do |instance|
- expect(instance).to receive(:eager_fetch_ref!).and_call_original
+ context 'when async_merge_request_diff_creation is enabled' do
+ before do
+ stub_feature_flags(async_merge_request_diff_creation: true)
end
- merge_request = described_class.new(project: project, current_user: user, params: opts).execute
+ it 'creates the merge request', :sidekiq_inline do
+ expect_next_instance_of(MergeRequest) do |instance|
+ expect(instance).not_to receive(:eager_fetch_ref!)
+ end
- expect(merge_request).to be_persisted
- expect(merge_request.iid).to be > 0
+ merge_request = described_class.new(project: project, current_user: user, params: opts).execute
+
+ expect(merge_request).to be_persisted
+ expect(merge_request.iid).to be > 0
+ expect(merge_request.merge_request_diff).not_to be_empty
+ end
+ end
+
+ context 'when async_merge_request_diff_creation is disabled' do
+ before do
+ stub_feature_flags(async_merge_request_diff_creation: false)
+ end
+
+ it 'creates the merge request' do
+ expect_next_instance_of(MergeRequest) do |instance|
+ expect(instance).to receive(:eager_fetch_ref!).and_call_original
+ end
+
+ merge_request = described_class.new(project: project, current_user: user, params: opts).execute
+
+ expect(merge_request).to be_persisted
+ expect(merge_request.iid).to be > 0
+ expect(merge_request.merge_request_diff).not_to be_empty
+ end
end
it 'does not create the merge request when the target project is archived' do