1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'Merge request > User sets to auto-merge', :js, feature_category: :code_review_workflow do
include ContentEditorHelpers
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' }
)
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
)
end
before do
project.add_maintainer(user)
end
context 'when there is active pipeline for merge request' do
before do
create(:ci_build, pipeline: pipeline)
sign_in(user)
visit project_merge_request_path(project, merge_request)
end
describe 'setting to auto-merge when pipeline succeeds' do
shared_examples 'Set to auto-merge activator' do
it 'activates auto-merge feature', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/410055' do
close_rich_text_promo_popover_if_present
expect(page).to have_content 'Set to auto-merge'
click_button "Set to auto-merge"
wait_for_requests
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"
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 'Set to auto-merge activator'
end
context 'when enabled after it was previously canceled' do
before do
close_rich_text_promo_popover_if_present
click_button "Set to auto-merge"
wait_for_requests
click_button "Cancel auto-merge"
wait_for_requests
end
it_behaves_like 'Set to auto-merge activator'
end
context 'when it is 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 'Set to auto-merge activator'
end
end
end
context 'when there is an active pipeline' 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'
)
end
let!(:build) do
create(:ci_build, pipeline: pipeline)
end
before do
sign_in user
visit project_merge_request_path(project, merge_request)
end
it 'allows to cancel the auto-merge', quarantine: 'https://gitlab.com/gitlab-org/gitlab/-/issues/410055' do
close_rich_text_promo_popover_if_present
click_button "Cancel auto-merge"
expect(page).to have_button "Set to auto-merge"
refresh
expect(page).to have_content "canceled the automatic merge"
end
end
context 'when there is no active pipeline' do
before do
sign_in user
visit project_merge_request_path(project, merge_request.reload)
end
it 'does not allow to set to auto-merge' do
expect(page).not_to have_link 'Set to auto-merge'
end
end
end
|