Welcome to mirror list, hosted at ThFree Co, Russian Federation.

user_sets_to_auto_merge_spec.rb « merge_request « features « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 4dc0c03aedcd97a1cfaf3bb75a21a0bf987e159d (plain)
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