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
c6728e13
Commit
c6728e13
authored
Sep 23, 2017
by
blackst0ne
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve list of sorting options
parent
c5f7e20a
Changes
20
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
333 additions
and
364 deletions
+333
-364
app/controllers/concerns/issuable_collections.rb
app/controllers/concerns/issuable_collections.rb
+22
-7
app/helpers/sorting_helper.rb
app/helpers/sorting_helper.rb
+194
-143
app/models/concerns/issuable.rb
app/models/concerns/issuable.rb
+13
-11
app/models/concerns/sortable.rb
app/models/concerns/sortable.rb
+8
-7
app/models/issue.rb
app/models/issue.rb
+5
-3
app/views/shared/_sort_dropdown.html.haml
app/views/shared/_sort_dropdown.html.haml
+12
-35
changelogs/unreleased/improve_sorting_list.yml
changelogs/unreleased/improve_sorting_list.yml
+5
-0
features/project/issues/issues.feature
features/project/issues/issues.feature
+8
-10
features/project/merge_requests.feature
features/project/merge_requests.feature
+7
-9
features/steps/project/issues/issues.rb
features/steps/project/issues/issues.rb
+1
-1
features/steps/project/merge_requests.rb
features/steps/project/merge_requests.rb
+1
-1
features/steps/shared/issuable.rb
features/steps/shared/issuable.rb
+6
-6
spec/ee/spec/controllers/projects/issues_controller_spec.rb
spec/ee/spec/controllers/projects/issues_controller_spec.rb
+2
-14
spec/features/dashboard/issues_filter_spec.rb
spec/features/dashboard/issues_filter_spec.rb
+4
-4
spec/features/dashboard/merge_requests_spec.rb
spec/features/dashboard/merge_requests_spec.rb
+4
-4
spec/features/issuables/default_sort_order_spec.rb
spec/features/issuables/default_sort_order_spec.rb
+12
-26
spec/features/issues/filtered_search/filter_issues_spec.rb
spec/features/issues/filtered_search/filter_issues_spec.rb
+7
-9
spec/features/issues_spec.rb
spec/features/issues_spec.rb
+11
-41
spec/features/merge_requests/filter_merge_requests_spec.rb
spec/features/merge_requests/filter_merge_requests_spec.rb
+2
-2
spec/features/merge_requests/user_lists_merge_requests_spec.rb
...features/merge_requests/user_lists_merge_requests_spec.rb
+9
-31
No files found.
app/controllers/concerns/issuable_collections.rb
View file @
c6728e13
...
...
@@ -117,19 +117,34 @@ module IssuableCollections
key
=
'issuable_sort'
cookies
[
key
]
=
params
[
:sort
]
if
params
[
:sort
].
present?
# id_desc and id_asc are old values for these two.
cookies
[
key
]
=
sort_value_recently_created
if
cookies
[
key
]
==
'id_desc'
cookies
[
key
]
=
sort_value_oldest_created
if
cookies
[
key
]
==
'id_asc'
cookies
[
key
]
=
update_cookie_value
(
cookies
[
key
])
params
[
:sort
]
=
cookies
[
key
]
end
def
default_sort_order
case
params
[
:state
]
when
'opened'
,
'all'
then
sort_value_recently_created
when
'opened'
,
'all'
then
sort_value_created_date
when
'merged'
,
'closed'
then
sort_value_recently_updated
else
sort_value_recently_created
else
sort_value_created_date
end
end
# Update old values to the actual ones.
def
update_cookie_value
(
value
)
case
value
when
'id_asc'
then
sort_value_oldest_created
when
'id_desc'
then
sort_value_recently_created
when
'created_asc'
then
sort_value_created_date
when
'created_desc'
then
sort_value_created_date
when
'due_date_asc'
then
sort_value_due_date
when
'due_date_desc'
then
sort_value_due_date
when
'milestone_due_asc'
then
sort_value_milestone
when
'milestone_due_desc'
then
sort_value_milestone
when
'downvotes_asc'
then
sort_value_popularity
when
'downvotes_desc'
then
sort_value_popularity
when
'weight_asc'
then
sort_value_weight
when
'weight_desc'
then
sort_value_weight
else
value
end
end
end
app/helpers/sorting_helper.rb
View file @
c6728e13
module
SortingHelper
def
sort_options_hash
{
sort_value_name
=>
sort_title_name
,
sort_value_name_desc
=>
sort_title_name_desc
,
sort_value_recently_updated
=>
sort_title_recently_updated
,
sort_value_oldest_updated
=>
sort_title_oldest_updated
,
sort_value_created_date
=>
sort_title_created_date
,
sort_value_downvotes
=>
sort_title_downvotes
,
sort_value_due_date
=>
sort_title_due_date
,
sort_value_due_date_later
=>
sort_title_due_date_later
,
sort_value_due_date_soon
=>
sort_title_due_date_soon
,
sort_value_label_priority
=>
sort_title_label_priority
,
sort_value_largest_group
=>
sort_title_largest_group
,
sort_value_largest_repo
=>
sort_title_largest_repo
,
sort_value_milestone
=>
sort_title_milestone
,
sort_value_milestone_later
=>
sort_title_milestone_later
,
sort_value_milestone_soon
=>
sort_title_milestone_soon
,
sort_value_less_weight
=>
sort_title_less_weight
,
sort_value_more_weight
=>
sort_title_more_weight
,
sort_value_name
=>
sort_title_name
,
sort_value_name_desc
=>
sort_title_name_desc
,
sort_value_oldest_created
=>
sort_title_oldest_created
,
sort_value_oldest_signin
=>
sort_title_oldest_signin
,
sort_value_oldest_updated
=>
sort_title_oldest_updated
,
sort_value_recently_created
=>
sort_title_recently_created
,
sort_value_oldest_created
=>
sort_title_oldest_created
,
sort_value_milestone_soon
=>
sort_title_milestone_soon
,
sort_value_milestone_later
=>
sort_title_milestone_later
,
sort_value_due_date_soon
=>
sort_title_due_date_soon
,
sort_value_due_date_later
=>
sort_title_due_date_later
,
sort_value_largest_repo
=>
sort_title_largest_repo
,
sort_value_largest_group
=>
sort_title_largest_group
,
sort_value_recently_signin
=>
sort_title_recently_signin
,
sort_value_oldest_signin
=>
sort_title_oldest_signin
,
sort_value_downvotes
=>
sort_title_downvotes
,
sort_value_upvotes
=>
sort_title_upvotes
,
sort_value_more_weight
=>
sort_title_more_weight
,
sort_value_less_weight
=>
sort_title_less_weight
,
sort_value_priority
=>
sort_title_priority
,
sort_value_label_priority
=>
sort_title_label_priority
sort_value_recently_signin
=>
sort_title_recently_signin
,
sort_value_recently_updated
=>
sort_title_recently_updated
,
sort_value_popularity
=>
sort_title_popularity
,
sort_value_priority
=>
sort_title_priority
,
sort_value_upvotes
=>
sort_title_upvotes
,
sort_value_weight
=>
sort_title_weight
}
end
def
projects_sort_options_hash
options
=
{
sort_value_
name
=>
sort_title_name
,
sort_value_
latest_activity
=>
sort_title_latest_activity
,
sort_value_oldest_activity
=>
sort_title_oldest_activity
,
sort_value_
recently_created
=>
sort_title_recently
_created
,
sort_value_
oldest_created
=>
sort_title_oldest
_created
sort_value_
latest_activity
=>
sort_title_latest_activity
,
sort_value_
name
=>
sort_title_name
,
sort_value_oldest_activity
=>
sort_title_oldest_activity
,
sort_value_
oldest_created
=>
sort_title_oldest
_created
,
sort_value_
recently_created
=>
sort_title_recently
_created
}
if
current_controller?
(
'admin/projects'
)
...
...
@@ -42,168 +47,186 @@ module SortingHelper
def
member_sort_options_hash
{
sort_value_access_level_asc
=>
sort_title_access_level_asc
,
sort_value_access_level_asc
=>
sort_title_access_level_asc
,
sort_value_access_level_desc
=>
sort_title_access_level_desc
,
sort_value_last_joined
=>
sort_title_last_joined
,
sort_value_
oldest_joined
=>
sort_title_oldest_joined
,
sort_value_name
=>
sort_title_name_a
sc
,
sort_value_
name_desc
=>
sort_title_name_desc
,
sort_value_
recently_signin
=>
sort_title_recently
_signin
,
sort_value_
oldest_signin
=>
sort_title_oldest
_signin
sort_value_last_joined
=>
sort_title_last_joined
,
sort_value_
name
=>
sort_title_name_asc
,
sort_value_name
_desc
=>
sort_title_name_de
sc
,
sort_value_
oldest_joined
=>
sort_title_oldest_joined
,
sort_value_
oldest_signin
=>
sort_title_oldest
_signin
,
sort_value_
recently_signin
=>
sort_title_recently
_signin
}
end
def
milestone_sort_options_hash
{
sort_value_name
=>
sort_title_name_asc
,
sort_value_name_desc
=>
sort_title_name_desc
,
sort_value_due_date_
soon
=>
sort_title_due_date_soon
,
sort_value_due_date_
later
=>
sort_title_due_date_later
,
sort_value_start_date_
soon
=>
sort_title_start_date_soon
,
sort_value_start_date_
later
=>
sort_title_start_date_later
sort_value_name
=>
sort_title_name_asc
,
sort_value_name_desc
=>
sort_title_name_desc
,
sort_value_due_date_
later
=>
sort_title_due_date_later
,
sort_value_due_date_
soon
=>
sort_title_due_date_soon
,
sort_value_start_date_
later
=>
sort_title_start_date_later
,
sort_value_start_date_
soon
=>
sort_title_start_date_soon
}
end
def
branches_sort_options_hash
{
sort_value_name
=>
sort_title_name
,
sort_value_
recently_updated
=>
sort_title_recently
_updated
,
sort_value_
oldest_updated
=>
sort_title_oldest
_updated
sort_value_name
=>
sort_title_name
,
sort_value_
oldest_updated
=>
sort_title_oldest
_updated
,
sort_value_
recently_updated
=>
sort_title_recently
_updated
}
end
def
tags_sort_options_hash
{
sort_value_name
=>
sort_title_name
,
sort_value_
recently_updated
=>
sort_title_recently
_updated
,
sort_value_
oldest_updated
=>
sort_title_oldest
_updated
sort_value_name
=>
sort_title_name
,
sort_value_
oldest_updated
=>
sort_title_oldest
_updated
,
sort_value_
recently_updated
=>
sort_title_recently
_updated
}
end
def
sort
_title_priority
s_
(
'SortOptions|Priority'
)
def
sort
able_item
(
item
,
path
,
sorted_by
)
link_to
item
,
path
,
class:
sorted_by
==
item
?
'is-active'
:
''
end
def
sort_title_label_priority
s_
(
'SortOptions|Label priority'
)
# Titles.
def
sort_title_access_level_asc
s_
(
'SortOptions|Access level, ascending'
)
end
def
sort_title_
oldest_updated
s_
(
'SortOptions|
Oldest updated
'
)
def
sort_title_
access_level_desc
s_
(
'SortOptions|
Access level, descending
'
)
end
def
sort_title_
recently_updated
s_
(
'SortOptions|
Last updated
'
)
def
sort_title_
created_date
s_
(
'SortOptions|
Created date
'
)
end
def
sort_title_
oldest_activity
s_
(
'SortOptions|
Oldest updated
'
)
def
sort_title_
downvotes
s_
(
'SortOptions|
Least popular
'
)
end
def
sort_title_
latest_activity
s_
(
'SortOptions|
Last updated
'
)
def
sort_title_
due_date
s_
(
'SortOptions|
Due date
'
)
end
def
sort_title_
oldest_created
s_
(
'SortOptions|
Oldest created
'
)
def
sort_title_
due_date_later
s_
(
'SortOptions|
Due later
'
)
end
def
sort_title_
recently_created
s_
(
'SortOptions|
Last created
'
)
def
sort_title_
due_date_soon
s_
(
'SortOptions|
Due soon
'
)
end
def
sort_title_
milestone_soon
s_
(
'SortOptions|
Milestone due soon
'
)
def
sort_title_
label_priority
s_
(
'SortOptions|
Label priority
'
)
end
def
sort_title_
milestone_later
s_
(
'SortOptions|
Milestone due later
'
)
def
sort_title_
largest_group
s_
(
'SortOptions|
Largest group
'
)
end
def
sort_title_
due_date_soon
s_
(
'SortOptions|
Due soon
'
)
def
sort_title_
largest_repo
s_
(
'SortOptions|
Largest repository
'
)
end
def
sort_title_
due_date_later
s_
(
'SortOptions|
Due later
'
)
def
sort_title_
last_joined
s_
(
'SortOptions|
Last joined
'
)
end
def
sort_title_
start_date_soon
s_
(
'SortOptions|
Start soon
'
)
def
sort_title_
latest_activity
s_
(
'SortOptions|
Last updated
'
)
end
def
sort_title_start_date_later
s_
(
'SortOptions|Start later'
)
def
sort_title_less_weight
s_
(
'SortOptions|Less weight'
)
end
def
sort_title_milestone
s_
(
'SortOptions|Milestone'
)
end
def
sort_title_milestone_later
s_
(
'SortOptions|Milestone due later'
)
end
def
sort_title_milestone_soon
s_
(
'SortOptions|Milestone due soon'
)
end
def
sort_title_more_weight
s_
(
'SortOptions|More weight'
)
end
def
sort_title_name
s_
(
'SortOptions|Name'
)
end
def
sort_title_
largest_repo
s_
(
'SortOptions|
Largest repository
'
)
def
sort_title_
name_asc
s_
(
'SortOptions|
Name, ascending
'
)
end
def
sort_title_
largest_group
s_
(
'SortOptions|
Largest group
'
)
def
sort_title_
name_desc
s_
(
'SortOptions|
Name, descending
'
)
end
def
sort_title_
recently_signin
s_
(
'SortOptions|
Recent sign in
'
)
def
sort_title_
oldest_activity
s_
(
'SortOptions|
Oldest updated
'
)
end
def
sort_title_oldest_
signin
s_
(
'SortOptions|Oldest
sign in
'
)
def
sort_title_oldest_
created
s_
(
'SortOptions|Oldest
created
'
)
end
def
sort_title_
downvotes
s_
(
'SortOptions|
Least popular
'
)
def
sort_title_
oldest_joined
s_
(
'SortOptions|
Oldest joined
'
)
end
def
sort_title_
upvotes
s_
(
'SortOptions|
Most popular
'
)
def
sort_title_
oldest_signin
s_
(
'SortOptions|
Oldest sign in
'
)
end
def
sort_title_
more_weight
'More weight'
def
sort_title_
oldest_updated
s_
(
'SortOptions|Oldest updated'
)
end
def
sort_title_
less_weight
'Less weight'
def
sort_title_
popularity
s_
(
'SortOptions|Popularity'
)
end
def
sort_title_
last_joined
s_
(
'SortOptions|
Last joined
'
)
def
sort_title_
priority
s_
(
'SortOptions|
Priority
'
)
end
def
sort_title_
oldest_join
ed
s_
(
'SortOptions|
Oldest join
ed'
)
def
sort_title_
recently_creat
ed
s_
(
'SortOptions|
Last creat
ed'
)
end
def
sort_title_
access_level_asc
s_
(
'SortOptions|
Access level, ascending
'
)
def
sort_title_
recently_signin
s_
(
'SortOptions|
Recent sign in
'
)
end
def
sort_title_
access_level_desc
s_
(
'SortOptions|
Access level, descending
'
)
def
sort_title_
recently_updated
s_
(
'SortOptions|
Last updated
'
)
end
def
sort_title_
name_asc
s_
(
'SortOptions|
Name, ascending
'
)
def
sort_title_
start_date_later
s_
(
'SortOptions|
Start later
'
)
end
def
sort_title_
name_desc
s_
(
'SortOptions|
Name, descending
'
)
def
sort_title_
start_date_soon
s_
(
'SortOptions|
Start soon
'
)
end
def
sort_
value_last_joined
'last_joined'
def
sort_
title_upvotes
s_
(
'SortOptions|Most popular'
)
end
def
sort_
value_oldest_joined
'oldest_joined'
def
sort_
title_weight
s_
(
'SortOptions|Weight'
)
end
# Values.
def
sort_value_access_level_asc
'access_level_asc'
end
...
...
@@ -212,99 +235,127 @@ module SortingHelper
'access_level_desc'
end
def
sort_value_
name_desc
'
name_desc
'
def
sort_value_
created_date
'
created_date
'
end
def
sort_value_priority
'priority'
def
sort_value_downvotes
'downvotes_desc'
end
def
sort_value_due_date
'due_date'
end
def
sort_value_due_date_later
'due_date_desc'
end
def
sort_value_due_date_soon
'due_date_asc'
end
def
sort_value_label_priority
'label_priority'
end
def
sort_value_
oldest_updated
'
updated_a
sc'
def
sort_value_
largest_group
'
storage_size_de
sc'
end
def
sort_value_
recently_updated
'
updated
_desc'
def
sort_value_
largest_repo
'
storage_size
_desc'
end
def
sort_value_
oldest_activity
'la
test_activity_asc
'
def
sort_value_
last_joined
'la
st_joined
'
end
def
sort_value_latest_activity
'latest_activity_desc'
end
def
sort_value_
oldest_created
'
created
_asc'
def
sort_value_
less_weight
'
weight
_asc'
end
def
sort_value_recently_created
'created_desc'
def
sort_value_milestone
'milestone'
end
def
sort_value_milestone_later
'milestone_due_desc'
end
def
sort_value_milestone_soon
'milestone_due_asc'
end
def
sort_value_m
ilestone_later
'
milestone_due
_desc'
def
sort_value_m
ore_weight
'
weight
_desc'
end
def
sort_value_
due_date_soon
'
due_dat
e_asc'
def
sort_value_
name
'
nam
e_asc'
end
def
sort_value_
due_date_later
'
due_dat
e_desc'
def
sort_value_
name_desc
'
nam
e_desc'
end
def
sort_value_
start_date_soon
'
start_date
_asc'
def
sort_value_
oldest_activity
'
latest_activity
_asc'
end
def
sort_value_
start_date_later
'
start_date_de
sc'
def
sort_value_
oldest_created
'
created_a
sc'
end
def
sort_value_
name
'
name_asc
'
def
sort_value_
oldest_signin
'
oldest_sign_in
'
end
def
sort_value_
largest_repo
'
storage_size_desc
'
def
sort_value_
oldest_joined
'
oldest_joined
'
end
def
sort_value_largest_group
'storage_size_desc'
def
sort_value_oldest_updated
'updated_asc'
end
def
sort_value_popularity
'popularity'
end
def
sort_value_priority
'priority'
end
def
sort_value_recently_created
'created_desc'
end
def
sort_value_recently_signin
'recent_sign_in'
end
def
sort_value_
oldest_signin
'
oldest_sign_in
'
def
sort_value_
recently_updated
'
updated_desc
'
end
def
sort_value_
downvotes
'
downvotes
_desc'
def
sort_value_
start_date_later
'
start_date
_desc'
end
def
sort_value_
upvotes
'
upvotes_de
sc'
def
sort_value_
start_date_soon
'
start_date_a
sc'
end
def
sort_value_
more_weight
'
weight
_desc'
def
sort_value_
upvotes
'
upvotes
_desc'
end
def
sort_value_
less_
weight
'weight
_asc
'
def
sort_value_weight
'weight'
end
end
app/models/concerns/issuable.rb
View file @
c6728e13
...
...
@@ -142,16 +142,18 @@ module Issuable
end
def
sort
(
method
,
excluded_labels:
[])
sorted
=
case
method
.
to_s
when
'milestone_due_asc'
then
order_milestone_due_asc
when
'milestone_due_desc'
then
order_milestone_due_desc
when
'downvotes_desc'
then
order_downvotes_desc
when
'upvotes_desc'
then
order_upvotes_desc
when
'label_priority'
then
order_labels_priority
(
excluded_labels:
excluded_labels
)
when
'priority'
then
order_due_date_and_labels_priority
(
excluded_labels:
excluded_labels
)
else
order_by
(
method
)
end
sorted
=
case
method
.
to_s
when
'downvotes_desc'
then
order_downvotes_desc
when
'label_priority'
then
order_labels_priority
(
excluded_labels:
excluded_labels
)
when
'milestone'
then
order_milestone_due_asc
when
'milestone_due_asc'
then
order_milestone_due_asc
when
'milestone_due_desc'
then
order_milestone_due_desc
when
'popularity'
then
order_upvotes_desc
when
'priority'
then
order_due_date_and_labels_priority
(
excluded_labels:
excluded_labels
)
when
'upvotes_desc'
then
order_upvotes_desc
else
order_by
(
method
)
end
# Break ties with the ID column for pagination
sorted
.
order
(
id: :desc
)
...
...
@@ -224,7 +226,7 @@ module Issuable
def
grouping_columns
(
sort
)
grouping_columns
=
[
arel_table
[
:id
]]
if
%w(milestone_due_desc milestone_due_asc)
.
include?
(
sort
)
if
%w(milestone_due_desc milestone_due_asc
milestone
)
.
include?
(
sort
)
milestone_table
=
Milestone
.
arel_table
grouping_columns
<<
milestone_table
[
:id
]
grouping_columns
<<
milestone_table
[
:due_date
]
...
...
app/models/concerns/sortable.rb
View file @
c6728e13
...
...
@@ -19,14 +19,15 @@ module Sortable
module
ClassMethods
def
order_by
(
method
)
case
method
.
to_s
when
'name_asc'
then
order_name_asc
when
'name_desc'
then
order_name_desc
when
'updated_asc'
then
order_updated_asc
when
'updated_desc'
then
order_updated_desc
when
'created_asc'
then
order_created_asc
when
'created_asc'
then
order_created_asc
when
'created_date'
then
order_created_desc
when
'created_desc'
then
order_created_desc
when
'id_desc'
then
order_id_desc
when
'id_asc'
then
order_id_asc
when
'id_asc'
then
order_id_asc
when
'id_desc'
then
order_id_desc
when
'name_asc'
then
order_name_asc
when
'name_desc'
then
order_name_desc
when
'updated_asc'
then
order_updated_asc
when
'updated_desc'
then
order_updated_desc
else
all
end
...
...
app/models/issue.rb
View file @
c6728e13
...
...
@@ -128,10 +128,12 @@ class Issue < ActiveRecord::Base
def
self
.
sort
(
method
,
excluded_labels:
[])
case
method
.
to_s
when
'due_date_asc'
then
order_due_date_asc
when
'due_date'
then
order_due_date_asc
when
'due_date_asc'
then
order_due_date_asc
when
'due_date_desc'
then
order_due_date_desc
when
'weight_desc'
then
order_weight_desc
when
'weight_asc'
then
order_weight_asc
when
'weight'
then
order_weight_asc
when
'weight_asc'
then
order_weight_asc
when
'weight_desc'
then
order_weight_desc
else
super
end
...
...
app/views/shared/_sort_dropdown.html.haml
View file @
c6728e13
-
sorted_by
=
sort_options_hash
[
@sort
]
-
viewing_issues
=
controller
.
controller_name
==
'issues'
||
controller
.
action_name
==
'issues'
.dropdown.inline.prepend-left-10
%button
.dropdown-toggle
{
type:
'button'
,
data:
{
toggle:
'dropdown'
}
}
-
if
@sort
.
present?
=
sort_options_hash
[
@sort
]
-
else
=
sort_title_recently_created
%button
.dropdown-toggle
{
type:
'button'
,
data:
{
toggle:
'dropdown'
}
}
=
sorted_by
=
icon
(
'chevron-down'
)
%ul
.dropdown-menu.dropdown-menu-align-right.dropdown-menu-sort
%ul
.dropdown-menu.dropdown-menu-align-right.dropdown-menu-s
electable.dropdown-menu-s
ort
%li
=
link_to
page_filter_path
(
sort:
sort_value_priority
,
label:
true
)
do
=
sort_title_priority
=
link_to
page_filter_path
(
sort:
sort_value_label_priority
,
label:
true
)
do
=
sort_title_label_priority
=
link_to
page_filter_path
(
sort:
sort_value_recently_created
,
label:
true
)
do
=
sort_title_recently_created
=
link_to
page_filter_path
(
sort:
sort_value_oldest_created
,
label:
true
)
do
=
sort_title_oldest_created
=
link_to
page_filter_path
(
sort:
sort_value_recently_updated
,
label:
true
)
do
=
sort_title_recently_updated
=
link_to
page_filter_path
(
sort:
sort_value_oldest_updated
,
label:
true
)
do
=
sort_title_oldest_updated
=
sortable_item
(
sort_title_priority
,
page_filter_path
(
sort:
sort_value_priority
,
label:
true
),
sorted_by
)
=
sortable_item
(
sort_title_created_date
,
page_filter_path
(
sort:
sort_value_created_date
,
label:
true
),
sorted_by
)
=
sortable_item
(
sort_title_recently_updated
,
page_filter_path
(
sort:
sort_value_recently_updated
,
label:
true
),
sorted_by
)
-
if
viewing_issues
&&
(
@project
||
@group
)
&
.
feature_available?
(
:issue_weights
)
=
link_to
page_filter_path
(
sort:
sort_value_more_weight
,
label:
true
)
do
=
sort_title_more_weight
=
link_to
page_filter_path
(
sort:
sort_value_less_weight
,
label:
true
)
do
=
sort_title_less_weight
=
sortable_item
(
sort_title_weight
,
page_filter_path
(
sort:
sort_value_weight
,
label:
true
),
sorted_by
)
=
link_to
page_filter_path
(
sort:
sort_value_milestone_soon
,
label:
true
)
do
=
sort_title_milestone_soon
=
link_to
page_filter_path
(
sort:
sort_value_milestone_later
,
label:
true
)
do
=
sort_title_milestone_later
-
if
viewing_issues
=
link_to
page_filter_path
(
sort:
sort_value_due_date_soon
,
label:
true
)
do
=
sort_title_due_date_soon
=
link_to
page_filter_path
(
sort:
sort_value_due_date_later
,
label:
true
)
do
=
sort_title_due_date_later
=
link_to
page_filter_path
(
sort:
sort_value_upvotes
,
label:
true
)
do
=
sort_title_upvotes
=
link_to
page_filter_path
(
sort:
sort_value_downvotes
,
label:
true
)
do
=
sort_title_downvotes
=
sortable_item
(
sort_title_milestone
,
page_filter_path
(
sort:
sort_value_milestone
,
label:
true
),
sorted_by
)
=
sortable_item
(
sort_title_due_date
,
page_filter_path
(
sort:
sort_value_due_date
,
label:
true
),
sorted_by
)
if
viewing_issues
=
sortable_item
(
sort_title_popularity
,
page_filter_path
(
sort:
sort_value_popularity
,
label:
true
),
sorted_by
)
=
sortable_item
(
sort_title_label_priority
,
page_filter_path
(
sort:
sort_value_label_priority
,
label:
true
),
sorted_by
)
changelogs/unreleased/improve_sorting_list.yml
0 → 100644
View file @
c6728e13
---
title
:
Improve list of sorting options
merge_request
:
14320
author
:
Vitaliy @blackst0ne Klachkov
type
:
added
features/project/issues/issues.feature
View file @
c6728e13
...
...
@@ -51,36 +51,34 @@ Feature: Project Issues
@javascript
Scenario
:
Visiting Issues after being sorted the list
Given
I visit project
"Shop"
issues page
And
I sort the list by
"
Olde
st updated"
And
I sort the list by
"
La
st updated"
And
I visit my project's home page
And
I visit project
"Shop"
issues page
Then
The list should be sorted by
"
Olde
st updated"
Then
The list should be sorted by
"
La
st updated"
@javascript
Scenario
:
Visiting Merge Requests after being sorted the list
Given
project
"Shop"
has a
"Bugfix MR"
merge request open
And
I visit project
"Shop"
issues page
And
I sort the list by
"
Olde
st updated"
And
I sort the list by
"
La
st updated"
And
I visit project
"Shop"
merge requests page
Then
The list should be sorted by
"
Olde
st updated"
Then
The list should be sorted by
"
La
st updated"
@javascript
Scenario
:
Visiting Merge Requests from a differente Project after sorting
Given
project
"Shop"
has a
"Bugfix MR"
merge request open
And
I visit project
"Shop"
merge requests page
And
I sort the list by
"
Olde
st updated"
And
I sort the list by
"
La
st updated"
And
I visit dashboard merge requests page
Then
The list should be sorted by
"
Olde
st updated"
Then
The list should be sorted by
"
La
st updated"
@javascript
Scenario
:
Sort issues by upvotes/downvotes
Given
project
"Shop"
have
"Bugfix"
open issue
And
issue
"Release 0.4"
have 2 upvotes and 1 downvote
And
issue
"Tweet control"
have 1 upvote and 2 downvotes
And
I sort the list by
"Most popular"
Then
The list should be sorted by
"Most popular"
And
I sort the list by
"Least popular"
Then
The list should be sorted by
"Least popular"
And
I sort the list by
"Popularity"
Then
The list should be sorted by
"Popularity"
# Markdown
...
...
features/project/merge_requests.feature
View file @
c6728e13
...
...
@@ -91,28 +91,26 @@ Feature: Project Merge Requests
@javascript
Scenario
:
Visiting Merge Requests after being sorted the list
Given
I visit project
"Shop"
merge requests page
And
I sort the list by
"
Olde
st updated"
And
I sort the list by
"
La
st updated"
And
I visit my project's home page
And
I visit project
"Shop"
merge requests page
Then
The list should be sorted by
"
Olde
st updated"
Then
The list should be sorted by
"
La
st updated"
@javascript
Scenario
:
Visiting Merge Requests from a different Project after sorting
Given
I visit project
"Shop"
merge requests page
And
I sort the list by
"
Olde
st updated"
And
I sort the list by
"
La
st updated"
And
I visit dashboard merge requests page
Then
The list should be sorted by
"
Olde
st updated"
Then
The list should be sorted by
"
La
st updated"
@javascript
Scenario
:
Sort merge requests by upvotes
/downvotes
Scenario
:
Sort merge requests by upvotes
Given
project
"Shop"
have
"Bug NS-05"
open merge request with diffs inside
And
project
"Shop"
have
"Bug NS-06"
open merge request
And
merge request
"Bug NS-04"
have 2 upvotes and 1 downvote
And
merge request
"Bug NS-06"
have 1 upvote and 2 downvotes
And
I sort the list by
"Most popular"
Then
The list should be sorted by
"Most popular"
And
I sort the list by
"Least popular"
Then
The list should be sorted by
"Least popular"
And
I sort the list by
"Popularity"
Then
The list should be sorted by
"Popularity"
@javascript
Scenario
:
I
comment on a merge request diff
...
...
features/steps/project/issues/issues.rb
View file @
c6728e13
...
...
@@ -223,7 +223,7 @@ class Spinach::Features::ProjectIssues < Spinach::FeatureSteps
end
end
step
'The list should be sorted by "
Most popular
"'
do
step
'The list should be sorted by "
Popularity
"'
do
page
.
within
'.issues-list'
do
page
.
within
'li.issue:nth-child(1)'
do
expect
(
page
).
to
have_content
'Release 0.4'
...
...
features/steps/project/merge_requests.rb
View file @
c6728e13
...
...
@@ -222,7 +222,7 @@ class Spinach::Features::ProjectMergeRequests < Spinach::FeatureSteps
end
end
step
'The list should be sorted by "
Most popular
"'
do
step
'The list should be sorted by "
Popularity
"'
do
page
.
within
'.mr-list'
do
page
.
within
'li.merge-request:nth-child(1)'
do
expect
(
page
).
to
have_content
'Bug NS-04'
...
...
features/steps/shared/issuable.rb
View file @
c6728e13
...
...
@@ -112,10 +112,10 @@ module SharedIssuable
edit_issuable
end
step
'I sort the list by "
Olde
st updated"'
do
step
'I sort the list by "
La
st updated"'
do
find
(
'button.dropdown-toggle'
).
click
page
.
within
(
'.content ul.dropdown-menu.dropdown-menu-align-right li'
)
do
click_link
"
Olde
st updated"
click_link
"
La
st updated"
end
end
...
...
@@ -127,16 +127,16 @@ module SharedIssuable
end
end
step
'I sort the list by "
Most popular
"'
do
step
'I sort the list by "
Popularity
"'
do
find
(
'button.dropdown-toggle'
).
click
page
.
within
(
'.content ul.dropdown-menu.dropdown-menu-align-right li'
)
do
click_link
'
Most popular
'
click_link
'
Popularity
'
end
end
step
'The list should be sorted by "
Olde
st updated"'
do
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'
Olde
st updated'
)
step
'The list should be sorted by "
La
st updated"'
do
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'
La
st updated'
)
end
step
'I click link "Next" in the sidebar'
do
...
...
spec/ee/spec/controllers/projects/issues_controller_spec.rb
View file @
c6728e13
...
...
@@ -100,19 +100,10 @@ describe Projects::IssuesController do
end
describe
'#index'
do
it
'allows sorting by weight
(ascending)
'
do
it
'allows sorting by weight'
do
expected
=
[
issue
,
issue2
].
sort_by
(
&
:weight
)
perform
:get
,
:index
,
sort:
'weight_asc'
expect
(
response
).
to
have_http_status
(
200
)
expect
(
assigns
(
:issues
)).
to
eq
(
expected
)
end
it
'allows sorting by weight (descending)'
do
expected
=
[
issue
,
issue2
].
sort
{
|
a
,
b
|
b
.
weight
<=>
a
.
weight
}
perform
:get
,
:index
,
sort:
'weight_desc'
perform
:get
,
:index
,
sort:
'weight'
expect
(
response
).
to
have_http_status
(
200
)
expect
(
assigns
(
:issues
)).
to
eq
(
expected
)
...
...
@@ -157,9 +148,6 @@ describe Projects::IssuesController do
end
describe
'#index'
do
it
'ignores sorting by weight (ascending)'
it
'ignores sorting by weight (descending)'
it
'ignores filtering by weight'
do
expected
=
[
issue
,
issue2
]
...
...
spec/features/dashboard/issues_filter_spec.rb
View file @
c6728e13
...
...
@@ -90,17 +90,17 @@ feature 'Dashboard Issues filtering', :js do
context
'sorting'
do
it
'shows sorted issues'
do
sorting_by
(
'
Oldest updated
'
)
sorting_by
(
'
Created date
'
)
visit_issues
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'
Oldest updated
'
)
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'
Created date
'
)
end
it
'keeps sorting issues after visiting Projects Issues page'
do
sorting_by
(
'
Oldest updated
'
)
sorting_by
(
'
Created date
'
)
visit
project_issues_path
(
project
)
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'
Oldest updated
'
)
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'
Created date
'
)
end
end
...
...
spec/features/dashboard/merge_requests_spec.rb
View file @
c6728e13
...
...
@@ -112,19 +112,19 @@ feature 'Dashboard Merge Requests' do
end
it
'shows sorted merge requests'
do
sorting_by
(
'
Oldest updated
'
)
sorting_by
(
'
Created date
'
)
visit
merge_requests_dashboard_path
(
assignee_id:
current_user
.
id
)
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'
Oldest updated
'
)
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'
Created date
'
)
end
it
'keeps sorting merge requests after visiting Projects MR page'
do
sorting_by
(
'
Oldest updated
'
)
sorting_by
(
'
Created date
'
)
visit
project_merge_requests_path
(
project
)
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'
Oldest updated
'
)
expect
(
find
(
'.issues-filters'
)).
to
have_content
(
'
Created date
'
)
end
end
end
spec/features/issuables/default_sort_order_spec.rb
View file @
c6728e13
...
...
@@ -40,10 +40,10 @@ describe 'Projects > Issuables > Default sort order' do
context
'in the "merge requests / open" tab'
,
js:
true
do
let
(
:issuable_type
)
{
:merge_request
}
it
'is "
last created
"'
do
it
'is "
created date
"'
do
visit_merge_requests_with_state
(
project
,
'open'
)
expect
(
selected_sort_order
).
to
eq
(
'
last created
'
)
expect
(
selected_sort_order
).
to
eq
(
'
created date
'
)
expect
(
first_merge_request
).
to
include
(
last_created_issuable
.
title
)
expect
(
last_merge_request
).
to
include
(
first_created_issuable
.
title
)
end
...
...
@@ -76,10 +76,10 @@ describe 'Projects > Issuables > Default sort order' do
context
'in the "merge requests / all" tab'
,
js:
true
do
let
(
:issuable_type
)
{
:merge_request
}
it
'is "
last created
"'
do
it
'is "
created date
"'
do
visit_merge_requests_with_state
(
project
,
'all'
)
expect
(
find
(
'.issues-other-filters'
)).
to
have_content
(
'
Last created
'
)
expect
(
find
(
'.issues-other-filters'
)).
to
have_content
(
'
Created date
'
)
expect
(
first_merge_request
).
to
include
(
last_created_issuable
.
title
)
expect
(
last_merge_request
).
to
include
(
first_created_issuable
.
title
)
end
...
...
@@ -105,10 +105,10 @@ describe 'Projects > Issuables > Default sort order' do
context
'in the "issues" tab'
,
js:
true
do
let
(
:issuable_type
)
{
:issue
}
it
'is "
last created
"'
do
it
'is "
created date
"'
do
visit_issues
project
expect
(
find
(
'.issues-other-filters'
)).
to
have_content
(
'
Last created
'
)
expect
(
find
(
'.issues-other-filters'
)).
to
have_content
(
'
Created date
'
)
expect
(
first_issue
).
to
include
(
last_created_issuable
.
title
)
expect
(
last_issue
).
to
include
(
first_created_issuable
.
title
)
end
...
...
@@ -117,10 +117,10 @@ describe 'Projects > Issuables > Default sort order' do
context
'in the "issues / open" tab'
,
js:
true
do
let
(
:issuable_type
)
{
:issue
}
it
'is "
last created
"'
do
it
'is "
created date
"'
do
visit_issues_with_state
(
project
,
'open'
)
expect
(
find
(
'.issues-other-filters'
)).
to
have_content
(
'
Last created
'
)
expect
(
find
(
'.issues-other-filters'
)).
to
have_content
(
'
Created date
'
)
expect
(
first_issue
).
to
include
(
last_created_issuable
.
title
)
expect
(
last_issue
).
to
include
(
first_created_issuable
.
title
)
end
...
...
@@ -141,10 +141,10 @@ describe 'Projects > Issuables > Default sort order' do
context
'in the "issues / all" tab'
,
js:
true
do
let
(
:issuable_type
)
{
:issue
}
it
'is "
last created
"'
do
it
'is "
created date
"'
do
visit_issues_with_state
(
project
,
'all'
)
expect
(
find
(
'.issues-other-filters'
)).
to
have_content
(
'
Last created
'
)
expect
(
find
(
'.issues-other-filters'
)).
to
have_content
(
'
Created date
'
)
expect
(
first_issue
).
to
include
(
last_created_issuable
.
title
)
expect
(
last_issue
).
to
include
(
first_created_issuable
.
title
)
end
...
...
@@ -157,26 +157,12 @@ describe 'Projects > Issuables > Default sort order' do
visit_issues
(
project
,
sort:
'id_desc'
)
end
it
'shows the sort order as
last created
'
do
expect
(
find
(
'.issues-other-filters'
)).
to
have_content
(
'
Last created
'
)
it
'shows the sort order as
created date
'
do
expect
(
find
(
'.issues-other-filters'
)).
to
have_content
(
'
Created date
'
)
expect
(
first_issue
).
to
include
(
last_created_issuable
.
title
)
expect
(
last_issue
).
to
include
(
first_created_issuable
.
title
)
end
end
context
'when the sort in the URL is id_asc'
do
let
(
:issuable_type
)
{
:issue
}
before
do
visit_issues
(
project
,
sort:
'id_asc'
)
end
it
'shows the sort order as oldest created'
do
expect
(
find
(
'.issues-other-filters'
)).
to
have_content
(
'Oldest created'
)
expect
(
first_issue
).
to
include
(
first_created_issuable
.
title
)
expect
(
last_issue
).
to
include
(
last_created_issuable
.
title
)
end
end
end
def
selected_sort_order
...
...
spec/features/issues/filtered_search/filter_issues_spec.rb
View file @
c6728e13
...
...
@@ -422,20 +422,18 @@ describe 'Filter issues', js: true do
end
context
'sorting'
do
it
'sorts by
oldest updated
'
do
create
(
:issue
,
it
'sorts by
created date
'
do
new_issue
=
create
(
:issue
,
title:
'3 days ago'
,
project:
project
,
author:
user
,
created_at:
3
.
days
.
ago
,
updated_at:
3
.
days
.
ago
)
created_at:
3
.
days
.
ago
)
old_issue
=
create
(
:issue
,
create
(
:issue
,
title:
'5 days ago'
,
project:
project
,
author:
user
,
created_at:
5
.
days
.
ago
,
updated_at:
5
.
days
.
ago
)
created_at:
5
.
days
.
ago
)
input_filtered_search
(
'days ago'
)
...
...
@@ -444,10 +442,10 @@ describe 'Filter issues', js: true do
sort_toggle
=
find
(
'.filtered-search-wrapper .dropdown-toggle'
)
sort_toggle
.
click
find
(
'.filtered-search-wrapper .dropdown-menu li a'
,
text:
'
Oldest updated
'
).
click
find
(
'.filtered-search-wrapper .dropdown-menu li a'
,
text:
'
Created date
'
).
click
wait_for_requests
expect
(
find
(
'.issues-list .issue:first-of-type .issue-title-text a'
)).
to
have_content
(
old
_issue
.
title
)
expect
(
find
(
'.issues-list .issue:first-of-type .issue-title-text a'
)).
to
have_content
(
new
_issue
.
title
)
end
end
end
...
...
spec/features/issues_spec.rb
View file @
c6728e13
...
...
@@ -201,19 +201,12 @@ describe 'Issues' do
let
(
:later_due_milestone
)
{
create
(
:milestone
,
due_date:
'2013-12-12'
)
}
it
'sorts by newest'
do
visit
project_issues_path
(
project
,
sort:
sort_value_
recently_created
)
visit
project_issues_path
(
project
,
sort:
sort_value_
created_date
)
expect
(
first_issue
).
to
include
(
'foo'
)
expect
(
last_issue
).
to
include
(
'baz'
)
end
it
'sorts by oldest'
do
visit
project_issues_path
(
project
,
sort:
sort_value_oldest_created
)
expect
(
first_issue
).
to
include
(
'baz'
)
expect
(
last_issue
).
to
include
(
'foo'
)
end
it
'sorts by most recently updated'
do
baz
.
updated_at
=
Time
.
now
+
100
baz
.
save
...
...
@@ -222,36 +215,22 @@ describe 'Issues' do
expect
(
first_issue
).
to
include
(
'baz'
)
end
it
'sorts by least recently updated'
do
baz
.
updated_at
=
Time
.
now
-
100
baz
.
save
visit
project_issues_path
(
project
,
sort:
sort_value_oldest_updated
)
expect
(
first_issue
).
to
include
(
'baz'
)
end
describe
'sorting by due date'
do
before
do
foo
.
update
(
due_date:
1
.
day
.
from_now
)
bar
.
update
(
due_date:
6
.
days
.
from_now
)
end
it
'sorts by
recently
due date'
do
visit
project_issues_path
(
project
,
sort:
sort_value_due_date
_soon
)
it
'sorts by due date'
do
visit
project_issues_path
(
project
,
sort:
sort_value_due_date
)
expect
(
first_issue
).
to
include
(
'foo'
)
end
it
'sorts by least recently due date'
do
visit
project_issues_path
(
project
,
sort:
sort_value_due_date_later
)
expect
(
first_issue
).
to
include
(
'bar'
)
end
it
'sorts by least recently due date by excluding nil due dates'
do
it
'sorts by due date by excluding nil due dates'
do
bar
.
update
(
due_date:
nil
)
visit
project_issues_path
(
project
,
sort:
sort_value_due_date
_later
)
visit
project_issues_path
(
project
,
sort:
sort_value_due_date
)
expect
(
first_issue
).
to
include
(
'foo'
)
end
...
...
@@ -350,19 +329,12 @@ describe 'Issues' do
bar
.
save
end
it
'sorts by
recently due
milestone'
do
visit
project_issues_path
(
project
,
sort:
sort_value_milestone
_soon
)
it
'sorts by milestone'
do
visit
project_issues_path
(
project
,
sort:
sort_value_milestone
)
expect
(
first_issue
).
to
include
(
'foo'
)
expect
(
last_issue
).
to
include
(
'baz'
)
end
it
'sorts by least recently due milestone'
do
visit
project_issues_path
(
project
,
sort:
sort_value_milestone_later
)
expect
(
first_issue
).
to
include
(
'bar'
)
expect
(
last_issue
).
to
include
(
'baz'
)
end
end
describe
'combine filter and sort'
do
...
...
@@ -376,13 +348,11 @@ describe 'Issues' do
end
it
'sorts with a filter applied'
do
visit
project_issues_path
(
project
,
sort:
sort_value_oldest_created
,
assignee_id:
user2
.
id
)
visit
project_issues_path
(
project
,
sort:
sort_value_created_date
,
assignee_id:
user2
.
id
)
expect
(
first_issue
).
to
include
(
'
bar
'
)
expect
(
last_issue
).
to
include
(
'
foo
'
)
expect
(
page
).
not_to
have_content
'baz'
expect
(
first_issue
).
to
include
(
'
foo
'
)
expect
(
last_issue
).
to
include
(
'
bar
'
)
expect
(
page
).
not_to
have_content
(
'baz'
)
end
end
end
...
...
spec/features/merge_requests/filter_merge_requests_spec.rb
View file @
c6728e13
...
...
@@ -277,9 +277,9 @@ describe 'Filter merge requests' do
expect_mr_list_count
(
2
)
click_button
'
Last created
'
click_button
'
Created date
'
page
.
within
'.dropdown-menu-sort'
do
click_link
'
Oldest created
'
click_link
'
Priority
'
end
wait_for_requests
...
...
spec/features/merge_requests/user_lists_merge_requests_spec.rb
View file @
c6728e13
...
...
@@ -52,21 +52,13 @@ describe 'Projects > Merge requests > User lists merge requests' do
end
it
'sorts by newest'
do
visit_merge_requests
(
project
,
sort:
sort_value_
recently_created
)
visit_merge_requests
(
project
,
sort:
sort_value_
created_date
)
expect
(
first_merge_request
).
to
include
(
'fix'
)
expect
(
last_merge_request
).
to
include
(
'merge-test'
)
expect
(
count_merge_requests
).
to
eq
(
3
)
end
it
'sorts by oldest'
do
visit_merge_requests
(
project
,
sort:
sort_value_oldest_created
)
expect
(
first_merge_request
).
to
include
(
'merge-test'
)
expect
(
last_merge_request
).
to
include
(
'fix'
)
expect
(
count_merge_requests
).
to
eq
(
3
)
end
it
'sorts by last updated'
do
visit_merge_requests
(
project
,
sort:
sort_value_recently_updated
)
...
...
@@ -74,33 +66,19 @@ describe 'Projects > Merge requests > User lists merge requests' do
expect
(
count_merge_requests
).
to
eq
(
3
)
end
it
'sorts by oldest updated'
do
visit_merge_requests
(
project
,
sort:
sort_value_oldest_updated
)
expect
(
first_merge_request
).
to
include
(
'markdown'
)
expect
(
count_merge_requests
).
to
eq
(
3
)
end
it
'sorts by milestone due soon'
do
visit_merge_requests
(
project
,
sort:
sort_value_milestone_soon
)
it
'sorts by milestone'
do
visit_merge_requests
(
project
,
sort:
sort_value_milestone
)
expect
(
first_merge_request
).
to
include
(
'fix'
)
expect
(
count_merge_requests
).
to
eq
(
3
)
end
it
'sorts by milestone due later'
do
visit_merge_requests
(
project
,
sort:
sort_value_milestone_later
)
expect
(
first_merge_request
).
to
include
(
'markdown'
)
expect
(
count_merge_requests
).
to
eq
(
3
)
end
it
'filters on one label and sorts by due soon'
do
it
'filters on one label and sorts by due date'
do
label
=
create
(
:label
,
project:
project
)
create
(
:label_link
,
label:
label
,
target:
@fix
)
visit_merge_requests
(
project
,
label_name:
[
label
.
name
],
sort:
sort_value_due_date
_soon
)
sort:
sort_value_due_date
)
expect
(
first_merge_request
).
to
include
(
'fix'
)
expect
(
count_merge_requests
).
to
eq
(
1
)
...
...
@@ -115,9 +93,9 @@ describe 'Projects > Merge requests > User lists merge requests' do
create
(
:label_link
,
label:
label2
,
target:
@fix
)
end
it
'sorts by due
soon
'
do
it
'sorts by due
date
'
do
visit_merge_requests
(
project
,
label_name:
[
label
.
name
,
label2
.
name
],
sort:
sort_value_due_date
_soon
)
sort:
sort_value_due_date
)
expect
(
first_merge_request
).
to
include
(
'fix'
)
expect
(
count_merge_requests
).
to
eq
(
1
)
...
...
@@ -127,7 +105,7 @@ describe 'Projects > Merge requests > User lists merge requests' do
it
'sorts by due soon'
do
visit_merge_requests
(
project
,
label_name:
[
label
.
name
,
label2
.
name
],
assignee_id:
user
.
id
,
sort:
sort_value_due_date
_soon
)
sort:
sort_value_due_date
)
expect
(
first_merge_request
).
to
include
(
'fix'
)
expect
(
count_merge_requests
).
to
eq
(
1
)
...
...
@@ -137,7 +115,7 @@ describe 'Projects > Merge requests > User lists merge requests' do
visit
project_merge_requests_path
(
project
,
label_name:
[
label
.
name
,
label2
.
name
],
assignee_id:
user
.
id
,
sort:
sort_value_milestone
_soon
)
sort:
sort_value_milestone
)
expect
(
first_merge_request
).
to
include
(
'fix'
)
end
...
...
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