diff options
Diffstat (limited to 'spec/features/groups_spec.rb')
-rw-r--r-- | spec/features/groups_spec.rb | 54 |
1 files changed, 42 insertions, 12 deletions
diff --git a/spec/features/groups_spec.rb b/spec/features/groups_spec.rb index b9fd3a1a5cc..c9a0844932a 100644 --- a/spec/features/groups_spec.rb +++ b/spec/features/groups_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe 'Group' do - let(:user) { create(:admin) } + let_it_be(:user) { create(:user) } before do sign_in(user) @@ -21,8 +21,6 @@ RSpec.describe 'Group' do end describe 'as a non-admin' do - let(:user) { create(:user) } - it 'creates a group and persists visibility radio selection', :js do stub_application_setting(default_group_visibility: :private) @@ -38,6 +36,15 @@ RSpec.describe 'Group' do end end + describe 'with expected fields' do + it 'renders from as expected', :aggregate_failures do + expect(page).to have_field('name') + expect(page).to have_field('group_path') + expect(page).to have_field('group_visibility_level_0') + expect(page).not_to have_field('description') + end + end + describe 'with space in group path' do it 'renders new group form with validation errors' do fill_in 'Group URL', with: 'space group' @@ -137,9 +144,11 @@ RSpec.describe 'Group' do end describe 'create a nested group', :js do - let(:group) { create(:group, path: 'foo') } + let_it_be(:group) { create(:group, path: 'foo') } context 'as admin' do + let(:user) { create(:admin) } + before do visit new_group_path(group, parent_id: group.id) end @@ -185,11 +194,13 @@ RSpec.describe 'Group' do end describe 'group edit', :js do - let(:group) { create(:group, :public) } - let(:path) { edit_group_path(group) } + let_it_be(:group) { create(:group, :public) } + let(:path) { edit_group_path(group) } let(:new_name) { 'new-name' } before do + group.add_owner(user) + visit path end @@ -200,6 +211,8 @@ RSpec.describe 'Group' do it 'saves new settings' do page.within('.gs-general') do + # Have to reset it to '' so it overwrites rather than appends + fill_in('group_name', with: '') fill_in 'group_name', with: new_name click_button 'Save changes' end @@ -226,8 +239,12 @@ RSpec.describe 'Group' do end describe 'group page with markdown description' do - let(:group) { create(:group) } - let(:path) { group_path(group) } + let_it_be(:group) { create(:group) } + let(:path) { group_path(group) } + + before do + group.add_owner(user) + end it 'parses Markdown' do group.update_attribute(:description, 'This is **my** group') @@ -263,9 +280,13 @@ RSpec.describe 'Group' do end describe 'group page with nested groups', :js do - let!(:group) { create(:group) } - let!(:nested_group) { create(:group, parent: group) } - let!(:project) { create(:project, namespace: group) } + let_it_be(:group) { create(:group) } + let_it_be(:nested_group) { create(:group, parent: group) } + let_it_be(:project) { create(:project, namespace: group) } + + before do + group.add_owner(user) + end it 'renders projects and groups on the page' do visit group_path(group) @@ -292,7 +313,15 @@ RSpec.describe 'Group' do end describe 'new subgroup / project button' do - let(:group) { create(:group, project_creation_level: Gitlab::Access::NO_ONE_PROJECT_ACCESS, subgroup_creation_level: Gitlab::Access::OWNER_SUBGROUP_ACCESS) } + let_it_be(:group, reload: true) do + create(:group, + project_creation_level: Gitlab::Access::NO_ONE_PROJECT_ACCESS, + subgroup_creation_level: Gitlab::Access::OWNER_SUBGROUP_ACCESS) + end + + before do + group.add_owner(user) + end context 'when user has subgroup creation permissions but not project creation permissions' do it 'only displays "New subgroup" button' do @@ -325,6 +354,7 @@ RSpec.describe 'Group' do context 'when user has project and subgroup creation permissions' do it 'displays "New subgroup" and "New project" buttons' do group.update!(project_creation_level: Gitlab::Access::MAINTAINER_PROJECT_ACCESS) + visit group_path(group) page.within '[data-testid="group-buttons"]' do |