Welcome to mirror list, hosted at ThFree Co, Russian Federation.

top_nav_responsive_spec.rb « nav « features « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 9ac63c26ba016d3eb76663986714c163daf2909d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe 'top nav responsive', :js, feature_category: :navigation do
  include MobileHelpers
  include Spec::Support::Helpers::Features::InviteMembersModalHelper

  let_it_be(:user) { create(:user) }

  before do
    sign_in(user)

    resize_screen_xs
  end

  context 'when outside groups and projects' do
    before do
      visit explore_projects_path
    end

    context 'when menu is closed' do
      it 'has page content and hides responsive menu', :aggregate_failures do
        expect(page).to have_css('.page-title', text: 'Explore projects')
        expect(page).to have_link('Dashboard', id: 'logo')

        expect(page).to have_no_css('.top-nav-responsive')
      end
    end

    context 'when menu is opened' do
      before do
        click_button('Menu')
      end

      it 'hides everything and shows responsive menu', :aggregate_failures do
        expect(page).to have_no_css('.page-title', text: 'Explore projects')
        expect(page).to have_no_link('Dashboard', id: 'logo')

        within '.top-nav-responsive' do
          expect(page).to have_link(nil, href: search_path)
          expect(page).to have_button('Projects')
          expect(page).to have_button('Groups')
          expect(page).to have_link('Your work', href: dashboard_projects_path)
          expect(page).to have_link('Explore', href: explore_projects_path)
        end
      end

      it 'has new dropdown', :aggregate_failures do
        create_new_button.click

        expect(page).to have_link('New project', href: new_project_path)
        expect(page).to have_link('New group', href: new_group_path)
        expect(page).to have_link('New snippet', href: new_snippet_path)
      end
    end
  end

  context 'when inside a project' do
    let_it_be(:project) { create(:project).tap { |record| record.add_owner(user) } }

    before do
      visit project_path(project)
    end

    it 'the add menu contains invite members dropdown option and opens invite modal' do
      invite_members_from_menu

      page.within invite_modal_selector do
        expect(page).to have_content("You're inviting members to the #{project.name} project")
      end
    end
  end

  context 'when inside a group' do
    let_it_be(:group) { create(:group).tap { |record| record.add_owner(user) } }

    before do
      visit group_path(group)
    end

    it 'the add menu contains invite members dropdown option and opens invite modal' do
      invite_members_from_menu

      page.within invite_modal_selector do
        expect(page).to have_content("You're inviting members to the #{group.name} group")
      end
    end
  end

  def invite_members_from_menu
    click_button('Menu')
    create_new_button.click

    click_button('Invite members')
  end

  def create_new_button
    find('[data-testid="plus-icon"]')
  end
end