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/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb')
-rw-r--r--spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb201
1 files changed, 28 insertions, 173 deletions
diff --git a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb
index e42e4735ee2..ebec8a6d2ea 100644
--- a/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb
+++ b/spec/features/merge_request/user_merges_when_pipeline_succeeds_spec.rb
@@ -6,17 +6,23 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js, featur
let(:project) { create(:project, :public, :repository) }
let(:user) { project.creator }
let(:merge_request) do
- create(:merge_request_with_diffs, source_project: project,
- author: user,
- title: 'Bug NS-04',
- merge_params: { force_remove_source_branch: '1' })
+ create(
+ :merge_request_with_diffs,
+ source_project: project,
+ author: user,
+ title: 'Bug NS-04',
+ merge_params: { force_remove_source_branch: '1' }
+ )
end
let(:pipeline) do
- create(:ci_pipeline, project: project,
- sha: merge_request.diff_head_sha,
- ref: merge_request.source_branch,
- head_pipeline_of: merge_request)
+ create(
+ :ci_pipeline,
+ project: project,
+ sha: merge_request.diff_head_sha,
+ ref: merge_request.source_branch,
+ head_pipeline_of: merge_request
+ )
end
before do
@@ -26,83 +32,6 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js, featur
context 'when there is active pipeline for merge request' do
before do
create(:ci_build, pipeline: pipeline)
- stub_feature_flags(auto_merge_labels_mr_widget: false)
-
- sign_in(user)
- visit project_merge_request_path(project, merge_request)
- end
-
- describe 'enabling Merge when pipeline succeeds' do
- shared_examples 'Merge when pipeline succeeds activator' do
- it 'activates the Merge when pipeline succeeds feature', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/410105' do
- click_button "Merge when pipeline succeeds"
-
- expect(page).to have_content "Set by #{user.name} to be merged automatically when the pipeline succeeds"
- expect(page).to have_content "Source branch will not be deleted"
- expect(page).to have_selector ".js-cancel-auto-merge"
- visit project_merge_request_path(project, merge_request) # Needed to refresh the page
- expect(page).to have_content /enabled an automatic merge when the pipeline for \h{8} succeeds/i
- end
- end
-
- context "when enabled immediately" do
- it_behaves_like 'Merge when pipeline succeeds activator'
- end
-
- context 'when enabled after pipeline status changed', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/258667' do
- before do
- pipeline.run!
-
- # We depend on merge request widget being reloaded
- # so we have to wait for asynchronous call to reload it
- # and have_content expectation handles that.
- #
- expect(page).to have_content "Pipeline ##{pipeline.id} running"
- end
-
- it_behaves_like 'Merge when pipeline succeeds activator'
- end
-
- context 'when enabled after it was previously canceled' do
- before do
- click_button "Merge when pipeline succeeds"
-
- wait_for_requests
-
- click_button "Cancel auto-merge"
-
- wait_for_requests
-
- expect(page).to have_content 'Merge when pipeline succeeds'
- end
-
- it_behaves_like 'Merge when pipeline succeeds activator'
- end
-
- context 'when it was enabled and then canceled' do
- let(:merge_request) do
- create(:merge_request_with_diffs,
- :merge_when_pipeline_succeeds,
- source_project: project,
- title: 'Bug NS-04',
- author: user,
- merge_user: user)
- end
-
- before do
- merge_request.merge_params['force_remove_source_branch'] = '0'
- merge_request.save!
- click_button "Cancel auto-merge"
- end
-
- it_behaves_like 'Merge when pipeline succeeds activator'
- end
- end
- end
-
- context 'when there is active pipeline for merge request with auto_merge_labels_mr_widget on' do
- before do
- create(:ci_build, pipeline: pipeline)
stub_feature_flags(auto_merge_labels_mr_widget: true)
sign_in(user)
@@ -144,12 +73,14 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js, featur
context 'when it was enabled and then canceled' do
let(:merge_request) do
- create(:merge_request_with_diffs,
- :merge_when_pipeline_succeeds,
- source_project: project,
- title: 'Bug NS-04',
- author: user,
- merge_user: user)
+ create(
+ :merge_request_with_diffs,
+ :merge_when_pipeline_succeeds,
+ source_project: project,
+ title: 'Bug NS-04',
+ author: user,
+ merge_user: user
+ )
end
before do
@@ -165,91 +96,15 @@ RSpec.describe 'Merge request > User merges when pipeline succeeds', :js, featur
context 'when merge when pipeline succeeds is enabled' do
let(:merge_request) do
- create(:merge_request_with_diffs, :simple, :merge_when_pipeline_succeeds,
+ create(
+ :merge_request_with_diffs,
+ :simple,
+ :merge_when_pipeline_succeeds,
source_project: project,
author: user,
merge_user: user,
- title: 'MepMep')
- end
-
- let!(:build) do
- create(:ci_build, pipeline: pipeline)
- end
-
- before do
- stub_feature_flags(auto_merge_labels_mr_widget: false)
- sign_in user
- visit project_merge_request_path(project, merge_request)
- end
-
- it 'allows to cancel the automatic merge', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/412416' do
- click_button "Cancel auto-merge"
-
- expect(page).to have_button "Merge when pipeline succeeds"
-
- refresh
-
- expect(page).to have_content "canceled the automatic merge"
- end
-
- context 'when pipeline succeeds' do
- before do
- build.success
- refresh
- end
-
- it 'merges merge request', :sidekiq_might_not_need_inline do
- expect(page).to have_content 'Changes merged'
- expect(merge_request.reload).to be_merged
- end
- end
-
- context 'view merge request with MWPS enabled but automatically merge fails' do
- before do
- merge_request.update!(
- merge_user: merge_request.author,
- merge_error: 'Something went wrong'
- )
- refresh
- end
-
- it 'shows information about the merge error' do
- # Wait for the `ci_status` and `merge_check` requests
- wait_for_requests
-
- page.within('.mr-state-widget') do
- expect(page).to have_content('Something went wrong. Try again.')
- end
- end
- end
-
- context 'view merge request with MWPS enabled but automatically merge fails' do
- before do
- merge_request.update!(
- merge_user: merge_request.author,
- merge_error: 'Something went wrong.'
- )
- refresh
- end
-
- it 'shows information about the merge error' do
- # Wait for the `ci_status` and `merge_check` requests
- wait_for_requests
-
- page.within('.mr-state-widget') do
- expect(page).to have_content('Something went wrong. Try again.')
- end
- end
- end
- end
-
- context 'when merge when pipeline succeeds is enabled and auto_merge_labels_mr_widget on' do
- let(:merge_request) do
- create(:merge_request_with_diffs, :simple, :merge_when_pipeline_succeeds,
- source_project: project,
- author: user,
- merge_user: user,
- title: 'MepMep')
+ title: 'MepMep'
+ )
end
let!(:build) do