new_menu_spec.rb 4.4 KB
Newer Older
T
Tim Zallmann 已提交
1 2
require 'spec_helper'

T
Tim Zallmann 已提交
3
feature 'Top Plus Menu', feature: true, js: true do
4 5 6 7 8
  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) }
T
Tim Zallmann 已提交
9 10 11

  before do
    group.add_owner(user)
12
    group.add_guest(guest_user)
T
Tim Zallmann 已提交
13

14
    project.add_guest(guest_user)
T
Tim Zallmann 已提交
15 16 17 18
  end

  context 'used by full user' do
    before do
19
      login_as(user)
T
Tim Zallmann 已提交
20 21
    end

T
Tim Zallmann 已提交
22
    scenario 'click on New project shows new project page' do
T
Tim Zallmann 已提交
23 24 25 26 27 28 29 30
      visit root_dashboard_path

      click_topmenuitem("New project")

      expect(page).to have_content('Project path')
      expect(page).to have_content('Project name')
    end

T
Tim Zallmann 已提交
31
    scenario 'click on New group shows new group page' do
T
Tim Zallmann 已提交
32 33 34 35 36 37 38 39
      visit root_dashboard_path

      click_topmenuitem("New group")

      expect(page).to have_content('Group path')
      expect(page).to have_content('Group name')
    end

T
Tim Zallmann 已提交
40
    scenario 'click on New snippet shows new snippet page' do
T
Tim Zallmann 已提交
41 42 43 44 45 46 47
      visit root_dashboard_path
      
      click_topmenuitem("New snippet")

      expect(page).to have_content('New Snippet')
      expect(page).to have_content('Title')
    end
T
Tim Zallmann 已提交
48 49

    scenario 'click on New issue shows new issue page' do
50
      visit namespace_project_path(project.namespace, project)
T
Tim Zallmann 已提交
51 52 53 54 55 56 57 58

      click_topmenuitem("New issue")

      expect(page).to have_content('New Issue')
      expect(page).to have_content('Title')
    end

    scenario 'click on New merge request shows new merge request page' do
59
      visit namespace_project_path(project.namespace, project)
T
Tim Zallmann 已提交
60 61 62 63 64 65 66 67 68

      click_topmenuitem("New merge request")

      expect(page).to have_content('New Merge Request')
      expect(page).to have_content('Source branch')
      expect(page).to have_content('Target branch')
    end

    scenario 'click on New project snippet shows new snippet page' do
69
      visit namespace_project_path(project.namespace, project)
T
Tim Zallmann 已提交
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

      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

      expect(page).to have_content('New Snippet')
      expect(page).to have_content('Title')
    end

    scenario 'Click on New subgroup shows new group page' do
      visit group_path(group)

      click_topmenuitem("New subgroup")

      expect(page).to have_content('Group path')
      expect(page).to have_content('Group name')
    end

    scenario 'Click on New project in group shows new project page' do
      visit group_path(group)

      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

      expect(page).to have_content('Project path')
      expect(page).to have_content('Project name')
    end
T
Tim Zallmann 已提交
102 103
  end

104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
  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

T
Tim Zallmann 已提交
143 144 145 146 147 148 149
  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
150 151 152 153 154

  def hasnot_topmenuitem(item_name)
      expect(find('.header-new.dropdown')).not_to have_content(item_name)
    end
  end
T
Tim Zallmann 已提交
155
end