debian-mirror-gitlab/spec/features/search/user_searches_for_code_spec.rb

123 lines
3.6 KiB
Ruby
Raw Normal View History

2019-10-12 21:52:04 +05:30
# frozen_string_literal: true
2018-03-17 18:26:18 +05:30
require 'spec_helper'
describe 'User searches for code' do
let(:user) { create(:user) }
let(:project) { create(:project, :repository, namespace: user.namespace) }
2019-10-12 21:52:04 +05:30
def submit_search(search, with_send_keys: false)
page.within('.search') do
field = find_field('search')
field.fill_in(with: search)
if with_send_keys
field.send_keys(:enter)
else
click_button("Go")
end
end
click_link('Code')
end
2018-03-17 18:26:18 +05:30
context 'when signed in' do
before do
2018-11-18 11:00:15 +05:30
project.add_maintainer(user)
2018-03-17 18:26:18 +05:30
sign_in(user)
end
it 'finds a file' do
visit(project_path(project))
2019-10-12 21:52:04 +05:30
submit_search('application.js')
2018-03-17 18:26:18 +05:30
expect(page).to have_selector('.file-content .code')
expect(page).to have_selector("span.line[lang='javascript']")
end
context 'when on a project page', :js do
before do
visit(search_path)
end
include_examples 'top right search form'
it 'finds code' do
find('.js-search-project-dropdown').click
page.within('.project-filter') do
2018-03-27 19:54:05 +05:30
click_link(project.full_name)
2018-03-17 18:26:18 +05:30
end
fill_in('dashboard_search', with: 'rspec')
find('.btn-search').click
page.within('.results') do
expect(find(:css, '.search-results')).to have_content('Update capybara, rspec-rails, poltergeist to recent versions')
end
end
end
2019-10-12 21:52:04 +05:30
context 'search code within refs', :js do
let(:ref_name) { 'v1.0.0' }
before do
visit(project_tree_path(project, ref_name))
submit_search('gitlab-grack', with_send_keys: true)
end
it 'shows ref switcher in code result summary' do
expect(find('.js-project-refs-dropdown')).to have_text(ref_name)
end
it 'persists branch name across search' do
find('.btn-search').click
expect(find('.js-project-refs-dropdown')).to have_text(ref_name)
end
# this example is use to test the desgine that the refs is not
# only repersent the branch as well as the tags.
it 'ref swither list all the branchs and tags' do
find('.js-project-refs-dropdown').click
expect(find('.dropdown-page-one .dropdown-content')).to have_link('sha-starting-with-large-number')
expect(find('.dropdown-page-one .dropdown-content')).to have_link('v1.0.0')
end
it 'search result changes when refs switched' do
expect(find('.search-results')).not_to have_content('path = gitlab-grack')
find('.js-project-refs-dropdown').click
find('.dropdown-page-one .dropdown-content').click_link('master')
expect(find('.search-results')).to have_content('path = gitlab-grack')
end
end
it 'no ref switcher shown in issue result summary', :js do
issue = create(:issue, title: 'test', project: project)
visit(project_tree_path(project))
submit_search('test', with_send_keys: true)
expect(page).to have_selector('.js-project-refs-dropdown')
page.within('.search-filter') do
click_link('Issues')
end
expect(find(:css, '.search-results')).to have_link(issue.title)
expect(page).not_to have_selector('.js-project-refs-dropdown')
end
2018-03-17 18:26:18 +05:30
end
context 'when signed out' do
let(:project) { create(:project, :public, :repository) }
before do
visit(project_path(project))
end
it 'finds code' do
2019-10-12 21:52:04 +05:30
submit_search('rspec')
2018-03-17 18:26:18 +05:30
page.within('.results') do
expect(find(:css, '.search-results')).to have_content('Update capybara, rspec-rails, poltergeist to recent versions')
end
end
end
end