search_spec.rb 3.9 KB
Newer Older
R
randx 已提交
1 2
require 'spec_helper'

3
describe "Search", feature: true  do
4 5 6
  let(:user) { create(:user) }
  let(:project) { create(:project, namespace: user.namespace) }

R
randx 已提交
7
  before do
8 9
    login_with(user)
    project.team << [user, :reporter]
R
randx 已提交
10
    visit search_path
11
  end
12 13 14 15

  it 'top right search form is not present' do
    expect(page).not_to have_selector('.search')
  end
16

17 18 19 20 21 22 23 24
  describe 'searching for Projects' do
    it 'finds a project' do
      page.within '.search-holder' do
        fill_in "search", with: project.name[0..3]
        click_button "Search"
      end

      expect(page).to have_content project.name
25
    end
R
randx 已提交
26 27
  end

28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
  context 'search for comments' do
    it 'finds a snippet' do
      snippet = create(:project_snippet, :private, project: project, author: user, title: 'Some title')
      note = create(:note,
                    noteable: snippet,
                    author: user,
                    note: 'Supercalifragilisticexpialidocious',
                    project: project)
      # Must visit project dashboard since global search won't search
      # everything (e.g. comments, snippets, etc.)
      visit namespace_project_path(project.namespace, project)

      page.within '.search' do
        fill_in 'search', with: note.note
        click_button 'Go'
      end

      click_link 'Comments'

      expect(page).to have_link(snippet.title)
    end
R
randx 已提交
49
  end
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

  describe 'Right header search field', feature: true do
    describe 'Search in project page' do
      before do
        visit namespace_project_path(project.namespace, project)
      end

      it 'top right search form is present' do
        expect(page).to have_selector('#search')
      end

      it 'top right search form contains location badge' do
        expect(page).to have_selector('.has-location-badge')
      end

      context 'clicking the search field', js: true do
        it 'should show category search dropdown' do
          page.find('#search').click

F
Fatih Acet 已提交
69
          expect(page).to have_selector('.dropdown-header', text: /#{project.name}/i)
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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
        end
      end

      context 'click the links in the category search dropdown', js: true do
        before do
          page.find('#search').click
        end

        it 'should take user to her issues page when issues assigned is clicked' do
          find('.dropdown-menu').click_link 'Issues assigned to me'
          sleep 2

          expect(page).to have_selector('.issues-holder')
          expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
        end

        it 'should take user to her issues page when issues authored is clicked' do
          find('.dropdown-menu').click_link "Issues I've created"
          sleep 2

          expect(page).to have_selector('.issues-holder')
          expect(find('.js-author-search .dropdown-toggle-text')).to have_content(user.name)
        end

        it 'should take user to her MR page when MR assigned is clicked' do
          find('.dropdown-menu').click_link 'Merge requests assigned to me'
          sleep 2

          expect(page).to have_selector('.merge-requests-holder')
          expect(find('.js-assignee-search .dropdown-toggle-text')).to have_content(user.name)
        end

        it 'should take user to her MR page when MR authored is clicked' do
          find('.dropdown-menu').click_link "Merge requests I've created"
          sleep 2

          expect(page).to have_selector('.merge-requests-holder')
          expect(find('.js-author-search .dropdown-toggle-text')).to have_content(user.name)
        end
      end

      context 'entering text into the search field', js: true do
        before do
          page.within '.search-input-wrap' do
            fill_in "search", with: project.name[0..3]
          end
        end

        it 'should not display the category search dropdown' do
F
Fatih Acet 已提交
119
          expect(page).not_to have_selector('.dropdown-header', text: /#{project.name}/i)
120 121 122 123
        end
      end
    end
  end
R
randx 已提交
124
end