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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-06-20 14:10:13 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-06-20 14:10:13 +0300
commit0ea3fcec397b69815975647f5e2aa5fe944a8486 (patch)
tree7979381b89d26011bcf9bdc989a40fcc2f1ed4ff /spec/features/groups
parent72123183a20411a36d607d70b12d57c484394c8e (diff)
Add latest changes from gitlab-org/gitlab@15-1-stable-eev15.1.0-rc42
Diffstat (limited to 'spec/features/groups')
-rw-r--r--spec/features/groups/clusters/user_spec.rb4
-rw-r--r--spec/features/groups/empty_states_spec.rb2
-rw-r--r--spec/features/groups/group_runners_spec.rb52
-rw-r--r--spec/features/groups/import_export/connect_instance_spec.rb2
-rw-r--r--spec/features/groups/issues_spec.rb47
-rw-r--r--spec/features/groups/members/leave_group_spec.rb4
-rw-r--r--spec/features/groups/navbar_spec.rb9
-rw-r--r--spec/features/groups/settings/access_tokens_spec.rb3
-rw-r--r--spec/features/groups/show_spec.rb52
-rw-r--r--spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb47
10 files changed, 149 insertions, 73 deletions
diff --git a/spec/features/groups/clusters/user_spec.rb b/spec/features/groups/clusters/user_spec.rb
index 74ea72b238f..6b512323d4d 100644
--- a/spec/features/groups/clusters/user_spec.rb
+++ b/spec/features/groups/clusters/user_spec.rb
@@ -112,9 +112,9 @@ RSpec.describe 'User Cluster', :js do
context 'when user destroys the cluster' do
before do
click_link 'Advanced Settings'
- click_button 'Remove integration and resources'
+ find('[data-testid="remove-integration-button"]').click
fill_in 'confirm_cluster_name_input', with: cluster.name
- click_button 'Remove integration'
+ find('[data-testid="remove-integration-modal-button"]').click
end
it 'user sees creation form with the successful message' do
diff --git a/spec/features/groups/empty_states_spec.rb b/spec/features/groups/empty_states_spec.rb
index 71f38401fa1..f11e5c56545 100644
--- a/spec/features/groups/empty_states_spec.rb
+++ b/spec/features/groups/empty_states_spec.rb
@@ -7,8 +7,6 @@ RSpec.describe 'Group empty states' do
let(:user) { create(:group_member, :developer, user: create(:user), group: group ).user }
before do
- stub_feature_flags(vue_issues_list: true)
-
sign_in(user)
end
diff --git a/spec/features/groups/group_runners_spec.rb b/spec/features/groups/group_runners_spec.rb
index 1d821edefa3..a60b8a60da0 100644
--- a/spec/features/groups/group_runners_spec.rb
+++ b/spec/features/groups/group_runners_spec.rb
@@ -33,7 +33,7 @@ RSpec.describe "Group Runners" do
visit group_runners_path(group)
end
- it_behaves_like "shows no runners"
+ it_behaves_like 'shows no runners registered'
it 'shows tabs with total counts equal to 0' do
expect(page).to have_link('All 0')
@@ -70,6 +70,18 @@ RSpec.describe "Group Runners" do
expect(find_link('Edit')[:href]).to end_with(edit_group_runner_path(group, group_runner))
end
end
+
+ context 'when description does not match' do
+ before do
+ input_filtered_search_keys('runner-baz')
+ end
+
+ it_behaves_like 'shows no runners found'
+
+ it 'shows no runner' do
+ expect(page).not_to have_content 'runner-foo'
+ end
+ end
end
context "with an online project runner" do
@@ -137,31 +149,37 @@ RSpec.describe "Group Runners" do
create(:ci_runner, :group, groups: [group], description: 'runner-foo', contacted_at: Time.zone.now)
end
- it 'user edits the runner to be protected' do
- visit edit_group_runner_path(group, runner)
+ context 'when group_runner_view_ui is disabled' do
+ before do
+ stub_feature_flags(group_runner_view_ui: false)
+ end
- expect(page.find_field('runner[access_level]')).not_to be_checked
+ it 'user edits the runner to be protected' do
+ visit edit_group_runner_path(group, runner)
- check 'runner_access_level'
- click_button 'Save changes'
+ expect(page.find_field('runner[access_level]')).not_to be_checked
- expect(page).to have_content 'Protected Yes'
- end
+ check 'runner_access_level'
+ click_button 'Save changes'
- context 'when a runner has a tag' do
- before do
- runner.update!(tag_list: ['tag'])
+ expect(page).to have_content 'Protected Yes'
end
- it 'user edits runner not to run untagged jobs' do
- visit edit_group_runner_path(group, runner)
+ context 'when a runner has a tag' do
+ before do
+ runner.update!(tag_list: ['tag'])
+ end
- expect(page.find_field('runner[run_untagged]')).to be_checked
+ it 'user edits runner not to run untagged jobs' do
+ visit edit_group_runner_path(group, runner)
- uncheck 'runner_run_untagged'
- click_button 'Save changes'
+ expect(page.find_field('runner[run_untagged]')).to be_checked
- expect(page).to have_content 'Can run untagged jobs No'
+ uncheck 'runner_run_untagged'
+ click_button 'Save changes'
+
+ expect(page).to have_content 'Can run untagged jobs No'
+ end
end
end
end
diff --git a/spec/features/groups/import_export/connect_instance_spec.rb b/spec/features/groups/import_export/connect_instance_spec.rb
index 552b599a3f3..ae03e64cf59 100644
--- a/spec/features/groups/import_export/connect_instance_spec.rb
+++ b/spec/features/groups/import_export/connect_instance_spec.rb
@@ -34,7 +34,7 @@ RSpec.describe 'Import/Export - Connect to another instance', :js do
click_on 'Connect instance'
- expect(page).to have_content 'Showing 1-1 of 42 groups from %{url}' % { url: source_url }
+ expect(page).to have_content 'Showing 1-1 of 42 groups that you own from %{url}' % { url: source_url }
expect(page).to have_content 'stub-group'
visit '/'
diff --git a/spec/features/groups/issues_spec.rb b/spec/features/groups/issues_spec.rb
index ef3346b9763..c86705832b1 100644
--- a/spec/features/groups/issues_spec.rb
+++ b/spec/features/groups/issues_spec.rb
@@ -11,10 +11,6 @@ RSpec.describe 'Group issues page' do
let(:project_with_issues_disabled) { create(:project, :issues_disabled, group: group) }
let(:path) { issues_group_path(group) }
- before do
- stub_feature_flags(vue_issues_list: true)
- end
-
context 'with shared examples', :js do
let(:issuable) { create(:issue, project: project, title: "this is my created issuable")}
@@ -140,8 +136,6 @@ RSpec.describe 'Group issues page' do
let!(:issue3) { create(:issue, project: project, title: 'Issue #3', relative_position: 3) }
before do
- stub_feature_flags(vue_issues_list: false)
-
sign_in(user_in_group)
end
@@ -164,45 +158,36 @@ RSpec.describe 'Group issues page' do
end
it 'issues should be draggable and persist order' do
- visit issues_group_path(group, sort: 'relative_position')
-
- wait_for_requests
+ visit issues_group_path(group)
+ select_manual_sort
- drag_to(selector: '.manual-ordering',
- from_index: 0,
- to_index: 2)
+ drag_to(selector: '.manual-ordering', from_index: 0, to_index: 2)
- wait_for_requests
+ expect_issue_order
- check_issue_order
-
- visit issues_group_path(group, sort: 'relative_position')
+ visit issues_group_path(group)
- check_issue_order
+ expect_issue_order
end
it 'issues should not be draggable when user is not logged in' do
sign_out(user_in_group)
-
- visit issues_group_path(group, sort: 'relative_position')
-
wait_for_requests
+ visit issues_group_path(group)
+ select_manual_sort
- drag_to(selector: '.manual-ordering',
- from_index: 0,
- to_index: 2)
+ drag_to(selector: '.manual-ordering', from_index: 0, to_index: 2)
- wait_for_requests
+ expect(page).to have_text 'An error occurred while reordering issues.'
+ end
- # Issue order should remain the same
- page.within('.manual-ordering') do
- expect(find('.issue:nth-child(1) .title')).to have_content('Issue #1')
- expect(find('.issue:nth-child(2) .title')).to have_content('Issue #2')
- expect(find('.issue:nth-child(3) .title')).to have_content('Issue #3')
- end
+ def select_manual_sort
+ click_button 'Created date'
+ click_button 'Manual'
+ wait_for_requests
end
- def check_issue_order
+ def expect_issue_order
expect(page).to have_css('.issue:nth-child(1) .title', text: 'Issue #2')
expect(page).to have_css('.issue:nth-child(2) .title', text: 'Issue #3')
expect(page).to have_css('.issue:nth-child(3) .title', text: 'Issue #1')
diff --git a/spec/features/groups/members/leave_group_spec.rb b/spec/features/groups/members/leave_group_spec.rb
index 50d5db46cee..66f251c859a 100644
--- a/spec/features/groups/members/leave_group_spec.rb
+++ b/spec/features/groups/members/leave_group_spec.rb
@@ -4,13 +4,13 @@ require 'spec_helper'
RSpec.describe 'Groups > Members > Leave group' do
include Spec::Support::Helpers::Features::MembersHelpers
+ include Spec::Support::Helpers::ModalHelpers
let(:user) { create(:user) }
let(:other_user) { create(:user) }
let(:group) { create(:group) }
before do
- stub_feature_flags(bootstrap_confirmation_modals: false)
sign_in(user)
end
@@ -32,7 +32,7 @@ RSpec.describe 'Groups > Members > Leave group' do
visit group_path(group, leave: 1)
- page.accept_confirm
+ accept_gl_confirm(button_text: 'Leave group')
wait_for_all_requests
expect(page).to have_current_path(dashboard_groups_path, ignore_query: true)
diff --git a/spec/features/groups/navbar_spec.rb b/spec/features/groups/navbar_spec.rb
index e4b44d65438..b4faa3ce0dd 100644
--- a/spec/features/groups/navbar_spec.rb
+++ b/spec/features/groups/navbar_spec.rb
@@ -15,7 +15,6 @@ RSpec.describe 'Group navbar' do
before do
insert_package_nav(_('Kubernetes'))
- stub_feature_flags(customer_relations: false)
stub_config(dependency_proxy: { enabled: false })
stub_config(registry: { enabled: false })
stub_feature_flags(harbor_registry_integration: false)
@@ -42,12 +41,10 @@ RSpec.describe 'Group navbar' do
it_behaves_like 'verified navigation bar'
end
- context 'when customer_relations feature and flag is enabled' do
+ context 'when customer_relations feature is enabled' do
let(:group) { create(:group, :crm_enabled) }
before do
- stub_feature_flags(customer_relations: true)
-
if Gitlab.ee?
insert_customer_relations_nav(_('Analytics'))
else
@@ -60,12 +57,10 @@ RSpec.describe 'Group navbar' do
it_behaves_like 'verified navigation bar'
end
- context 'when customer_relations feature and flag is enabled but subgroup' do
+ context 'when customer_relations feature is enabled but subgroup' do
let(:group) { create(:group, :crm_enabled, parent: create(:group)) }
before do
- stub_feature_flags(customer_relations: true)
-
visit group_path(group)
end
diff --git a/spec/features/groups/settings/access_tokens_spec.rb b/spec/features/groups/settings/access_tokens_spec.rb
index 20787c4c2f5..198d3a40df2 100644
--- a/spec/features/groups/settings/access_tokens_spec.rb
+++ b/spec/features/groups/settings/access_tokens_spec.rb
@@ -3,6 +3,8 @@
require 'spec_helper'
RSpec.describe 'Group > Settings > Access Tokens', :js do
+ include Spec::Support::Helpers::ModalHelpers
+
let_it_be(:user) { create(:user) }
let_it_be(:bot_user) { create(:user, :project_bot) }
let_it_be(:group) { create(:group) }
@@ -13,7 +15,6 @@ RSpec.describe 'Group > Settings > Access Tokens', :js do
end
before do
- stub_feature_flags(bootstrap_confirmation_modals: false)
sign_in(user)
end
diff --git a/spec/features/groups/show_spec.rb b/spec/features/groups/show_spec.rb
index eb62b6fa8ee..fa8db1befb5 100644
--- a/spec/features/groups/show_spec.rb
+++ b/spec/features/groups/show_spec.rb
@@ -72,6 +72,58 @@ RSpec.describe 'Group show page' do
end
end
end
+
+ context 'subgroups and projects empty state', :js do
+ context 'when user has permissions to create new subgroups or projects' do
+ before do
+ group.add_owner(user)
+ sign_in(user)
+ visit path
+ end
+
+ it 'shows `Create new subgroup` link' do
+ expect(page).to have_link(
+ s_('GroupsEmptyState|Create new subgroup'),
+ href: new_group_path(parent_id: group.id)
+ )
+ end
+
+ it 'shows `Create new project` link' do
+ expect(page).to have_link(
+ s_('GroupsEmptyState|Create new project'),
+ href: new_project_path(namespace_id: group.id)
+ )
+ end
+ end
+ end
+
+ context 'when user does not have permissions to create new subgroups or projects', :js do
+ before do
+ group.add_reporter(user)
+ sign_in(user)
+ visit path
+ end
+
+ it 'does not show `Create new subgroup` link' do
+ expect(page).not_to have_link(
+ s_('GroupsEmptyState|Create new subgroup'),
+ href: new_group_path(parent_id: group.id)
+ )
+ end
+
+ it 'does not show `Create new project` link' do
+ expect(page).not_to have_link(
+ s_('GroupsEmptyState|Create new project'),
+ href: new_project_path(namespace_id: group.id)
+ )
+ end
+
+ it 'shows empty state' do
+ expect(page).to have_content(s_('GroupsEmptyState|No subgroups or projects.'))
+ expect(page).to have_content(s_('GroupsEmptyState|You do not have necessary permissions to create a subgroup' \
+ ' or project in this group. Please contact an owner of this group to create a new subgroup or project.'))
+ end
+ end
end
context 'when signed out' do
diff --git a/spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb b/spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb
index 9fe11070187..4e4c0e509b0 100644
--- a/spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb
+++ b/spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb
@@ -2,23 +2,50 @@
require 'spec_helper'
-RSpec.describe 'Groups > User sees users dropdowns in issuables list' do
- let(:entity) { create(:group) }
+RSpec.describe 'Groups > User sees users dropdowns in issuables list', :js do
+ include FilteredSearchHelpers
+
+ let(:group) { create(:group) }
let(:user_in_dropdown) { create(:user) }
let!(:user_not_in_dropdown) { create(:user) }
- let!(:project) { create(:project, group: entity) }
+ let!(:project) { create(:project, group: group) }
before do
- entity.add_developer(user_in_dropdown)
+ group.add_developer(user_in_dropdown)
+ sign_in(user_in_dropdown)
end
- it_behaves_like 'issuable user dropdown behaviors' do
- let(:issuable) { create(:issue, project: project) }
- let(:issuables_path) { issues_group_path(entity) }
+ describe 'issues' do
+ let!(:issuable) { create(:issue, project: project) }
+
+ %w[Author Assignee].each do |dropdown|
+ describe "#{dropdown} dropdown" do
+ it 'only includes members of the project/group' do
+ visit issues_group_path(group)
+
+ select_tokens dropdown, '=', submit: false
+
+ expect_suggestion(user_in_dropdown.name)
+ expect_no_suggestion(user_not_in_dropdown.name)
+ end
+ end
+ end
end
- it_behaves_like 'issuable user dropdown behaviors' do
- let(:issuable) { create(:merge_request, source_project: project) }
- let(:issuables_path) { merge_requests_group_path(entity) }
+ describe 'merge requests' do
+ let!(:issuable) { create(:merge_request, source_project: project) }
+
+ %w[author assignee].each do |dropdown|
+ describe "#{dropdown} dropdown" do
+ it 'only includes members of the project/group' do
+ visit merge_requests_group_path(group)
+
+ filtered_search.set("#{dropdown}:=")
+
+ expect(find("#js-dropdown-#{dropdown} .filter-dropdown")).to have_content(user_in_dropdown.name)
+ expect(find("#js-dropdown-#{dropdown} .filter-dropdown")).not_to have_content(user_not_in_dropdown.name)
+ end
+ end
+ end
end
end