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
d3f5e78b
Commit
d3f5e78b
authored
Jul 24, 2017
by
Rémy Coutable
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '28202_decrease_abc_threshold_step2' into 'master'
Decrease ABC threshold to 56.96 See merge request !11227
parents
56977be3
fab1b0f1
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
177 additions
and
13 deletions
+177
-13
.rubocop.yml
.rubocop.yml
+1
-1
app/controllers/admin/projects_controller.rb
app/controllers/admin/projects_controller.rb
+3
-12
app/finders/admin/projects_finder.rb
app/finders/admin/projects_finder.rb
+33
-0
changelogs/unreleased/28202_decrease_abc_threshold_step2.yml
changelogs/unreleased/28202_decrease_abc_threshold_step2.yml
+4
-0
spec/finders/admin/projects_finder_spec.rb
spec/finders/admin/projects_finder_spec.rb
+136
-0
No files found.
.rubocop.yml
View file @
d3f5e78b
...
...
@@ -563,7 +563,7 @@ Style/Proc:
# branches, and conditions.
Metrics/AbcSize
:
Enabled
:
true
Max
:
5
7.08
Max
:
5
6.96
# This cop checks if the length of a block exceeds some maximum value.
Metrics/BlockLength
:
...
...
app/controllers/admin/projects_controller.rb
View file @
d3f5e78b
...
...
@@ -3,18 +3,9 @@ class Admin::ProjectsController < Admin::ApplicationController
before_action
:group
,
only:
[
:show
,
:transfer
]
def
index
params
[
:sort
]
||=
'latest_activity_desc'
@projects
=
Project
.
with_statistics
@projects
=
@projects
.
in_namespace
(
params
[
:namespace_id
])
if
params
[
:namespace_id
].
present?
@projects
=
@projects
.
where
(
visibility_level:
params
[
:visibility_level
])
if
params
[
:visibility_level
].
present?
@projects
=
@projects
.
with_push
if
params
[
:with_push
].
present?
@projects
=
@projects
.
abandoned
if
params
[
:abandoned
].
present?
@projects
=
@projects
.
where
(
last_repository_check_failed:
true
)
if
params
[
:last_repository_check_failed
].
present?
@projects
=
@projects
.
non_archived
unless
params
[
:archived
].
present?
@projects
=
@projects
.
personal
(
current_user
)
if
params
[
:personal
].
present?
@projects
=
@projects
.
search
(
params
[
:name
])
if
params
[
:name
].
present?
@projects
=
@projects
.
sort
(
@sort
=
params
[
:sort
])
@projects
=
@projects
.
includes
(
:namespace
).
order
(
"namespaces.path, projects.name ASC"
).
page
(
params
[
:page
])
finder
=
Admin
::
ProjectsFinder
.
new
(
params:
params
,
current_user:
current_user
)
@projects
=
finder
.
execute
@sort
=
finder
.
sort
respond_to
do
|
format
|
format
.
html
...
...
app/finders/admin/projects_finder.rb
0 → 100644
View file @
d3f5e78b
class
Admin::ProjectsFinder
attr_reader
:sort
,
:namespace_id
,
:visibility_level
,
:with_push
,
:abandoned
,
:last_repository_check_failed
,
:archived
,
:personal
,
:name
,
:page
,
:current_user
def
initialize
(
params
:,
current_user
:)
@current_user
=
current_user
@sort
=
params
.
fetch
(
:sort
)
{
'latest_activity_desc'
}
@namespace_id
=
params
[
:namespace_id
]
@visibility_level
=
params
[
:visibility_level
]
@with_push
=
params
[
:with_push
]
@abandoned
=
params
[
:abandoned
]
@last_repository_check_failed
=
params
[
:last_repository_check_failed
]
@archived
=
params
[
:archived
]
@personal
=
params
[
:personal
]
@name
=
params
[
:name
]
@page
=
params
[
:page
]
end
def
execute
items
=
Project
.
with_statistics
items
=
items
.
in_namespace
(
namespace_id
)
if
namespace_id
.
present?
items
=
items
.
where
(
visibility_level:
visibility_level
)
if
visibility_level
.
present?
items
=
items
.
with_push
if
with_push
.
present?
items
=
items
.
abandoned
if
abandoned
.
present?
items
=
items
.
where
(
last_repository_check_failed:
true
)
if
last_repository_check_failed
.
present?
items
=
items
.
non_archived
unless
archived
.
present?
items
=
items
.
personal
(
current_user
)
if
personal
.
present?
items
=
items
.
search
(
name
)
if
name
.
present?
items
=
items
.
sort
(
sort
)
items
.
includes
(
:namespace
).
order
(
"namespaces.path, projects.name ASC"
).
page
(
page
)
end
end
changelogs/unreleased/28202_decrease_abc_threshold_step2.yml
0 → 100644
View file @
d3f5e78b
---
title
:
Decrease ABC threshold to
56.96
merge_request
:
11227
author
:
Maxim Rydkin
spec/finders/admin/projects_finder_spec.rb
0 → 100644
View file @
d3f5e78b
require
'spec_helper'
describe
Admin
::
ProjectsFinder
do
describe
'#execute'
do
let
(
:user
)
{
create
(
:user
)
}
let
(
:group
)
{
create
(
:group
,
:public
)
}
let!
(
:private_project
)
do
create
(
:empty_project
,
:private
,
name:
'A'
,
path:
'A'
)
end
let!
(
:internal_project
)
do
create
(
:empty_project
,
:internal
,
group:
group
,
name:
'B'
,
path:
'B'
)
end
let!
(
:public_project
)
do
create
(
:empty_project
,
:public
,
group:
group
,
name:
'C'
,
path:
'C'
)
end
let!
(
:shared_project
)
do
create
(
:empty_project
,
:private
,
name:
'D'
,
path:
'D'
)
end
let
(
:params
)
{
{}
}
let
(
:current_user
)
{
user
}
let
(
:project_ids_relation
)
{
nil
}
let
(
:finder
)
{
described_class
.
new
(
params:
params
,
current_user:
current_user
)
}
subject
{
finder
.
execute
.
to_a
}
context
'without a user'
do
let
(
:current_user
)
{
nil
}
it
{
is_expected
.
to
eq
([
shared_project
,
public_project
,
internal_project
,
private_project
])
}
end
context
'with a user'
do
it
{
is_expected
.
to
eq
([
shared_project
,
public_project
,
internal_project
,
private_project
])
}
end
context
'filter by namespace_id'
do
let
(
:namespace
)
{
create
(
:namespace
)
}
let!
(
:project_in_namespace
)
{
create
(
:empty_project
,
namespace:
namespace
)
}
let
(
:params
)
{
{
namespace_id:
namespace
.
id
}
}
it
{
is_expected
.
to
eq
([
project_in_namespace
])
}
end
context
'filter by visibility_level'
do
before
do
private_project
.
add_master
(
user
)
end
context
'private'
do
let
(
:params
)
{
{
visibility_level:
Gitlab
::
VisibilityLevel
::
PRIVATE
}
}
it
{
is_expected
.
to
eq
([
shared_project
,
private_project
])
}
end
context
'internal'
do
let
(
:params
)
{
{
visibility_level:
Gitlab
::
VisibilityLevel
::
INTERNAL
}
}
it
{
is_expected
.
to
eq
([
internal_project
])
}
end
context
'public'
do
let
(
:params
)
{
{
visibility_level:
Gitlab
::
VisibilityLevel
::
PUBLIC
}
}
it
{
is_expected
.
to
eq
([
public_project
])
}
end
end
context
'filter by push'
do
let
(
:pushed_event
)
{
create
(
:event
,
:pushed
)
}
let!
(
:project_with_push
)
{
pushed_event
.
project
}
let
(
:params
)
{
{
with_push:
true
}
}
it
{
is_expected
.
to
eq
([
project_with_push
])
}
end
context
'filter by abandoned'
do
before
do
private_project
.
update
(
last_activity_at:
Time
.
zone
.
now
-
6
.
months
-
1
.
minute
)
end
let
(
:params
)
{
{
abandoned:
true
}
}
it
{
is_expected
.
to
eq
([
private_project
])
}
end
context
'filter by last_repository_check_failed'
do
before
do
private_project
.
update
(
last_repository_check_failed:
true
)
end
let
(
:params
)
{
{
last_repository_check_failed:
true
}
}
it
{
is_expected
.
to
eq
([
private_project
])
}
end
context
'filter by archived'
do
let!
(
:archived_project
)
{
create
(
:empty_project
,
:public
,
:archived
,
name:
'E'
,
path:
'E'
)
}
context
'archived=false'
do
let
(
:params
)
{
{
archived:
false
}
}
it
{
is_expected
.
to
match_array
([
shared_project
,
public_project
,
internal_project
,
private_project
])
}
end
context
'archived=true'
do
let
(
:params
)
{
{
archived:
true
}
}
it
{
is_expected
.
to
match_array
([
archived_project
,
shared_project
,
public_project
,
internal_project
,
private_project
])
}
end
end
context
'filter by personal'
do
let!
(
:personal_project
)
{
create
(
:empty_project
,
namespace:
user
.
namespace
)
}
let
(
:params
)
{
{
personal:
true
}
}
it
{
is_expected
.
to
eq
([
personal_project
])
}
end
context
'filter by name'
do
let
(
:params
)
{
{
name:
'C'
}
}
it
{
is_expected
.
to
eq
([
shared_project
,
public_project
,
private_project
])
}
end
context
'sorting'
do
let
(
:params
)
{
{
sort:
'name_asc'
}
}
it
{
is_expected
.
to
eq
([
private_project
,
internal_project
,
public_project
,
shared_project
])
}
end
end
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