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
0
Merge Requests
0
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
iv
gitlab-ce
Commits
af18cddd
Commit
af18cddd
authored
Apr 20, 2016
by
James Lopez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
udpated a few things based on MR feedback. Also added model spec
parent
8619208b
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
203 additions
and
176 deletions
+203
-176
app/finders/issuable_finder.rb
app/finders/issuable_finder.rb
+2
-3
app/helpers/milestones_helper.rb
app/helpers/milestones_helper.rb
+1
-1
app/models/concerns/issuable.rb
app/models/concerns/issuable.rb
+8
-1
spec/features/issues/filter_by_labels_spec.rb
spec/features/issues/filter_by_labels_spec.rb
+167
-170
spec/models/concerns/issuable_spec.rb
spec/models/concerns/issuable_spec.rb
+25
-1
No files found.
app/finders/issuable_finder.rb
View file @
af18cddd
...
@@ -270,8 +270,7 @@ class IssuableFinder
...
@@ -270,8 +270,7 @@ class IssuableFinder
if
filter_by_no_label?
if
filter_by_no_label?
items
=
items
.
without_label
items
=
items
.
without_label
else
else
items
=
items
.
with_label
(
label_names
.
flatten
)
items
=
items
.
with_label
(
label_names
)
if
projects
if
projects
items
=
items
.
where
(
labels:
{
project_id:
projects
})
items
=
items
.
where
(
labels:
{
project_id:
projects
})
end
end
...
@@ -282,7 +281,7 @@ class IssuableFinder
...
@@ -282,7 +281,7 @@ class IssuableFinder
end
end
def
label_names
def
label_names
params
[
:label_name
].
split
(
','
)
params
[
:label_name
].
is_a?
(
String
)
?
params
[
:label_name
].
split
(
','
)
:
params
[
:label_name
]
end
end
def
current_user_related?
def
current_user_related?
...
...
app/helpers/milestones_helper.rb
View file @
af18cddd
...
@@ -32,7 +32,7 @@ module MilestonesHelper
...
@@ -32,7 +32,7 @@ module MilestonesHelper
end
end
def
milestone_issues_by_label_count
(
milestone
,
label
,
state
:)
def
milestone_issues_by_label_count
(
milestone
,
label
,
state
:)
milestone
.
issues
.
with_label
(
[
label
.
title
]
).
send
(
state
).
size
milestone
.
issues
.
with_label
(
label
.
title
).
send
(
state
).
size
end
end
def
milestone_progress_bar
(
milestone
)
def
milestone_progress_bar
(
milestone
)
...
...
app/models/concerns/issuable.rb
View file @
af18cddd
...
@@ -37,7 +37,6 @@ module Issuable
...
@@ -37,7 +37,6 @@ module Issuable
scope
:closed
,
->
{
with_state
(
:closed
)
}
scope
:closed
,
->
{
with_state
(
:closed
)
}
scope
:order_milestone_due_desc
,
->
{
joins
(
:milestone
).
reorder
(
'milestones.due_date DESC, milestones.id DESC'
)
}
scope
:order_milestone_due_desc
,
->
{
joins
(
:milestone
).
reorder
(
'milestones.due_date DESC, milestones.id DESC'
)
}
scope
:order_milestone_due_asc
,
->
{
joins
(
:milestone
).
reorder
(
'milestones.due_date ASC, milestones.id ASC'
)
}
scope
:order_milestone_due_asc
,
->
{
joins
(
:milestone
).
reorder
(
'milestones.due_date ASC, milestones.id ASC'
)
}
scope
:with_label
,
->
(
title
)
{
joins
(
:labels
).
where
(
labels:
{
title:
title
}).
group
(
'issues.id'
).
having
(
"count(distinct labels.title) =
#{
title
.
count
}
"
)
}
scope
:without_label
,
->
{
joins
(
"LEFT OUTER JOIN label_links ON label_links.target_type = '
#{
name
}
' AND label_links.target_id =
#{
table_name
}
.id"
).
where
(
label_links:
{
id:
nil
})
}
scope
:without_label
,
->
{
joins
(
"LEFT OUTER JOIN label_links ON label_links.target_type = '
#{
name
}
' AND label_links.target_id =
#{
table_name
}
.id"
).
where
(
label_links:
{
id:
nil
})
}
scope
:join_project
,
->
{
joins
(
:project
)
}
scope
:join_project
,
->
{
joins
(
:project
)
}
...
@@ -122,6 +121,14 @@ module Issuable
...
@@ -122,6 +121,14 @@ module Issuable
joins
(
join_clause
).
group
(
issuable_table
[
:id
]).
reorder
(
"COUNT(notes.id) DESC"
)
joins
(
join_clause
).
group
(
issuable_table
[
:id
]).
reorder
(
"COUNT(notes.id) DESC"
)
end
end
def
with_label
(
title
)
if
title
.
is_a?
(
Array
)
&&
title
.
count
>
1
joins
(
:labels
).
where
(
labels:
{
title:
title
}).
group
(
'issues.id'
).
having
(
"count(distinct labels.title) =
#{
title
.
count
}
"
)
else
joins
(
:labels
).
where
(
labels:
{
title:
title
})
end
end
end
end
def
today?
def
today?
...
...
spec/features/issues/filter_by_labels_spec.rb
View file @
af18cddd
This diff is collapsed.
Click to expand it.
spec/models/concerns/issuable_spec.rb
View file @
af18cddd
...
@@ -212,4 +212,28 @@ describe Issue, "Issuable" do
...
@@ -212,4 +212,28 @@ describe Issue, "Issuable" do
expect
(
issue
.
downvotes
).
to
eq
(
1
)
expect
(
issue
.
downvotes
).
to
eq
(
1
)
end
end
end
end
end
describe
".with_label"
do
let
(
:example_label
)
{
'test1'
}
let
(
:example_labels
)
{
[
'test1'
,
'test2'
]
}
it
'finds issue with 1 label'
do
setup_labels
([
example_label
])
expect
(
Issue
.
with_label
(
example_label
).
count
).
to
eq
(
1
)
end
it
'finds issue with 2 labels'
do
setup_labels
(
example_labels
)
expect
(
Issue
.
with_label
(
example_labels
).
to_a
.
count
).
to
eq
(
1
)
end
def
setup_labels
(
label_names
)
labels
=
label_names
.
map
do
|
label
|
create
(
:label
,
project:
issue
.
project
,
title:
label
)
end
issue
.
labels
<<
labels
end
end
end
\ No newline at end of file
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