BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
50b3b8ce
Commit
50b3b8ce
authored
Jun 07, 2016
by
Fatih Acet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added tests for categorised search autocomplete.
parent
36f67b30
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
221 additions
and
3 deletions
+221
-3
search_autocomplete.js.coffee
app/assets/javascripts/search_autocomplete.js.coffee
+1
-1
search_spec.rb
spec/features/search_spec.rb
+79
-0
search_autocomplete.html.haml
spec/javascripts/fixtures/search_autocomplete.html.haml
+10
-0
notes_spec.js.coffee
spec/javascripts/notes_spec.js.coffee
+1
-1
project_title_spec.js.coffee
spec/javascripts/project_title_spec.js.coffee
+1
-1
search_autocomplete_spec.js.coffee
spec/javascripts/search_autocomplete_spec.js.coffee
+129
-0
No files found.
app/assets/javascripts/search_autocomplete.js.coffee
View file @
50b3b8ce
...
...
@@ -134,7 +134,7 @@ class @SearchAutocomplete
userId
=
gon
.
current_user_id
projectName
=
'Dashboard'
projectSlug
=
gl
.
utils
.
getProjectSlug
()
projectOptions
=
gl
.
projectOptions
[
projectSlug
]
projectOptions
=
gl
.
projectOptions
?
[
projectSlug
]
if
projectSlug
and
projectOptions
{
issuesPath
,
mrPath
,
projectName
}
=
projectOptions
...
...
spec/features/search_spec.rb
View file @
50b3b8ce
...
...
@@ -47,4 +47,83 @@ describe "Search", feature: true do
expect
(
page
).
to
have_link
(
snippet
.
title
)
end
end
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
expect
(
page
).
to
have_selector
(
'.dropdown-header'
,
text:
/go to in
#{
project
.
name
}
/i
)
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
expect
(
page
).
not_to
have_selector
(
'.dropdown-header'
,
text:
/go to in
#{
project
.
name
}
/i
)
end
end
end
end
end
spec/javascripts/fixtures/search_autocomplete.html.haml
0 → 100644
View file @
50b3b8ce
.search.search-form.has-location-badge
%form
.navbar-form
.search-input-container
%div
.location-badge
This project
.search-input-wrap
.dropdown
%input
#search
.search-input.dropdown-menu-toggle
.dropdown-menu.dropdown-select
.dropdown-content
spec/javascripts/notes_spec.js.coffee
View file @
50b3b8ce
#= require notes
#= require gl_form
window
.
gon
=
{}
window
.
gon
or
=
{}
window
.
disableButtonIfEmptyField
=
->
null
describe
'Notes'
,
->
...
...
spec/javascripts/project_title_spec.js.coffee
View file @
50b3b8ce
...
...
@@ -6,7 +6,7 @@
#= require project_select
#= require project
window
.
gon
=
{}
window
.
gon
or
=
{}
window
.
gon
.
api_version
=
'v3'
describe
'Project Title'
,
->
...
...
spec/javascripts/search_autocomplete_spec.js.coffee
0 → 100644
View file @
50b3b8ce
#= require gl_dropdown
#= require search_autocomplete
#= require jquery
#= require lib/common_utils
#= require lib/type_utility
#= require fuzzaldrin-plus
widget
=
null
userId
=
1
window
.
gon
or=
{}
window
.
gon
.
current_user_id
=
userId
dashboardIssuesPath
=
'/dashboard/issues'
dashboardMRsPath
=
'/dashboard/merge_requests'
projectIssuesPath
=
"/gitlab-org/gitlab-ce/issues"
projectMRsPath
=
"/gitlab-org/gitlab-ce/merge_requests"
projectName
=
'GitLab Community Edition'
# Add required attributes to body before starting the test.
addBodyAttributes
=
(
page
=
'groups'
)
->
$
(
'body'
).
removeAttr
'data-page'
$
(
'body'
).
removeAttr
'data-project'
$
(
'body'
).
data
'page'
,
"
#{
page
}
:show"
$
(
'body'
).
data
'project'
,
'gitlab-ce'
# Mock `gl` object in window for dashboard specific page. App code will need it.
mockDashboardOptions
=
->
window
.
gl
or=
{}
window
.
gl
.
dashboardOptions
=
issuesPath
:
dashboardIssuesPath
mrPath
:
dashboardMRsPath
# Mock `gl` object in window for project specific page. App code will need it.
mockProjectOptions
=
->
window
.
gl
or=
{}
window
.
gl
.
projectOptions
=
'gitlab-ce'
:
issuesPath
:
projectIssuesPath
mrPath
:
projectMRsPath
projectName
:
projectName
assertLinks
=
(
list
,
a1
,
a2
,
a3
,
a4
)
->
expect
(
list
.
find
(
a1
).
length
).
toBe
1
expect
(
list
.
find
(
a1
).
text
()).
toBe
' Issues assigned to me '
expect
(
list
.
find
(
a2
).
length
).
toBe
1
expect
(
list
.
find
(
a2
).
text
()).
toBe
" Issues I've created "
expect
(
list
.
find
(
a3
).
length
).
toBe
1
expect
(
list
.
find
(
a3
).
text
()).
toBe
' Merge requests assigned to me '
expect
(
list
.
find
(
a4
).
length
).
toBe
1
expect
(
list
.
find
(
a4
).
text
()).
toBe
" Merge requests I've created "
describe
'Search autocomplete dropdown'
,
->
fixture
.
preload
'search_autocomplete.html'
beforeEach
->
fixture
.
load
'search_autocomplete.html'
widget
=
new
SearchAutocomplete
it
'should show Dashboard specific dropdown menu'
,
->
addBodyAttributes
()
mockDashboardOptions
()
# Focus input to show dropdown list.
widget
.
searchInput
.
focus
()
w
=
widget
.
wrap
.
find
'.dropdown-menu'
l
=
w
.
find
'ul'
# # Expect dropdown and dropdown header
expect
(
w
.
find
(
'.dropdown-header'
).
text
()).
toBe
'Go to in Dashboard'
# Create links then assert link urls and inner texts
issuesAssignedToMeLink
=
"
#{
dashboardIssuesPath
}
/?assignee_id=
#{
userId
}
"
issuesIHaveCreatedLink
=
"
#{
dashboardIssuesPath
}
/?author_id=
#{
userId
}
"
mrsAssignedToMeLink
=
"
#{
dashboardMRsPath
}
/?assignee_id=
#{
userId
}
"
mrsIHaveCreatedLink
=
"
#{
dashboardMRsPath
}
/?author_id=
#{
userId
}
"
a1
=
"a[href='
#{
issuesAssignedToMeLink
}
']"
a2
=
"a[href='
#{
issuesIHaveCreatedLink
}
']"
a3
=
"a[href='
#{
mrsAssignedToMeLink
}
']"
a4
=
"a[href='
#{
mrsIHaveCreatedLink
}
']"
assertLinks
l
,
a1
,
a2
,
a3
,
a4
it
'should show Project specific dropdown menu'
,
->
addBodyAttributes
'projects'
mockProjectOptions
()
# Focus input to show dropdown list.
widget
.
searchInput
.
focus
()
w
=
widget
.
wrap
.
find
'.dropdown-menu'
l
=
w
.
find
'ul'
# Expect dropdown and dropdown header
expect
(
w
.
find
(
'.dropdown-header'
).
text
()).
toBe
"Go to in
#{
projectName
}
"
# Create links then verify link urls and inner texts
issuesAssignedToMeLink
=
"
#{
projectIssuesPath
}
/?assignee_id=
#{
userId
}
"
issuesIHaveCreatedLink
=
"
#{
projectIssuesPath
}
/?author_id=
#{
userId
}
"
mrsAssignedToMeLink
=
"
#{
projectMRsPath
}
/?assignee_id=
#{
userId
}
"
mrsIHaveCreatedLink
=
"
#{
projectMRsPath
}
/?author_id=
#{
userId
}
"
a1
=
"a[href='
#{
issuesAssignedToMeLink
}
']"
a2
=
"a[href='
#{
issuesIHaveCreatedLink
}
']"
a3
=
"a[href='
#{
mrsAssignedToMeLink
}
']"
a4
=
"a[href='
#{
mrsIHaveCreatedLink
}
']"
assertLinks
l
,
a1
,
a2
,
a3
,
a4
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment