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

packages_and_registries_spec.rb « settings « groups « features « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: cbd26441e2b9d1cb4edd66e8cc17c9a2a4482bdb (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
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe 'Group Package and registry settings', feature_category: :package_registry do
  include WaitForRequests

  let(:user) { create(:user) }
  let(:group) { create(:group) }
  let(:sub_group) { create(:group, parent: group) }

  before do
    group.add_owner(user)
    sub_group.add_owner(user)
    sign_in(user)
  end

  context 'when packages feature is disabled on the group' do
    before do
      stub_packages_setting(enabled: false)
    end

    it 'the menu item is not visible', :js do
      visit group_path(group)

      within_testid('super-sidebar') do
        click_button 'Settings'
        expect(page).not_to have_content 'Packages and registries'
      end
    end

    it 'renders 404 when navigating to page' do
      visit_settings_page

      expect(page).to have_content('Not Found')
    end
  end

  context 'when packages feature is enabled on the group' do
    it 'the menu item is visible', :js do
      visit group_path(group)

      within_testid('super-sidebar') do
        click_button 'Settings'
        expect(page).to have_content 'Packages and registries'
      end
    end

    it 'has a page title set' do
      visit_settings_page

      expect(page).to have_title _('Packages and registries settings')
    end

    it 'sidebar menu is open', :js do
      visit_settings_page

      within_testid('super-sidebar') do
        expect(page).to have_link _('Packages and registries')
      end
    end

    it 'passes axe automated accessibility testing', :js do
      visit_settings_page

      wait_for_requests

      expect(page).to be_axe_clean.within('[data-testid="packages-and-registries-group-settings"]')
                                  .skipping :'link-in-text-block', :'heading-order'
    end

    it 'has a Duplicate packages section', :js do
      visit_settings_page

      expect(page).to have_content('Duplicate packages')
      expect(page).to have_content('Allow duplicates')
      expect(page).to have_content('Exceptions')
    end

    it 'automatically saves changes to the server', :js do
      visit_settings_page
      wait_for_requests

      within '[data-testid="maven-settings"]' do
        expect(page).to have_field _('Exceptions'), disabled: true

        click_button class: 'gl-toggle'

        expect(page).to have_field _('Exceptions'), disabled: false

        visit_settings_page

        expect(page).to have_field _('Exceptions'), disabled: false
      end
    end

    it 'shows an error on wrong regex', :js do
      visit_settings_page
      wait_for_requests

      within '[data-testid="maven-settings"]' do
        click_button class: 'gl-toggle'

        fill_in _('Exceptions'), with: ')'

        # simulate blur event
        send_keys(:tab)
      end

      expect(page).to have_content('is an invalid regexp')
    end

    context 'in a sub group' do
      it 'works correctly', :js do
        visit_sub_group_settings_page
        wait_for_requests

        within '[data-testid="maven-settings"]' do
          expect(page).to have_content('Allow duplicates')

          expect(page).to have_field _('Exceptions'), disabled: true

          click_button class: 'gl-toggle'

          expect(page).to have_field _('Exceptions'), disabled: false
        end
      end
    end
  end

  def visit_settings_page
    visit group_settings_packages_and_registries_path(group)
  end

  def visit_sub_group_settings_page
    visit group_settings_packages_and_registries_path(sub_group)
  end
end