diff options
Diffstat (limited to 'spec/features/dashboard/groups_list_spec.rb')
-rw-r--r-- | spec/features/dashboard/groups_list_spec.rb | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/spec/features/dashboard/groups_list_spec.rb b/spec/features/dashboard/groups_list_spec.rb index 8c941b27cd2..3a4296836bd 100644 --- a/spec/features/dashboard/groups_list_spec.rb +++ b/spec/features/dashboard/groups_list_spec.rb @@ -15,6 +15,10 @@ RSpec.describe 'Dashboard Groups page', :js do wait_for_requests end + def click_options_menu(group) + page.find("[data-testid='group-#{group.id}-dropdown-button'").click + end + it 'shows groups user is member of' do group.add_owner(user) nested_group.add_owner(user) @@ -112,6 +116,67 @@ RSpec.describe 'Dashboard Groups page', :js do end end + context 'group actions dropdown' do + let!(:subgroup) { create(:group, :public, parent: group) } + + context 'user with subgroup ownership' do + before do + subgroup.add_owner(user) + sign_in(user) + + visit dashboard_groups_path + end + + it 'cannot remove parent group' do + expect(page).not_to have_selector("[data-testid='group-#{group.id}-dropdown-button'") + end + end + + context 'user with parent group ownership' do + before do + group.add_owner(user) + sign_in(user) + + visit dashboard_groups_path + end + + it 'can remove parent group' do + click_options_menu(group) + + expect(page).to have_selector("[data-testid='remove-group-#{group.id}-btn']") + end + + it 'can remove subgroups' do + click_group_caret(group) + click_options_menu(subgroup) + + expect(page).to have_selector("[data-testid='remove-group-#{subgroup.id}-btn']") + end + end + + context 'user is a maintainer' do + before do + group.add_maintainer(user) + sign_in(user) + + visit dashboard_groups_path + click_options_menu(group) + end + + it 'cannot remove the group' do + expect(page).not_to have_selector("[data-testid='remove-group-#{group.id}-btn']") + end + + it 'cannot edit the group' do + expect(page).not_to have_selector("[data-testid='edit-group-#{group.id}-btn']") + end + + it 'can leave the group' do + expect(page).to have_selector("[data-testid='leave-group-#{group.id}-btn']") + end + end + end + context 'when using pagination' do let(:group) { create(:group, created_at: 5.days.ago) } let(:group2) { create(:group, created_at: 2.days.ago) } |