summaryrefslogtreecommitdiff
path: root/spec/javascripts
diff options
context:
space:
mode:
authorFatih Acet <acetfatih@gmail.com>2016-06-07 17:54:29 +0300
committerFatih Acet <acetfatih@gmail.com>2016-06-07 17:54:29 +0300
commit50b3b8ce80b3573f53c22ac5ff34391b5bc469d8 (patch)
tree7e5d1f99ccbdaddc0f0464875d301a731950f960 /spec/javascripts
parent36f67b305f37cdf4eb9f75f12cfde3b0dfc01183 (diff)
downloadgitlab-ce-50b3b8ce80b3573f53c22ac5ff34391b5bc469d8.tar.gz
Added tests for categorised search autocomplete.
Diffstat (limited to 'spec/javascripts')
-rw-r--r--spec/javascripts/fixtures/search_autocomplete.html.haml10
-rw-r--r--spec/javascripts/notes_spec.js.coffee2
-rw-r--r--spec/javascripts/project_title_spec.js.coffee2
-rw-r--r--spec/javascripts/search_autocomplete_spec.js.coffee129
4 files changed, 141 insertions, 2 deletions
diff --git a/spec/javascripts/fixtures/search_autocomplete.html.haml b/spec/javascripts/fixtures/search_autocomplete.html.haml
new file mode 100644
index 00000000000..7785120da5b
--- /dev/null
+++ b/spec/javascripts/fixtures/search_autocomplete.html.haml
@@ -0,0 +1,10 @@
+.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
diff --git a/spec/javascripts/notes_spec.js.coffee b/spec/javascripts/notes_spec.js.coffee
index dd160e821b3..3a3c8d63e82 100644
--- a/spec/javascripts/notes_spec.js.coffee
+++ b/spec/javascripts/notes_spec.js.coffee
@@ -1,7 +1,7 @@
#= require notes
#= require gl_form
-window.gon = {}
+window.gon or= {}
window.disableButtonIfEmptyField = -> null
describe 'Notes', ->
diff --git a/spec/javascripts/project_title_spec.js.coffee b/spec/javascripts/project_title_spec.js.coffee
index 1cf34d4d2d3..9be29097f4c 100644
--- a/spec/javascripts/project_title_spec.js.coffee
+++ b/spec/javascripts/project_title_spec.js.coffee
@@ -6,7 +6,7 @@
#= require project_select
#= require project
-window.gon = {}
+window.gon or= {}
window.gon.api_version = 'v3'
describe 'Project Title', ->
diff --git a/spec/javascripts/search_autocomplete_spec.js.coffee b/spec/javascripts/search_autocomplete_spec.js.coffee
new file mode 100644
index 00000000000..5212f5d223a
--- /dev/null
+++ b/spec/javascripts/search_autocomplete_spec.js.coffee
@@ -0,0 +1,129 @@
+#= 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