summaryrefslogtreecommitdiff
path: root/spec/features/projects/feature_flag_user_lists/user_deletes_feature_flag_user_list_spec.rb
blob: 37d6f299883ad8657548624591178db0c15ef248 (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
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe 'User deletes feature flag user list', :js do
  let_it_be(:project) { create(:project) }
  let_it_be(:developer) { create(:user) }

  before do
    project.add_developer(developer)
    sign_in(developer)
  end

  context 'with a list' do
    before do
      create(:operations_feature_flag_user_list, project: project, name: 'My List')
    end

    it 'deletes the list' do
      visit(project_feature_flags_user_lists_path(project, scope: 'userLists'))

      delete_user_list_button.click
      delete_user_list_modal_confirmation_button.click

      expect(page).to have_text('Lists')
      expect(page).not_to have_selector('[data-testid="ffUserListName"]')
    end
  end

  context 'with a list that is in use' do
    before do
      list = create(:operations_feature_flag_user_list, project: project, name: 'My List')
      feature_flag = create(:operations_feature_flag, :new_version_flag, project: project)
      create(:operations_strategy, feature_flag: feature_flag, name: 'gitlabUserList', user_list: list)
    end

    it 'does not delete the list' do
      visit(project_feature_flags_user_lists_path(project, scope: 'userLists'))

      delete_user_list_button.click
      delete_user_list_modal_confirmation_button.click

      expect(page).to have_text('User list is associated with a strategy')
      expect(page).to have_text('Lists 1')
      expect(page).to have_text('My List')

      alert_dismiss_button.click

      expect(page).not_to have_text('User list is associated with a strategy')
    end
  end

  def delete_user_list_button
    find("button[data-testid='delete-user-list']")
  end

  def delete_user_list_modal_confirmation_button
    find("button[data-testid='modal-confirm']")
  end

  def alert_dismiss_button
    find("div[data-testid='serverErrors'] button")
  end
end