Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
d10416e2
Commit
d10416e2
authored
Mar 27, 2018
by
Jan Provaznik
Committed by
Winnie Hellmann
Apr 03, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed dashboard filtering tests
parent
a32941ae
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
137 additions
and
101 deletions
+137
-101
app/controllers/dashboard_controller.rb
app/controllers/dashboard_controller.rb
+8
-3
changelogs/unreleased/43246-checkfilter.yml
changelogs/unreleased/43246-checkfilter.yml
+6
-0
spec/features/atom/dashboard_issues_spec.rb
spec/features/atom/dashboard_issues_spec.rb
+13
-4
spec/features/dashboard/issues_filter_spec.rb
spec/features/dashboard/issues_filter_spec.rb
+16
-16
spec/features/dashboard/merge_requests_spec.rb
spec/features/dashboard/merge_requests_spec.rb
+2
-6
spec/features/search/user_uses_header_search_field_spec.rb
spec/features/search/user_uses_header_search_field_spec.rb
+84
-43
spec/helpers/issuables_helper_spec.rb
spec/helpers/issuables_helper_spec.rb
+4
-25
spec/javascripts/search_autocomplete_spec.js
spec/javascripts/search_autocomplete_spec.js
+4
-4
No files found.
app/controllers/dashboard_controller.rb
View file @
d10416e2
...
@@ -12,7 +12,7 @@ class DashboardController < Dashboard::ApplicationController
...
@@ -12,7 +12,7 @@ class DashboardController < Dashboard::ApplicationController
before_action
:event_filter
,
only: :activity
before_action
:event_filter
,
only: :activity
before_action
:projects
,
only:
[
:issues
,
:merge_requests
]
before_action
:projects
,
only:
[
:issues
,
:merge_requests
]
before_action
:set_show_full_reference
,
only:
[
:issues
,
:merge_requests
]
before_action
:set_show_full_reference
,
only:
[
:issues
,
:merge_requests
]
before_action
:check_filters_presence
,
only:
[
:issues
,
:merge_requests
]
before_action
:check_filters_presence
!
,
only:
[
:issues
,
:merge_requests
]
respond_to
:html
respond_to
:html
...
@@ -48,9 +48,14 @@ class DashboardController < Dashboard::ApplicationController
...
@@ -48,9 +48,14 @@ class DashboardController < Dashboard::ApplicationController
@show_full_reference
=
true
@show_full_reference
=
true
end
end
def
check_filters_presence
def
check_filters_presence
!
@no_filters_set
=
FILTER_PARAMS
.
none?
{
|
k
|
params
.
key?
(
k
)
}
@no_filters_set
=
FILTER_PARAMS
.
none?
{
|
k
|
params
.
key?
(
k
)
}
render
action:
action_name
if
@no_filters_set
return
unless
@no_filters_set
respond_to
do
|
format
|
format
.
html
format
.
atom
{
head
:bad_request
}
end
end
end
end
end
changelogs/unreleased/43246-checkfilter.yml
0 → 100644
View file @
d10416e2
---
title
:
Require at least one filter when listing issues or merge requests on dashboard
page
merge_request
:
author
:
type
:
performance
spec/features/atom/dashboard_issues_spec.rb
View file @
d10416e2
...
@@ -13,17 +13,26 @@ describe "Dashboard Issues Feed" do
...
@@ -13,17 +13,26 @@ describe "Dashboard Issues Feed" do
end
end
describe
"atom feed"
do
describe
"atom feed"
do
it
"re
nders atom feed via personal access token
"
do
it
"re
turns 400 if no filter is used
"
do
personal_access_token
=
create
(
:personal_access_token
,
user:
user
)
personal_access_token
=
create
(
:personal_access_token
,
user:
user
)
visit
issues_dashboard_path
(
:atom
,
private_token:
personal_access_token
.
token
)
visit
issues_dashboard_path
(
:atom
,
private_token:
personal_access_token
.
token
)
expect
(
response_headers
[
'Content-Type'
]).
to
have_content
(
'application/atom+xml'
)
expect
(
page
.
status_code
).
to
eq
(
400
)
end
it
"renders atom feed via personal access token"
do
personal_access_token
=
create
(
:personal_access_token
,
user:
user
)
visit
issues_dashboard_path
(
:atom
,
private_token:
personal_access_token
.
token
,
assignee_id:
user
.
id
)
expect
(
response_headers
[
'Content-Type'
]).
to
have_content
(
'application/atom+xml'
)
expect
(
response_headers
[
'Content-Type'
]).
to
have_content
(
'application/atom+xml'
)
expect
(
body
).
to
have_selector
(
'title'
,
text:
"
#{
user
.
name
}
issues"
)
expect
(
body
).
to
have_selector
(
'title'
,
text:
"
#{
user
.
name
}
issues"
)
end
end
it
"renders atom feed via RSS token"
do
it
"renders atom feed via RSS token"
do
visit
issues_dashboard_path
(
:atom
,
rss_token:
user
.
rss_token
)
visit
issues_dashboard_path
(
:atom
,
rss_token:
user
.
rss_token
,
assignee_id:
user
.
id
)
expect
(
response_headers
[
'Content-Type'
]).
to
have_content
(
'application/atom+xml'
)
expect
(
response_headers
[
'Content-Type'
]).
to
have_content
(
'application/atom+xml'
)
expect
(
body
).
to
have_selector
(
'title'
,
text:
"
#{
user
.
name
}
issues"
)
expect
(
body
).
to
have_selector
(
'title'
,
text:
"
#{
user
.
name
}
issues"
)
...
@@ -44,7 +53,7 @@ describe "Dashboard Issues Feed" do
...
@@ -44,7 +53,7 @@ describe "Dashboard Issues Feed" do
let!
(
:issue2
)
{
create
(
:issue
,
author:
user
,
assignees:
[
assignee
],
project:
project2
,
description:
'test desc'
)
}
let!
(
:issue2
)
{
create
(
:issue
,
author:
user
,
assignees:
[
assignee
],
project:
project2
,
description:
'test desc'
)
}
it
"renders issue fields"
do
it
"renders issue fields"
do
visit
issues_dashboard_path
(
:atom
,
rss_token:
user
.
rss_token
)
visit
issues_dashboard_path
(
:atom
,
rss_token:
user
.
rss_token
,
assignee_id:
assignee
.
id
)
entry
=
find
(
:xpath
,
"//feed/entry[contains(summary/text(),'
#{
issue2
.
title
}
')]"
)
entry
=
find
(
:xpath
,
"//feed/entry[contains(summary/text(),'
#{
issue2
.
title
}
')]"
)
...
@@ -67,7 +76,7 @@ describe "Dashboard Issues Feed" do
...
@@ -67,7 +76,7 @@ describe "Dashboard Issues Feed" do
end
end
it
"renders issue label and milestone info"
do
it
"renders issue label and milestone info"
do
visit
issues_dashboard_path
(
:atom
,
rss_token:
user
.
rss_token
)
visit
issues_dashboard_path
(
:atom
,
rss_token:
user
.
rss_token
,
assignee_id:
assignee
.
id
)
entry
=
find
(
:xpath
,
"//feed/entry[contains(summary/text(),'
#{
issue1
.
title
}
')]"
)
entry
=
find
(
:xpath
,
"//feed/entry[contains(summary/text(),'
#{
issue1
.
title
}
')]"
)
...
...
spec/features/dashboard/issues_filter_spec.rb
View file @
d10416e2
...
@@ -17,6 +17,12 @@ feature 'Dashboard Issues filtering', :js do
...
@@ -17,6 +17,12 @@ feature 'Dashboard Issues filtering', :js do
visit_issues
visit_issues
end
end
context
'without any filter'
do
it
'shows error message'
do
expect
(
page
).
to
have_content
'Please select at least one filter to see results'
end
end
context
'filtering by milestone'
do
context
'filtering by milestone'
do
it
'shows all issues with no milestone'
do
it
'shows all issues with no milestone'
do
show_milestone_dropdown
show_milestone_dropdown
...
@@ -27,15 +33,6 @@ feature 'Dashboard Issues filtering', :js do
...
@@ -27,15 +33,6 @@ feature 'Dashboard Issues filtering', :js do
expect
(
page
).
to
have_selector
(
'.issue'
,
count:
1
)
expect
(
page
).
to
have_selector
(
'.issue'
,
count:
1
)
end
end
it
'shows all issues with any milestone'
do
show_milestone_dropdown
click_link
'Any Milestone'
expect
(
page
).
to
have_issuable_counts
(
open:
2
,
closed:
0
,
all:
2
)
expect
(
page
).
to
have_selector
(
'.issue'
,
count:
2
)
end
it
'shows all issues with the selected milestone'
do
it
'shows all issues with the selected milestone'
do
show_milestone_dropdown
show_milestone_dropdown
...
@@ -68,13 +65,6 @@ feature 'Dashboard Issues filtering', :js do
...
@@ -68,13 +65,6 @@ feature 'Dashboard Issues filtering', :js do
let
(
:label
)
{
create
(
:label
,
project:
project
)
}
let
(
:label
)
{
create
(
:label
,
project:
project
)
}
let!
(
:label_link
)
{
create
(
:label_link
,
label:
label
,
target:
issue
)
}
let!
(
:label_link
)
{
create
(
:label_link
,
label:
label
,
target:
issue
)
}
it
'shows all issues without filter'
do
page
.
within
'ul.content-list'
do
expect
(
page
).
to
have_content
issue
.
title
expect
(
page
).
to
have_content
issue2
.
title
end
end
it
'shows all issues with the selected label'
do
it
'shows all issues with the selected label'
do
page
.
within
'.labels-filter'
do
page
.
within
'.labels-filter'
do
find
(
'.dropdown'
).
click
find
(
'.dropdown'
).
click
...
@@ -89,9 +79,19 @@ feature 'Dashboard Issues filtering', :js do
...
@@ -89,9 +79,19 @@ feature 'Dashboard Issues filtering', :js do
end
end
context
'sorting'
do
context
'sorting'
do
<<<<<<<
HEAD
it
'shows sorted issues'
do
it
'shows sorted issues'
do
sort_by
(
'Created date'
)
sort_by
(
'Created date'
)
visit_issues
visit_issues
=======
before
do
visit_issues
(
assignee_id:
user
.
id
)
end
it
'remembers last sorting value'
do
sorting_by
(
'Created date'
)
visit_issues
(
assignee_id:
user
.
id
)
>>>>>>>
Fixed
dashboard
filtering
tests
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'Created date'
)
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'Created date'
)
end
end
...
...
spec/features/dashboard/merge_requests_spec.rb
View file @
d10416e2
...
@@ -103,15 +103,11 @@ feature 'Dashboard Merge Requests' do
...
@@ -103,15 +103,11 @@ feature 'Dashboard Merge Requests' do
expect
(
page
).
not_to
have_content
(
other_merge_request
.
title
)
expect
(
page
).
not_to
have_content
(
other_merge_request
.
title
)
end
end
it
'shows
all merge requests
'
,
:js
do
it
'shows
error message without filter
'
,
:js
do
filter_item_select
(
'Any Assignee'
,
'.js-assignee-search'
)
filter_item_select
(
'Any Assignee'
,
'.js-assignee-search'
)
filter_item_select
(
'Any Author'
,
'.js-author-search'
)
filter_item_select
(
'Any Author'
,
'.js-author-search'
)
expect
(
page
).
to
have_content
(
authored_merge_request
.
title
)
expect
(
page
).
to
have_content
(
'Please select at least one filter to see results'
)
expect
(
page
).
to
have_content
(
authored_merge_request_from_fork
.
title
)
expect
(
page
).
to
have_content
(
assigned_merge_request
.
title
)
expect
(
page
).
to
have_content
(
assigned_merge_request_from_fork
.
title
)
expect
(
page
).
to
have_content
(
other_merge_request
.
title
)
end
end
it
'shows sorted merge requests'
do
it
'shows sorted merge requests'
do
...
...
spec/features/search/user_uses_header_search_field_spec.rb
View file @
d10416e2
...
@@ -9,7 +9,47 @@ describe 'User uses header search field' do
...
@@ -9,7 +9,47 @@ describe 'User uses header search field' do
before
do
before
do
project
.
add_reporter
(
user
)
project
.
add_reporter
(
user
)
sign_in
(
user
)
sign_in
(
user
)
end
context
'when user is in a global scope'
,
:js
do
before
do
visit
(
root_path
)
page
.
find
(
'#search'
).
click
end
context
'when clicking issues'
do
it
'shows assigned issues'
do
find
(
'.search-input-container .dropdown-menu'
).
click_link
(
'Issues assigned to me'
)
expect
(
find
(
'.js-assignee-search'
)).
to
have_content
(
user
.
name
)
end
it
'shows created issues'
do
find
(
'.search-input-container .dropdown-menu'
).
click_link
(
"Issues I've created"
)
expect
(
find
(
'.js-author-search'
)).
to
have_content
(
user
.
name
)
end
end
context
'when clicking merge requests'
do
let!
(
:merge_request
)
{
create
(
:merge_request
,
source_project:
project
,
author:
user
,
assignee:
user
)
}
it
'shows assigned merge requests'
do
find
(
'.search-input-container .dropdown-menu'
).
click_link
(
'Merge requests assigned to me'
)
expect
(
find
(
'.js-assignee-search'
)).
to
have_content
(
user
.
name
)
end
it
'shows created merge requests'
do
find
(
'.search-input-container .dropdown-menu'
).
click_link
(
"Merge requests I've created"
)
expect
(
find
(
'.js-author-search'
)).
to
have_content
(
user
.
name
)
end
end
end
context
'when user is in a project scope'
do
before
do
visit
(
project_path
(
project
))
visit
(
project_path
(
project
))
end
end
...
@@ -87,4 +127,5 @@ describe 'User uses header search field' do
...
@@ -87,4 +127,5 @@ describe 'User uses header search field' do
expect
(
page
).
not_to
have_selector
(
'.dropdown-header'
,
text:
/
#{
project
.
name
}
/i
)
expect
(
page
).
not_to
have_selector
(
'.dropdown-header'
,
text:
/
#{
project
.
name
}
/i
)
end
end
end
end
end
end
end
spec/helpers/issuables_helper_spec.rb
View file @
d10416e2
...
@@ -40,22 +40,22 @@ describe IssuablesHelper do
...
@@ -40,22 +40,22 @@ describe IssuablesHelper do
end
end
it
'returns "Open" when state is :opened'
do
it
'returns "Open" when state is :opened'
do
expect
(
helper
.
issuables_state_counter_text
(
:issues
,
:opened
))
expect
(
helper
.
issuables_state_counter_text
(
:issues
,
:opened
,
true
))
.
to
eq
(
'<span>Open</span> <span class="badge">42</span>'
)
.
to
eq
(
'<span>Open</span> <span class="badge">42</span>'
)
end
end
it
'returns "Closed" when state is :closed'
do
it
'returns "Closed" when state is :closed'
do
expect
(
helper
.
issuables_state_counter_text
(
:issues
,
:closed
))
expect
(
helper
.
issuables_state_counter_text
(
:issues
,
:closed
,
true
))
.
to
eq
(
'<span>Closed</span> <span class="badge">42</span>'
)
.
to
eq
(
'<span>Closed</span> <span class="badge">42</span>'
)
end
end
it
'returns "Merged" when state is :merged'
do
it
'returns "Merged" when state is :merged'
do
expect
(
helper
.
issuables_state_counter_text
(
:merge_requests
,
:merged
))
expect
(
helper
.
issuables_state_counter_text
(
:merge_requests
,
:merged
,
true
))
.
to
eq
(
'<span>Merged</span> <span class="badge">42</span>'
)
.
to
eq
(
'<span>Merged</span> <span class="badge">42</span>'
)
end
end
it
'returns "All" when state is :all'
do
it
'returns "All" when state is :all'
do
expect
(
helper
.
issuables_state_counter_text
(
:merge_requests
,
:all
))
expect
(
helper
.
issuables_state_counter_text
(
:merge_requests
,
:all
,
true
))
.
to
eq
(
'<span>All</span> <span class="badge">42</span>'
)
.
to
eq
(
'<span>All</span> <span class="badge">42</span>'
)
end
end
end
end
...
@@ -101,27 +101,6 @@ describe IssuablesHelper do
...
@@ -101,27 +101,6 @@ describe IssuablesHelper do
end
end
end
end
describe
'#issuable_filter_present?'
do
it
'returns true when any key is present'
do
allow
(
helper
).
to
receive
(
:params
).
and_return
(
ActionController
::
Parameters
.
new
(
milestone_title:
'Velit consectetur asperiores natus delectus.'
,
project_id:
'gitlabhq'
,
scope:
'all'
)
)
expect
(
helper
.
issuable_filter_present?
).
to
be_truthy
end
it
'returns false when no key is present'
do
allow
(
helper
).
to
receive
(
:params
).
and_return
(
ActionController
::
Parameters
.
new
(
project_id:
'gitlabhq'
,
scope:
'all'
)
)
expect
(
helper
.
issuable_filter_present?
).
to
be_falsey
end
end
describe
'#updated_at_by'
do
describe
'#updated_at_by'
do
let
(
:user
)
{
create
(
:user
)
}
let
(
:user
)
{
create
(
:user
)
}
let
(
:unedited_issuable
)
{
create
(
:issue
)
}
let
(
:unedited_issuable
)
{
create
(
:issue
)
}
...
...
spec/javascripts/search_autocomplete_spec.js
View file @
d10416e2
...
@@ -98,8 +98,8 @@ import * as urlUtils from '~/lib/utils/url_utility';
...
@@ -98,8 +98,8 @@ import * as urlUtils from '~/lib/utils/url_utility';
assertLinks
=
function
(
list
,
issuesPath
,
mrsPath
)
{
assertLinks
=
function
(
list
,
issuesPath
,
mrsPath
)
{
var
a1
,
a2
,
a3
,
a4
,
issuesAssignedToMeLink
,
issuesIHaveCreatedLink
,
mrsAssignedToMeLink
,
mrsIHaveCreatedLink
;
var
a1
,
a2
,
a3
,
a4
,
issuesAssignedToMeLink
,
issuesIHaveCreatedLink
,
mrsAssignedToMeLink
,
mrsIHaveCreatedLink
;
if
(
issuesPath
)
{
if
(
issuesPath
)
{
issuesAssignedToMeLink
=
issuesPath
+
"
/?assignee_
username=
"
+
userName
;
issuesAssignedToMeLink
=
issuesPath
+
"
/?assignee_
id=
"
+
userId
;
issuesIHaveCreatedLink
=
issuesPath
+
"
/?author_
username=
"
+
userName
;
issuesIHaveCreatedLink
=
issuesPath
+
"
/?author_
id=
"
+
userId
;
a1
=
"
a[href='
"
+
issuesAssignedToMeLink
+
"
']
"
;
a1
=
"
a[href='
"
+
issuesAssignedToMeLink
+
"
']
"
;
a2
=
"
a[href='
"
+
issuesIHaveCreatedLink
+
"
']
"
;
a2
=
"
a[href='
"
+
issuesIHaveCreatedLink
+
"
']
"
;
expect
(
list
.
find
(
a1
).
length
).
toBe
(
1
);
expect
(
list
.
find
(
a1
).
length
).
toBe
(
1
);
...
@@ -107,8 +107,8 @@ import * as urlUtils from '~/lib/utils/url_utility';
...
@@ -107,8 +107,8 @@ import * as urlUtils from '~/lib/utils/url_utility';
expect
(
list
.
find
(
a2
).
length
).
toBe
(
1
);
expect
(
list
.
find
(
a2
).
length
).
toBe
(
1
);
expect
(
list
.
find
(
a2
).
text
()).
toBe
(
"
Issues I've created
"
);
expect
(
list
.
find
(
a2
).
text
()).
toBe
(
"
Issues I've created
"
);
}
}
mrsAssignedToMeLink
=
mrsPath
+
"
/?assignee_
username=
"
+
userName
;
mrsAssignedToMeLink
=
mrsPath
+
"
/?assignee_
id=
"
+
userId
;
mrsIHaveCreatedLink
=
mrsPath
+
"
/?author_
username=
"
+
userName
;
mrsIHaveCreatedLink
=
mrsPath
+
"
/?author_
id=
"
+
userId
;
a3
=
"
a[href='
"
+
mrsAssignedToMeLink
+
"
']
"
;
a3
=
"
a[href='
"
+
mrsAssignedToMeLink
+
"
']
"
;
a4
=
"
a[href='
"
+
mrsIHaveCreatedLink
+
"
']
"
;
a4
=
"
a[href='
"
+
mrsIHaveCreatedLink
+
"
']
"
;
expect
(
list
.
find
(
a3
).
length
).
toBe
(
1
);
expect
(
list
.
find
(
a3
).
length
).
toBe
(
1
);
...
...
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