Commit d90e226d authored by Francisco Javier López's avatar Francisco Javier López Committed by Bob Van Landuyt

Fix subgroup url in search drop down

Inside a subgroup scope, when the user clicks on the
search drop down in the header, some options are displayed.

Some of this links direct the user to the issues and merge
requests linked to the subgroup. Nevertheless, the url
was broken because they doesn't include the complete
group namespace
parent b286ac37
- if @group && @group.persisted? && @group.path
- group_data_attrs = { group_path: j(@group.path), name: @group.name, issues_path: issues_group_path(j(@group.path)), mr_path: merge_requests_group_path(j(@group.path)) }
- group_data_attrs = { group_path: j(@group.path), name: j(@group.name), issues_path: issues_group_path(@group), mr_path: merge_requests_group_path(@group) }
- if @project && @project.persisted?
- project_data_attrs = { project_path: j(@project.path), name: j(@project.name), issues_path: project_issues_path(@project), mr_path: project_merge_requests_path(@project), issues_disabled: !@project.issues_enabled? }
.search.search-form{ data: { track_label: "navbar_search", track_event: "activate_form_input" } }
......
---
title: Fix subgroup url in search drop down
merge_request: 30457
author:
type: fixed
require 'spec_helper'
describe 'User uses header search field' do
describe 'User uses header search field', :js do
include FilteredSearchHelpers
let(:project) { create(:project) }
......@@ -11,17 +11,37 @@ describe 'User uses header search field' do
sign_in(user)
end
context 'when user is in a global scope', :js do
shared_examples 'search field examples' do
before do
visit(url)
end
it 'starts searching by pressing the enter key' do
fill_in('search', with: 'gitlab')
find('#search').native.send_keys(:enter)
page.within('.breadcrumbs-sub-title') do
expect(page).to have_content('Search')
end
end
context 'when clicking the search field' do
before do
visit(root_path)
page.find('#search').click
wait_for_all_requests
end
it 'shows category search dropdown' do
expect(page).to have_selector('.dropdown-header', text: /#{scope_name}/i)
end
context 'when clicking issues' do
let!(:issue) { create(:issue, project: project, author: user, assignees: [user]) }
it 'shows assigned issues' do
find('.search-input-container .dropdown-menu').click_link('Issues assigned to me')
expect(page).to have_selector('.filtered-search')
expect(page).to have_selector('.issues-list .issue')
expect_tokens([assignee_token(user.name)])
expect_filtered_search_input_empty
end
......@@ -29,7 +49,7 @@ describe 'User uses header search field' do
it 'shows created issues' do
find('.search-input-container .dropdown-menu').click_link("Issues I've created")
expect(page).to have_selector('.filtered-search')
expect(page).to have_selector('.issues-list .issue')
expect_tokens([author_token(user.name)])
expect_filtered_search_input_empty
end
......@@ -41,7 +61,7 @@ describe 'User uses header search field' do
it 'shows assigned merge requests' do
find('.search-input-container .dropdown-menu').click_link('Merge requests assigned to me')
expect(page).to have_selector('.filtered-search')
expect(page).to have_selector('.mr-list .merge-request')
expect_tokens([assignee_token(user.name)])
expect_filtered_search_input_empty
end
......@@ -49,87 +69,67 @@ describe 'User uses header search field' do
it 'shows created merge requests' do
find('.search-input-container .dropdown-menu').click_link("Merge requests I've created")
expect(page).to have_selector('.filtered-search')
expect(page).to have_selector('.mr-list .merge-request')
expect_tokens([author_token(user.name)])
expect_filtered_search_input_empty
end
end
end
context 'when user is in a project scope' do
context 'when entering text into the search field' do
before do
visit(project_path(project))
page.within('.search-input-wrap') do
fill_in('search', with: scope_name.first(4))
end
end
it 'starts searching by pressing the enter key', :js do
fill_in('search', with: 'gitlab')
find('#search').native.send_keys(:enter)
page.within('.breadcrumbs-sub-title') do
expect(page).to have_content('Search')
it 'does not display the category search dropdown' do
expect(page).not_to have_selector('.dropdown-header', text: /#{scope_name}/i)
end
end
context 'when clicking the search field', :js do
before do
page.find('#search').click
end
it 'shows category search dropdown' do
expect(page).to have_selector('.dropdown-header', text: /#{project.name}/i)
context 'when user is in a global scope' do
include_examples 'search field examples' do
let(:url) { root_path }
let(:scope_name) { 'All GitLab' }
end
context 'when clicking issues' do
let!(:issue) { create(:issue, project: project, author: user, assignees: [user]) }
it 'shows assigned issues' do
find('.dropdown-menu').click_link('Issues assigned to me')
expect(page).to have_selector('.filtered-search')
expect_tokens([assignee_token(user.name)])
expect_filtered_search_input_empty
end
it 'shows created issues' do
find('.dropdown-menu').click_link("Issues I've created")
expect(page).to have_selector('.filtered-search')
expect_tokens([author_token(user.name)])
expect_filtered_search_input_empty
context 'when user is in a project scope' do
include_examples 'search field examples' do
let(:url) { project_path(project) }
let(:scope_name) { project.name }
end
end
context 'when clicking merge requests' do
let!(:merge_request) { create(:merge_request, source_project: project, author: user, assignees: [user]) }
context 'when user is in a group scope' do
let(:group) { create(:group) }
let(:project) { create(:project, namespace: group) }
it 'shows assigned merge requests' do
find('.dropdown-menu').click_link('Merge requests assigned to me')
expect(page).to have_selector('.merge-requests-holder')
expect_tokens([assignee_token(user.name)])
expect_filtered_search_input_empty
before do
group.add_maintainer(user)
end
it 'shows created merge requests' do
find('.dropdown-menu').click_link("Merge requests I've created")
expect(page).to have_selector('.merge-requests-holder')
expect_tokens([author_token(user.name)])
expect_filtered_search_input_empty
end
include_examples 'search field examples' do
let(:url) { group_path(group) }
let(:scope_name) { group.name }
end
end
context 'when entering text into the search field', :js do
context 'when user is in a subgroup scope' do
let(:group) { create(:group) }
let(:subgroup) { create(:group, :public, parent: group) }
let(:project) { create(:project, namespace: subgroup) }
before do
page.within('.search-input-wrap') do
fill_in('search', with: project.name[0..3])
end
group.add_owner(user)
subgroup.add_owner(user)
end
it 'does not display the category search dropdown' do
expect(page).not_to have_selector('.dropdown-header', text: /#{project.name}/i)
end
include_examples 'search field examples' do
let(:url) { group_path(subgroup) }
let(:scope_name) { subgroup.name }
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment