diff options
Diffstat (limited to 'spec/features/search/user_uses_header_search_field_spec.rb')
-rw-r--r-- | spec/features/search/user_uses_header_search_field_spec.rb | 76 |
1 files changed, 73 insertions, 3 deletions
diff --git a/spec/features/search/user_uses_header_search_field_spec.rb b/spec/features/search/user_uses_header_search_field_spec.rb index 5567dcb30ec..37e83d1e888 100644 --- a/spec/features/search/user_uses_header_search_field_spec.rb +++ b/spec/features/search/user_uses_header_search_field_spec.rb @@ -104,6 +104,14 @@ RSpec.describe 'User uses header search field', :js do let(:scope_name) { 'All GitLab' } end + it 'displays search options' do + page.within('.search-input-wrap') do + fill_in('search', with: 'test') + end + + expect(page).to have_selector(scoped_search_link('test')) + end + context 'when searching through the search field' do before do create(:issue, project: project, title: 'project issue') @@ -122,9 +130,41 @@ RSpec.describe 'User uses header search field', :js do end 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 } + context 'and it belongs to a group' do + let(:group) { create(:group) } + let(:project) { create(:project, namespace: group) } + + include_examples 'search field examples' do + let(:url) { project_path(project) } + let(:scope_name) { project.name } + end + + it 'displays search options' do + page.within('.search-input-wrap') do + fill_in('search', with: 'test') + end + + expect(page).to have_selector(scoped_search_link('test')) + expect(page).to have_selector(scoped_search_link('test', group_id: group.id)) + expect(page).to have_selector(scoped_search_link('test', project_id: project.id, group_id: group.id)) + end + end + + context 'and it belongs to a user' do + include_examples 'search field examples' do + let(:url) { project_path(project) } + let(:scope_name) { project.name } + end + + it 'displays search options' do + page.within('.search-input-wrap') do + fill_in('search', with: 'test') + end + + expect(page).to have_selector(scoped_search_link('test')) + expect(page).not_to have_selector(scoped_search_link('test', group_id: project.namespace_id)) + expect(page).to have_selector(scoped_search_link('test', project_id: project.id)) + end end end @@ -140,6 +180,16 @@ RSpec.describe 'User uses header search field', :js do let(:url) { group_path(group) } let(:scope_name) { group.name } end + + it 'displays search options' do + page.within('.search-input-wrap') do + fill_in('search', with: 'test') + end + + expect(page).to have_selector(scoped_search_link('test')) + expect(page).to have_selector(scoped_search_link('test', group_id: group.id)) + expect(page).not_to have_selector(scoped_search_link('test', project_id: project.id)) + end end context 'when user is in a subgroup scope' do @@ -156,5 +206,25 @@ RSpec.describe 'User uses header search field', :js do let(:url) { group_path(subgroup) } let(:scope_name) { subgroup.name } end + + it 'displays search options' do + page.within('.search-input-wrap') do + fill_in('search', with: 'test') + end + + expect(page).to have_selector(scoped_search_link('test')) + expect(page).to have_selector(scoped_search_link('test', group_id: subgroup.id)) + expect(page).not_to have_selector(scoped_search_link('test', project_id: project.id)) + end + end + + def scoped_search_link(term, project_id: nil, group_id: nil) + # search_path will accept group_id and project_id but the order does not match + # what is expected in the href, so the variable must be built manually + href = search_path(search: term) + href.concat("&project_id=#{project_id}") if project_id + href.concat("&group_id=#{group_id}") if group_id + + ".dropdown a[href='#{href}']" end end |