diff options
Diffstat (limited to 'spec/features/nav/top_nav_responsive_spec.rb')
-rw-r--r-- | spec/features/nav/top_nav_responsive_spec.rb | 88 |
1 files changed, 66 insertions, 22 deletions
diff --git a/spec/features/nav/top_nav_responsive_spec.rb b/spec/features/nav/top_nav_responsive_spec.rb index d038c5d9e32..56f9d373f00 100644 --- a/spec/features/nav/top_nav_responsive_spec.rb +++ b/spec/features/nav/top_nav_responsive_spec.rb @@ -9,43 +9,87 @@ RSpec.describe 'top nav responsive', :js, feature_category: :navigation do before do sign_in(user) - visit explore_projects_path resize_screen_xs end - context 'before opened' do - it 'has page content and hides responsive menu', :aggregate_failures do - expect(page).to have_css('.page-title', text: 'Projects') - expect(page).to have_link('Dashboard', id: 'logo') + context 'when outside groups and projects' do + before do + visit explore_projects_path + end - expect(page).to have_no_css('.top-nav-responsive') + 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: '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: '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('Snippets', href: dashboard_snippets_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 opened' do + context 'when inside a project' do + let_it_be(:project) { create(:project).tap { |record| record.add_owner(user) } } + before do - click_button('Menu') + visit project_path(project) end - it 'hides everything and shows responsive menu', :aggregate_failures do - expect(page).to have_no_css('.page-title', text: 'Projects') - expect(page).to have_no_link('Dashboard', id: 'logo') + it 'the add menu contains invite members dropdown option and goes to the members page' do + invite_members_from_menu - 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('Snippets', href: dashboard_snippets_path) - end + expect(page).to have_current_path(project_project_members_path(project)) + 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 'has new dropdown', :aggregate_failures do - click_button('Create new...') + it 'the add menu contains invite members dropdown option and goes to the members page' do + invite_members_from_menu - 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) + expect(page).to have_current_path(group_group_members_path(group)) end end + + def invite_members_from_menu + click_button('Menu') + create_new_button.click + + click_link('Invite members') + end + + def create_new_button + find('[data-testid="plus-icon"]') + end end |