diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-20 14:10:13 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-20 14:10:13 +0300 |
commit | 0ea3fcec397b69815975647f5e2aa5fe944a8486 (patch) | |
tree | 7979381b89d26011bcf9bdc989a40fcc2f1ed4ff /spec/features/groups | |
parent | 72123183a20411a36d607d70b12d57c484394c8e (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.rb | 4 | ||||
-rw-r--r-- | spec/features/groups/empty_states_spec.rb | 2 | ||||
-rw-r--r-- | spec/features/groups/group_runners_spec.rb | 52 | ||||
-rw-r--r-- | spec/features/groups/import_export/connect_instance_spec.rb | 2 | ||||
-rw-r--r-- | spec/features/groups/issues_spec.rb | 47 | ||||
-rw-r--r-- | spec/features/groups/members/leave_group_spec.rb | 4 | ||||
-rw-r--r-- | spec/features/groups/navbar_spec.rb | 9 | ||||
-rw-r--r-- | spec/features/groups/settings/access_tokens_spec.rb | 3 | ||||
-rw-r--r-- | spec/features/groups/show_spec.rb | 52 | ||||
-rw-r--r-- | spec/features/groups/user_sees_users_dropdowns_in_issuables_list_spec.rb | 47 |
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 |