diff --git a/features/explore/new_menu.feature b/features/explore/new_menu.feature deleted file mode 100644 index b920a319b80fc08a72a7c3d81c98bbc1667f672e..0000000000000000000000000000000000000000 --- a/features/explore/new_menu.feature +++ /dev/null @@ -1,55 +0,0 @@ -@explore -Feature: New Menu -Background: - Given I sign in as "John Doe" - And "John Doe" is owner of group "Owned" - And I own project "Shop" - And I visit dashboard page - - @javascript - Scenario: I should see New Projects page - When I visit dashboard page - And I click "New project" in top right menu - Then I see "New Project" page - - @javascript - Scenario: I should see New Group page - When I visit dashboard page - And I click "New group" in top right menu - Then I see "New Group" page - - @javascript - Scenario: I should see New Snippet page - When I visit dashboard page - And I click "New snippet" in top right menu - Then I see "New Snippet" page - - @javascript - Scenario: I should see New Issue page - When I visit project "Shop" page - And I click "New issue" in top right menu - Then I see "New Issue" page - - @javascript - Scenario: I should see New Merge Request page - When I visit project "Shop" page - And I click "New merge request" in top right menu - Then I see "New Merge Request" page - - @javascript - Scenario: I should see New Project Snippet page - When I visit project "Shop" page - And I click "New project snippet" in top right menu - Then I see "New Snippet" page - - @javascript - Scenario: I should see New Group Project page - When I visit group "Owned" page - And I click "New group project" in top right menu - Then I see "New Project" page - - @javascript - Scenario: I should see New Subgroup page - When I visit group "Owned" page - And I click "New subgroup" in top right menu - Then I see "New Group" page diff --git a/features/steps/explore/new_menu.rb b/features/steps/explore/new_menu.rb deleted file mode 100644 index 17fd3a9a8ceebf0ffe43a2af432b9222911ad5e5..0000000000000000000000000000000000000000 --- a/features/steps/explore/new_menu.rb +++ /dev/null @@ -1,81 +0,0 @@ -class Spinach::Features::NewMenu < Spinach::FeatureSteps - include SharedAuthentication - include SharedPaths - include SharedProject - include SharedGroup - include SharedUser - - step 'I click "New project" in top right menu' do - click_topmenuitem("New project") - end - - step 'I click "New group" in top right menu' do - click_topmenuitem("New group") - end - - step 'I click "New snippet" in top right menu' do - click_topmenuitem("New snippet") - end - - step 'I click "New project snippet" in top right menu' do - page.within '.header-content' do - find('.header-new-dropdown-toggle').trigger('click') - expect(page).to have_selector('.header-new.dropdown.open', count: 1) - find('.header-new-project-snippet a').trigger('click') - end - end - - step 'I click "New issue" in top right menu' do - click_topmenuitem("New issue") - end - - step 'I click "New merge request" in top right menu' do - click_topmenuitem("New merge request") - end - - step 'I click "New subgroup" in top right menu' do - click_topmenuitem("New subgroup") - end - - step 'I click "New group project" in top right menu' do - page.within '.header-content' do - find('.header-new-dropdown-toggle').trigger('click') - expect(page).to have_selector('.header-new.dropdown.open', count: 1) - find('.header-new-group-project a').trigger('click') - end - end - - step 'I see "New Project" page' do - expect(page).to have_content('Project path') - expect(page).to have_content('Project name') - end - - step 'I see "New Group" page' do - expect(page).to have_content('Group path') - expect(page).to have_content('Group name') - end - - step 'I see "New Snippet" page' do - expect(page).to have_content('New Snippet') - expect(page).to have_content('Title') - end - - step 'I see "New Issue" page' do - expect(page).to have_content('New Issue') - expect(page).to have_content('Title') - end - - step 'I see "New Merge Request" page' do - expect(page).to have_content('New Merge Request') - expect(page).to have_content('Source branch') - expect(page).to have_content('Target branch') - end - - def click_topmenuitem(item_name) - page.within '.header-content' do - find('.header-new-dropdown-toggle').trigger('click') - expect(page).to have_selector('.header-new.dropdown.open', count: 1) - click_link item_name - end - end -end diff --git a/spec/features/explore/new_menu_spec.rb b/spec/features/explore/new_menu_spec.rb index eaf431f82b1687f4177b1f188fc9ccc9a3ad07c4..ae65f25d48b4d789c6634893ff09ab31148f5463 100644 --- a/spec/features/explore/new_menu_spec.rb +++ b/spec/features/explore/new_menu_spec.rb @@ -1,23 +1,22 @@ require 'spec_helper' feature 'Top Plus Menu', feature: true, js: true do - let!(:user) { create :user } - let!(:group) { create(:group) } - let!(:public_group) { create(:group, :public) } - let!(:private_group) { create(:group, :private) } - let!(:empty_project) { create(:empty_project, group: public_group) } + let(:user) { create :user } + let(:guest_user) { create :user} + let(:group) { create(:group) } + let(:public_group) { create(:group, :public) } + let(:project) { create(:project, :repository, creator: user, namespace: user.namespace) } before do group.add_owner(user) + group.add_guest(guest_user) - login_as(user) - - visit explore_groups_path + project.add_guest(guest_user) end context 'used by full user' do before do - login_as :user + login_as(user) end scenario 'click on New project shows new project page' do @@ -48,7 +47,7 @@ feature 'Top Plus Menu', feature: true, js: true do end scenario 'click on New issue shows new issue page' do - visit namespace_project_path(empty_project.namespace, empty_project) + visit namespace_project_path(project.namespace, project) click_topmenuitem("New issue") @@ -57,7 +56,7 @@ feature 'Top Plus Menu', feature: true, js: true do end scenario 'click on New merge request shows new merge request page' do - visit namespace_project_path(empty_project.namespace, empty_project) + visit namespace_project_path(project.namespace, project) click_topmenuitem("New merge request") @@ -67,7 +66,7 @@ feature 'Top Plus Menu', feature: true, js: true do end scenario 'click on New project snippet shows new snippet page' do - visit namespace_project_path(empty_project.namespace, empty_project) + visit namespace_project_path(project.namespace, project) page.within '.header-content' do find('.header-new-dropdown-toggle').trigger('click') @@ -102,6 +101,45 @@ feature 'Top Plus Menu', feature: true, js: true do end end + context 'used by guest user' do + before do + login_as(guest_user) + end + + scenario 'click on New issue shows new issue page' do + visit namespace_project_path(project.namespace, project) + + click_topmenuitem("New issue") + + expect(page).to have_content('New Issue') + expect(page).to have_content('Title') + end + + scenario 'has no New merge request menu item' do + visit namespace_project_path(project.namespace, project) + + hasnot_topmenuitem("New merge request") + end + + scenario 'has no New project snippet menu item' do + visit namespace_project_path(project.namespace, project) + + expect(find('.header-new.dropdown')).not_to have_selector('.header-new-project-snippet') + end + + scenario 'has no New subgroup menu item' do + visit group_path(group) + + hasnot_topmenuitem("New subgroup") + end + + scenario 'has no New project for group menu item' do + visit group_path(group) + + expect(find('.header-new.dropdown')).not_to have_selector('.header-new-group-project') + end + end + def click_topmenuitem(item_name) page.within '.header-content' do find('.header-new-dropdown-toggle').trigger('click') @@ -109,4 +147,9 @@ feature 'Top Plus Menu', feature: true, js: true do click_link item_name end end + + def hasnot_topmenuitem(item_name) + expect(find('.header-new.dropdown')).not_to have_content(item_name) + end + end end