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

user_bulk_edits_issues_spec.rb « issues « features « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 1ef2918adec696fca25af025d26d3bdbfe9da5e9 (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 'Multiple issue updating from issues#index', :js do
  let!(:project)   { create(:project) }
  let!(:issue)     { create(:issue, project: project) }
  let!(:user)      { create(:user) }

  before do
    project.add_maintainer(user)
    sign_in(user)
  end

  context 'status' do
    it 'sets to closed', :js do
      visit project_issues_path(project)

      click_button 'Edit issues'
      check 'Select all'
      click_button 'Select status'
      click_button 'Closed'

      click_update_issues_button
      expect(page).to have_selector('.issue', count: 0)
    end

    it 'sets to open', :js do
      create_closed
      visit project_issues_path(project, state: 'closed')

      click_button 'Edit issues'
      check 'Select all'
      click_button 'Select status'
      click_button 'Open'

      click_update_issues_button
      expect(page).to have_selector('.issue', count: 0)
    end
  end

  context 'assignee' do
    it 'updates to current user' do
      visit project_issues_path(project)

      click_button 'Edit issues'
      check 'Select all'
      click_update_assignee_button
      click_link user.username

      click_update_issues_button

      page.within('.issue .controls') do
        expect(find('.author-link')['href']).to have_content(user.website_url)
      end
    end

    it 'updates to unassigned' do
      create_assigned
      visit project_issues_path(project)

      expect(find('.issue:first-of-type')).to have_link "Assigned to #{user.name}"

      click_button 'Edit issues'
      check 'Select all'
      click_update_assignee_button
      click_link 'Unassigned'
      click_update_issues_button

      expect(find('.issue:first-of-type')).not_to have_link "Assigned to #{user.name}"
    end
  end

  context 'milestone' do
    let!(:milestone) { create(:milestone, project: project) }

    it 'updates milestone' do
      visit project_issues_path(project)

      click_button 'Edit issues'
      check 'Select all'
      click_button 'Select milestone'
      click_link milestone.title
      click_update_issues_button

      expect(page.find('.issue')).to have_content milestone.title
    end

    it 'sets to no milestone' do
      create_with_milestone
      visit project_issues_path(project)

      wait_for_requests

      expect(find('.issue:first-of-type')).to have_text milestone.title

      click_button 'Edit issues'
      check 'Select all'
      click_button 'Select milestone'
      click_link 'No milestone'
      click_update_issues_button

      expect(find('.issue:first-of-type')).not_to have_text milestone.title
    end
  end

  describe 'select all issues' do
    let!(:issue_2) { create(:issue, project: project) }

    it 'after selecting all issues, unchecking one issue only unselects that one issue' do
      visit project_issues_path(project)

      click_button 'Edit issues'
      check 'Select all'
      uncheck issue.title

      expect(page).to have_unchecked_field 'Select all'
      expect(page).to have_unchecked_field issue.title
      expect(page).to have_checked_field issue_2.title
    end
  end

  def create_closed
    create(:issue, project: project, state: :closed)
  end

  def create_assigned
    create(:issue, project: project, assignees: [user])
  end

  def create_with_milestone
    create(:issue, project: project, milestone: milestone)
  end

  def click_update_assignee_button
    click_button 'Select assignee'
    wait_for_requests
  end

  def click_update_issues_button
    click_button 'Update all'
    wait_for_requests
  end
end