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
a67311cb
Commit
a67311cb
authored
Nov 23, 2016
by
James Lopez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix other spec failures
parent
02e1e481
Changes
20
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
128 additions
and
131 deletions
+128
-131
app/controllers/concerns/cycle_analytics_params.rb
app/controllers/concerns/cycle_analytics_params.rb
+2
-2
app/controllers/projects/cycle_analytics/events_controller.rb
...controllers/projects/cycle_analytics/events_controller.rb
+13
-13
app/controllers/projects/cycle_analytics_controller.rb
app/controllers/projects/cycle_analytics_controller.rb
+2
-2
app/models/cycle_analytics.rb
app/models/cycle_analytics.rb
+7
-4
lib/gitlab/cycle_analytics/base_event.rb
lib/gitlab/cycle_analytics/base_event.rb
+2
-1
lib/gitlab/cycle_analytics/base_stage.rb
lib/gitlab/cycle_analytics/base_stage.rb
+1
-1
lib/gitlab/cycle_analytics/events.rb
lib/gitlab/cycle_analytics/events.rb
+0
-38
lib/gitlab/cycle_analytics/stage_summary.rb
lib/gitlab/cycle_analytics/stage_summary.rb
+1
-3
lib/gitlab/cycle_analytics/summary/base.rb
lib/gitlab/cycle_analytics/summary/base.rb
+1
-1
spec/lib/gitlab/cycle_analytics/code_event_spec.rb
spec/lib/gitlab/cycle_analytics/code_event_spec.rb
+2
-0
spec/lib/gitlab/cycle_analytics/events_spec.rb
spec/lib/gitlab/cycle_analytics/events_spec.rb
+75
-62
spec/lib/gitlab/cycle_analytics/issue_event_spec.rb
spec/lib/gitlab/cycle_analytics/issue_event_spec.rb
+2
-0
spec/lib/gitlab/cycle_analytics/plan_event_spec.rb
spec/lib/gitlab/cycle_analytics/plan_event_spec.rb
+2
-0
spec/lib/gitlab/cycle_analytics/production_event_spec.rb
spec/lib/gitlab/cycle_analytics/production_event_spec.rb
+2
-0
spec/lib/gitlab/cycle_analytics/review_event_spec.rb
spec/lib/gitlab/cycle_analytics/review_event_spec.rb
+2
-0
spec/lib/gitlab/cycle_analytics/shared_event_spec.rb
spec/lib/gitlab/cycle_analytics/shared_event_spec.rb
+7
-1
spec/lib/gitlab/cycle_analytics/staging_event_spec.rb
spec/lib/gitlab/cycle_analytics/staging_event_spec.rb
+2
-0
spec/lib/gitlab/cycle_analytics/test_event_spec.rb
spec/lib/gitlab/cycle_analytics/test_event_spec.rb
+2
-0
spec/models/cycle_analytics/summary_spec.rb
spec/models/cycle_analytics/summary_spec.rb
+1
-1
spec/serializers/analytics_summary_serializer_spec.rb
spec/serializers/analytics_summary_serializer_spec.rb
+2
-2
No files found.
app/controllers/concerns/cycle_analytics_params.rb
View file @
a67311cb
module
CycleAnalyticsParams
module
CycleAnalyticsParams
extend
ActiveSupport
::
Concern
extend
ActiveSupport
::
Concern
def
options
def
options
(
params
)
@options
||=
{
from:
start_date
(
events_
params
),
current_user:
current_user
}
@options
||=
{
from:
start_date
(
params
),
current_user:
current_user
}
end
end
def
start_date
(
params
)
def
start_date
(
params
)
...
...
app/controllers/projects/cycle_analytics/events_controller.rb
View file @
a67311cb
...
@@ -9,46 +9,46 @@ module Projects
...
@@ -9,46 +9,46 @@ module Projects
before_action
:authorize_read_merge_request!
,
only:
[
:code
,
:review
]
before_action
:authorize_read_merge_request!
,
only:
[
:code
,
:review
]
def
issue
def
issue
render_events
(
events
.
issue_events
)
render_events
(
cycle_analytics
.
events_for
(
:issue
)
)
end
end
def
plan
def
plan
render_events
(
events
.
plan_events
)
render_events
(
cycle_analytics
.
events_for
(
:plan
)
)
end
end
def
code
def
code
render_events
(
events
.
code_events
)
render_events
(
cycle_analytics
.
events_for
(
:code
)
)
end
end
def
test
def
test
options
[
:branch
]
=
events_params
[
:branch_name
]
options
(
events_params
)
[
:branch
]
=
events_params
[
:branch_name
]
render_events
(
events
.
test_events
)
render_events
(
cycle_analytics
.
events_for
(
:test
)
)
end
end
def
review
def
review
render_events
(
events
.
review_events
)
render_events
(
cycle_analytics
.
events_for
(
:review
)
)
end
end
def
staging
def
staging
render_events
(
events
.
staging_events
)
render_events
(
cycle_analytics
.
events_for
(
:staging
)
)
end
end
def
production
def
production
render_events
(
events
.
production_events
)
render_events
(
cycle_analytics
.
events_for
(
:production
)
)
end
end
private
private
def
render_events
(
events
_list
)
def
render_events
(
events
)
respond_to
do
|
format
|
respond_to
do
|
format
|
format
.
html
format
.
html
format
.
json
{
render
json:
{
events:
events
_list
}
}
format
.
json
{
render
json:
{
events:
events
}
}
end
end
end
end
def
event
s
def
cycle_analytic
s
@
events
||=
Gitlab
::
CycleAnalytics
::
Events
.
new
(
project:
project
,
options:
options
)
@
cycle_analytics
||=
::
CycleAnalytics
.
new
(
project
,
options:
options
(
events_params
)
)
end
end
def
events_params
def
events_params
...
...
app/controllers/projects/cycle_analytics_controller.rb
View file @
a67311cb
...
@@ -6,7 +6,7 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
...
@@ -6,7 +6,7 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
before_action
:authorize_read_cycle_analytics!
before_action
:authorize_read_cycle_analytics!
def
show
def
show
@cycle_analytics
=
::
CycleAnalytics
.
new
(
@project
,
options:
options
)
@cycle_analytics
=
::
CycleAnalytics
.
new
(
@project
,
options:
options
(
cycle_analytics_params
)
)
@cycle_analytics_no_data
=
@cycle_analytics
.
no_stats?
@cycle_analytics_no_data
=
@cycle_analytics
.
no_stats?
...
@@ -21,7 +21,7 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
...
@@ -21,7 +21,7 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
def
cycle_analytics_params
def
cycle_analytics_params
return
{}
unless
params
[
:cycle_analytics
].
present?
return
{}
unless
params
[
:cycle_analytics
].
present?
{
start_date:
params
[
:cycle_analytics
][
:start_date
]
}
params
[
:cycle_analytics
].
slice
(
:start_date
)
end
end
def
cycle_analytics_json
def
cycle_analytics_json
...
...
app/models/cycle_analytics.rb
View file @
a67311cb
...
@@ -7,7 +7,7 @@ class CycleAnalytics
...
@@ -7,7 +7,7 @@ class CycleAnalytics
end
end
def
summary
def
summary
@summary
||=
Gitlab
::
CycleAnalytics
::
Summary
.
new
(
@project
,
from:
@options
[
:from
]).
data
@summary
||=
::
Gitlab
::
CycleAnalytics
::
Stage
Summary
.
new
(
@project
,
from:
@options
[
:from
]).
data
end
end
def
stats
def
stats
...
@@ -15,23 +15,26 @@ class CycleAnalytics
...
@@ -15,23 +15,26 @@ class CycleAnalytics
end
end
def
no_stats?
def
no_stats?
stats
.
map
(
&
:value
)
.
compact
.
empty?
stats
.
map
{
|
hash
|
hash
[
:value
]
}
.
compact
.
empty?
end
end
def
permissions
(
user
:)
def
permissions
(
user
:)
Gitlab
::
CycleAnalytics
::
Permissions
.
get
(
user:
user
,
project:
@project
)
Gitlab
::
CycleAnalytics
::
Permissions
.
get
(
user:
user
,
project:
@project
)
end
end
def
events_for
(
stage
)
classify_stage
(
stage
).
new
(
project:
@project
,
options:
@options
,
stage:
stage
).
events
end
private
private
def
stats_per_stage
def
stats_per_stage
STAGES
.
map
do
|
stage_name
|
STAGES
.
map
do
|
stage_name
|
classify_stage
(
method_sym
).
new
(
project:
@project
,
options:
@options
,
stage:
stage_name
).
median_data
classify_stage
(
stage_name
).
new
(
project:
@project
,
options:
@options
,
stage:
stage_name
).
median_data
end
end
end
end
def
classify_stage
(
stage_name
)
def
classify_stage
(
stage_name
)
"Gitlab::CycleAnalytics::
#{
stage_name
.
to_s
.
capitalize
}
Stage"
.
constantize
"Gitlab::CycleAnalytics::
#{
stage_name
.
to_s
.
capitalize
}
Stage"
.
constantize
end
end
end
end
lib/gitlab/cycle_analytics/base_event.rb
View file @
a67311cb
...
@@ -5,10 +5,11 @@ module Gitlab
...
@@ -5,10 +5,11 @@ module Gitlab
attr_reader
:stage
,
:start_time_attrs
,
:end_time_attrs
,
:projections
,
:query
attr_reader
:stage
,
:start_time_attrs
,
:end_time_attrs
,
:projections
,
:query
def
initialize
(
fetcher
:,
stage
:)
def
initialize
(
fetcher
:,
stage
:
,
options
:
)
@query
=
EventsQuery
.
new
(
fetcher:
fetcher
)
@query
=
EventsQuery
.
new
(
fetcher:
fetcher
)
@project
=
fetcher
.
project
@project
=
fetcher
.
project
@stage
=
stage
@stage
=
stage
@options
=
options
end
end
def
fetch
def
fetch
...
...
lib/gitlab/cycle_analytics/base_stage.rb
View file @
a67311cb
...
@@ -13,7 +13,7 @@ module Gitlab
...
@@ -13,7 +13,7 @@ module Gitlab
end
end
def
events
def
events
event_class
.
new
(
fetcher:
@fetcher
,
stage:
@stage
).
fetch
event_class
.
new
(
fetcher:
@fetcher
,
stage:
@stage
,
options:
@options
).
fetch
end
end
def
median_data
def
median_data
...
...
lib/gitlab/cycle_analytics/events.rb
deleted
100644 → 0
View file @
02e1e481
module
Gitlab
module
CycleAnalytics
class
Events
def
initialize
(
project
:,
options
:)
@project
=
project
@options
=
options
end
def
issue_events
IssueEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
plan_events
PlanEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
code_events
CodeEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
test_events
TestEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
review_events
ReviewEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
staging_events
StagingEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
def
production_events
ProductionEvent
.
new
(
project:
@project
,
options:
@options
).
fetch
end
end
end
end
lib/gitlab/cycle_analytics/summary.rb
→
lib/gitlab/cycle_analytics/s
tage_s
ummary.rb
View file @
a67311cb
module
Gitlab
module
Gitlab
module
CycleAnalytics
module
CycleAnalytics
module
Summary
class
StageSummary
extend
self
def
initialize
(
project
,
from
:)
def
initialize
(
project
,
from
:)
@project
=
project
@project
=
project
@from
=
from
@from
=
from
...
...
lib/gitlab/cycle_analytics/summary/base.rb
View file @
a67311cb
...
@@ -8,7 +8,7 @@ module Gitlab
...
@@ -8,7 +8,7 @@ module Gitlab
end
end
def
title
def
title
self
.
nam
e
self
.
class
.
name
.
demoduliz
e
end
end
def
value
def
value
...
...
spec/lib/gitlab/cycle_analytics/code_event_spec.rb
View file @
a67311cb
...
@@ -2,6 +2,8 @@ require 'spec_helper'
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
CodeEvent
do
describe
Gitlab
::
CycleAnalytics
::
CodeEvent
do
let
(
:stage_name
)
{
:code
}
it_behaves_like
'default query config'
do
it_behaves_like
'default query config'
do
it
'does not have the default order'
do
it
'does not have the default order'
do
expect
(
event
.
order
).
not_to
eq
(
event
.
start_time_attrs
)
expect
(
event
.
order
).
not_to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/events_spec.rb
View file @
a67311cb
require
'spec_helper'
require
'spec_helper'
describe
Gitlab
::
CycleAnalytics
::
Events
do
describe
'cycle analytics events'
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:project
)
{
create
(
:project
)
}
let
(
:from_date
)
{
10
.
days
.
ago
}
let
(
:from_date
)
{
10
.
days
.
ago
}
let
(
:user
)
{
create
(
:user
,
:admin
)
}
let
(
:user
)
{
create
(
:user
,
:admin
)
}
let!
(
:context
)
{
create
(
:issue
,
project:
project
,
created_at:
2
.
days
.
ago
)
}
let!
(
:context
)
{
create
(
:issue
,
project:
project
,
created_at:
2
.
days
.
ago
)
}
subject
{
described_class
.
new
(
project:
project
,
options:
{
from:
from_date
,
current_user:
user
})
}
let
(
:events
)
do
CycleAnalytics
.
new
(
project
,
options:
{
from:
from_date
,
current_user:
user
}).
events_for
(
stage
)
end
before
do
before
do
allow_any_instance_of
(
Gitlab
::
ReferenceExtractor
).
to
receive
(
:issues
).
and_return
([
context
])
allow_any_instance_of
(
Gitlab
::
ReferenceExtractor
).
to
receive
(
:issues
).
and_return
([
context
])
...
@@ -15,104 +17,112 @@ describe Gitlab::CycleAnalytics::Events do
...
@@ -15,104 +17,112 @@ describe Gitlab::CycleAnalytics::Events do
end
end
describe
'#issue_events'
do
describe
'#issue_events'
do
let
(
:stage
)
{
:issue
}
it
'has the total time'
do
it
'has the total time'
do
expect
(
subject
.
issue_
events
.
first
[
:total_time
]).
not_to
be_empty
expect
(
events
.
first
[
:total_time
]).
not_to
be_empty
end
end
it
'has a title'
do
it
'has a title'
do
expect
(
subject
.
issue_
events
.
first
[
:title
]).
to
eq
(
context
.
title
)
expect
(
events
.
first
[
:title
]).
to
eq
(
context
.
title
)
end
end
it
'has the URL'
do
it
'has the URL'
do
expect
(
subject
.
issue_
events
.
first
[
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:url
]).
not_to
be_nil
end
end
it
'has an iid'
do
it
'has an iid'
do
expect
(
subject
.
issue_
events
.
first
[
:iid
]).
to
eq
(
context
.
iid
.
to_s
)
expect
(
events
.
first
[
:iid
]).
to
eq
(
context
.
iid
.
to_s
)
end
end
it
'has a created_at timestamp'
do
it
'has a created_at timestamp'
do
expect
(
subject
.
issue_
events
.
first
[
:created_at
]).
to
end_with
(
'ago'
)
expect
(
events
.
first
[
:created_at
]).
to
end_with
(
'ago'
)
end
end
it
"has the author's URL"
do
it
"has the author's URL"
do
expect
(
subject
.
issue_
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
end
end
it
"has the author's avatar URL"
do
it
"has the author's avatar URL"
do
expect
(
subject
.
issue_
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
end
end
it
"has the author's name"
do
it
"has the author's name"
do
expect
(
subject
.
issue_
events
.
first
[
:author
][
:name
]).
to
eq
(
context
.
author
.
name
)
expect
(
events
.
first
[
:author
][
:name
]).
to
eq
(
context
.
author
.
name
)
end
end
end
end
describe
'#plan_events'
do
describe
'#plan_events'
do
let
(
:stage
)
{
:plan
}
it
'has a title'
do
it
'has a title'
do
expect
(
subject
.
plan_
events
.
first
[
:title
]).
not_to
be_nil
expect
(
events
.
first
[
:title
]).
not_to
be_nil
end
end
it
'has a sha short ID'
do
it
'has a sha short ID'
do
expect
(
subject
.
plan_
events
.
first
[
:short_sha
]).
not_to
be_nil
expect
(
events
.
first
[
:short_sha
]).
not_to
be_nil
end
end
it
'has the URL'
do
it
'has the URL'
do
expect
(
subject
.
plan_
events
.
first
[
:commit_url
]).
not_to
be_nil
expect
(
events
.
first
[
:commit_url
]).
not_to
be_nil
end
end
it
'has the total time'
do
it
'has the total time'
do
expect
(
subject
.
plan_
events
.
first
[
:total_time
]).
not_to
be_empty
expect
(
events
.
first
[
:total_time
]).
not_to
be_empty
end
end
it
"has the author's URL"
do
it
"has the author's URL"
do
expect
(
subject
.
plan_
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
end
end
it
"has the author's avatar URL"
do
it
"has the author's avatar URL"
do
expect
(
subject
.
plan_
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
end
end
it
"has the author's name"
do
it
"has the author's name"
do
expect
(
subject
.
plan_
events
.
first
[
:author
][
:name
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:name
]).
not_to
be_nil
end
end
end
end
describe
'#code_events'
do
describe
'#code_events'
do
let
(
:stage
)
{
:code
}
before
do
before
do
create_commit_referencing_issue
(
context
)
create_commit_referencing_issue
(
context
)
end
end
it
'has the total time'
do
it
'has the total time'
do
expect
(
subject
.
code_
events
.
first
[
:total_time
]).
not_to
be_empty
expect
(
events
.
first
[
:total_time
]).
not_to
be_empty
end
end
it
'has a title'
do
it
'has a title'
do
expect
(
subject
.
code_
events
.
first
[
:title
]).
to
eq
(
'Awesome merge_request'
)
expect
(
events
.
first
[
:title
]).
to
eq
(
'Awesome merge_request'
)
end
end
it
'has an iid'
do
it
'has an iid'
do
expect
(
subject
.
code_
events
.
first
[
:iid
]).
to
eq
(
context
.
iid
.
to_s
)
expect
(
events
.
first
[
:iid
]).
to
eq
(
context
.
iid
.
to_s
)
end
end
it
'has a created_at timestamp'
do
it
'has a created_at timestamp'
do
expect
(
subject
.
code_
events
.
first
[
:created_at
]).
to
end_with
(
'ago'
)
expect
(
events
.
first
[
:created_at
]).
to
end_with
(
'ago'
)
end
end
it
"has the author's URL"
do
it
"has the author's URL"
do
expect
(
subject
.
code_
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
end
end
it
"has the author's avatar URL"
do
it
"has the author's avatar URL"
do
expect
(
subject
.
code_
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
end
end
it
"has the author's name"
do
it
"has the author's name"
do
expect
(
subject
.
code_
events
.
first
[
:author
][
:name
]).
to
eq
(
MergeRequest
.
first
.
author
.
name
)
expect
(
events
.
first
[
:author
][
:name
]).
to
eq
(
MergeRequest
.
first
.
author
.
name
)
end
end
end
end
describe
'#test_events'
do
describe
'#test_events'
do
let
(
:stage
)
{
:test
}
let
(
:merge_request
)
{
MergeRequest
.
first
}
let
(
:merge_request
)
{
MergeRequest
.
first
}
let!
(
:pipeline
)
do
let!
(
:pipeline
)
do
create
(
:ci_pipeline
,
create
(
:ci_pipeline
,
...
@@ -130,83 +140,85 @@ describe Gitlab::CycleAnalytics::Events do
...
@@ -130,83 +140,85 @@ describe Gitlab::CycleAnalytics::Events do
end
end
it
'has the name'
do
it
'has the name'
do
expect
(
subject
.
test_
events
.
first
[
:name
]).
not_to
be_nil
expect
(
events
.
first
[
:name
]).
not_to
be_nil
end
end
it
'has the ID'
do
it
'has the ID'
do
expect
(
subject
.
test_
events
.
first
[
:id
]).
not_to
be_nil
expect
(
events
.
first
[
:id
]).
not_to
be_nil
end
end
it
'has the URL'
do
it
'has the URL'
do
expect
(
subject
.
test_
events
.
first
[
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:url
]).
not_to
be_nil
end
end
it
'has the branch name'
do
it
'has the branch name'
do
expect
(
subject
.
test_
events
.
first
[
:branch
]).
not_to
be_nil
expect
(
events
.
first
[
:branch
]).
not_to
be_nil
end
end
it
'has the branch URL'
do
it
'has the branch URL'
do
expect
(
subject
.
test_
events
.
first
[
:branch
][
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:branch
][
:url
]).
not_to
be_nil
end
end
it
'has the short SHA'
do
it
'has the short SHA'
do
expect
(
subject
.
test_
events
.
first
[
:short_sha
]).
not_to
be_nil
expect
(
events
.
first
[
:short_sha
]).
not_to
be_nil
end
end
it
'has the commit URL'
do
it
'has the commit URL'
do
expect
(
subject
.
test_
events
.
first
[
:commit_url
]).
not_to
be_nil
expect
(
events
.
first
[
:commit_url
]).
not_to
be_nil
end
end
it
'has the date'
do
it
'has the date'
do
expect
(
subject
.
test_
events
.
first
[
:date
]).
not_to
be_nil
expect
(
events
.
first
[
:date
]).
not_to
be_nil
end
end
it
'has the total time'
do
it
'has the total time'
do
expect
(
subject
.
test_
events
.
first
[
:total_time
]).
not_to
be_empty
expect
(
events
.
first
[
:total_time
]).
not_to
be_empty
end
end
end
end
describe
'#review_events'
do
describe
'#review_events'
do
let
(
:stage
)
{
:review
}
let!
(
:context
)
{
create
(
:issue
,
project:
project
,
created_at:
2
.
days
.
ago
)
}
let!
(
:context
)
{
create
(
:issue
,
project:
project
,
created_at:
2
.
days
.
ago
)
}
it
'has the total time'
do
it
'has the total time'
do
expect
(
subject
.
review_
events
.
first
[
:total_time
]).
not_to
be_empty
expect
(
events
.
first
[
:total_time
]).
not_to
be_empty
end
end
it
'has a title'
do
it
'has a title'
do
expect
(
subject
.
review_
events
.
first
[
:title
]).
to
eq
(
'Awesome merge_request'
)
expect
(
events
.
first
[
:title
]).
to
eq
(
'Awesome merge_request'
)
end
end
it
'has an iid'
do
it
'has an iid'
do
expect
(
subject
.
review_
events
.
first
[
:iid
]).
to
eq
(
context
.
iid
.
to_s
)
expect
(
events
.
first
[
:iid
]).
to
eq
(
context
.
iid
.
to_s
)
end
end
it
'has the URL'
do
it
'has the URL'
do
expect
(
subject
.
review_
events
.
first
[
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:url
]).
not_to
be_nil
end
end
it
'has a state'
do
it
'has a state'
do
expect
(
subject
.
review_
events
.
first
[
:state
]).
not_to
be_nil
expect
(
events
.
first
[
:state
]).
not_to
be_nil
end
end
it
'has a created_at timestamp'
do
it
'has a created_at timestamp'
do
expect
(
subject
.
review_
events
.
first
[
:created_at
]).
not_to
be_nil
expect
(
events
.
first
[
:created_at
]).
not_to
be_nil
end
end
it
"has the author's URL"
do
it
"has the author's URL"
do
expect
(
subject
.
review_
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
end
end
it
"has the author's avatar URL"
do
it
"has the author's avatar URL"
do
expect
(
subject
.
review_
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
end
end
it
"has the author's name"
do
it
"has the author's name"
do
expect
(
subject
.
review_
events
.
first
[
:author
][
:name
]).
to
eq
(
MergeRequest
.
first
.
author
.
name
)
expect
(
events
.
first
[
:author
][
:name
]).
to
eq
(
MergeRequest
.
first
.
author
.
name
)
end
end
end
end
describe
'#staging_events'
do
describe
'#staging_events'
do
let
(
:stage
)
{
:staging
}
let
(
:merge_request
)
{
MergeRequest
.
first
}
let
(
:merge_request
)
{
MergeRequest
.
first
}
let!
(
:pipeline
)
do
let!
(
:pipeline
)
do
create
(
:ci_pipeline
,
create
(
:ci_pipeline
,
...
@@ -227,55 +239,56 @@ describe Gitlab::CycleAnalytics::Events do
...
@@ -227,55 +239,56 @@ describe Gitlab::CycleAnalytics::Events do
end
end
it
'has the name'
do
it
'has the name'
do
expect
(
subject
.
staging_
events
.
first
[
:name
]).
not_to
be_nil
expect
(
events
.
first
[
:name
]).
not_to
be_nil
end
end
it
'has the ID'
do
it
'has the ID'
do
expect
(
subject
.
staging_
events
.
first
[
:id
]).
not_to
be_nil
expect
(
events
.
first
[
:id
]).
not_to
be_nil
end
end
it
'has the URL'
do
it
'has the URL'
do
expect
(
subject
.
staging_
events
.
first
[
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:url
]).
not_to
be_nil
end
end
it
'has the branch name'
do
it
'has the branch name'
do
expect
(
subject
.
staging_
events
.
first
[
:branch
]).
not_to
be_nil
expect
(
events
.
first
[
:branch
]).
not_to
be_nil
end
end
it
'has the branch URL'
do
it
'has the branch URL'
do
expect
(
subject
.
staging_
events
.
first
[
:branch
][
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:branch
][
:url
]).
not_to
be_nil
end
end
it
'has the short SHA'
do
it
'has the short SHA'
do
expect
(
subject
.
staging_
events
.
first
[
:short_sha
]).
not_to
be_nil
expect
(
events
.
first
[
:short_sha
]).
not_to
be_nil
end
end
it
'has the commit URL'
do
it
'has the commit URL'
do
expect
(
subject
.
staging_
events
.
first
[
:commit_url
]).
not_to
be_nil
expect
(
events
.
first
[
:commit_url
]).
not_to
be_nil
end
end
it
'has the date'
do
it
'has the date'
do
expect
(
subject
.
staging_
events
.
first
[
:date
]).
not_to
be_nil
expect
(
events
.
first
[
:date
]).
not_to
be_nil
end
end
it
'has the total time'
do
it
'has the total time'
do
expect
(
subject
.
staging_
events
.
first
[
:total_time
]).
not_to
be_empty
expect
(
events
.
first
[
:total_time
]).
not_to
be_empty
end
end
it
"has the author's URL"
do
it
"has the author's URL"
do
expect
(
subject
.
staging_
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
end
end
it
"has the author's avatar URL"
do
it
"has the author's avatar URL"
do
expect
(
subject
.
staging_
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
end
end
it
"has the author's name"
do
it
"has the author's name"
do
expect
(
subject
.
staging_
events
.
first
[
:author
][
:name
]).
to
eq
(
MergeRequest
.
first
.
author
.
name
)
expect
(
events
.
first
[
:author
][
:name
]).
to
eq
(
MergeRequest
.
first
.
author
.
name
)
end
end
end
end
describe
'#production_events'
do
describe
'#production_events'
do
let
(
:stage
)
{
:production
}
let!
(
:context
)
{
create
(
:issue
,
project:
project
,
created_at:
2
.
days
.
ago
)
}
let!
(
:context
)
{
create
(
:issue
,
project:
project
,
created_at:
2
.
days
.
ago
)
}
before
do
before
do
...
@@ -284,35 +297,35 @@ describe Gitlab::CycleAnalytics::Events do
...
@@ -284,35 +297,35 @@ describe Gitlab::CycleAnalytics::Events do
end
end
it
'has the total time'
do
it
'has the total time'
do
expect
(
subject
.
production_
events
.
first
[
:total_time
]).
not_to
be_empty
expect
(
events
.
first
[
:total_time
]).
not_to
be_empty
end
end
it
'has a title'
do
it
'has a title'
do
expect
(
subject
.
production_
events
.
first
[
:title
]).
to
eq
(
context
.
title
)
expect
(
events
.
first
[
:title
]).
to
eq
(
context
.
title
)
end
end
it
'has the URL'
do
it
'has the URL'
do
expect
(
subject
.
production_
events
.
first
[
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:url
]).
not_to
be_nil
end
end
it
'has an iid'
do
it
'has an iid'
do
expect
(
subject
.
production_
events
.
first
[
:iid
]).
to
eq
(
context
.
iid
.
to_s
)
expect
(
events
.
first
[
:iid
]).
to
eq
(
context
.
iid
.
to_s
)
end
end
it
'has a created_at timestamp'
do
it
'has a created_at timestamp'
do
expect
(
subject
.
production_
events
.
first
[
:created_at
]).
to
end_with
(
'ago'
)
expect
(
events
.
first
[
:created_at
]).
to
end_with
(
'ago'
)
end
end
it
"has the author's URL"
do
it
"has the author's URL"
do
expect
(
subject
.
production_
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:web_url
]).
not_to
be_nil
end
end
it
"has the author's avatar URL"
do
it
"has the author's avatar URL"
do
expect
(
subject
.
production_
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
expect
(
events
.
first
[
:author
][
:avatar_url
]).
not_to
be_nil
end
end
it
"has the author's name"
do
it
"has the author's name"
do
expect
(
subject
.
production_
events
.
first
[
:author
][
:name
]).
to
eq
(
context
.
author
.
name
)
expect
(
events
.
first
[
:author
][
:name
]).
to
eq
(
context
.
author
.
name
)
end
end
end
end
...
...
spec/lib/gitlab/cycle_analytics/issue_event_spec.rb
View file @
a67311cb
...
@@ -2,6 +2,8 @@ require 'spec_helper'
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
IssueEvent
do
describe
Gitlab
::
CycleAnalytics
::
IssueEvent
do
let
(
:stage_name
)
{
:issue
}
it_behaves_like
'default query config'
do
it_behaves_like
'default query config'
do
it
'has the default order'
do
it
'has the default order'
do
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/plan_event_spec.rb
View file @
a67311cb
...
@@ -2,6 +2,8 @@ require 'spec_helper'
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
PlanEvent
do
describe
Gitlab
::
CycleAnalytics
::
PlanEvent
do
let
(
:stage_name
)
{
:plan
}
it_behaves_like
'default query config'
do
it_behaves_like
'default query config'
do
it
'has the default order'
do
it
'has the default order'
do
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/production_event_spec.rb
View file @
a67311cb
...
@@ -2,6 +2,8 @@ require 'spec_helper'
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
ProductionEvent
do
describe
Gitlab
::
CycleAnalytics
::
ProductionEvent
do
let
(
:stage_name
)
{
:production
}
it_behaves_like
'default query config'
do
it_behaves_like
'default query config'
do
it
'has the default order'
do
it
'has the default order'
do
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/review_event_spec.rb
View file @
a67311cb
...
@@ -2,6 +2,8 @@ require 'spec_helper'
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
ReviewEvent
do
describe
Gitlab
::
CycleAnalytics
::
ReviewEvent
do
let
(
:stage_name
)
{
:review
}
it_behaves_like
'default query config'
do
it_behaves_like
'default query config'
do
it
'has the default order'
do
it
'has the default order'
do
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/shared_event_spec.rb
View file @
a67311cb
require
'spec_helper'
require
'spec_helper'
shared_examples
'default query config'
do
shared_examples
'default query config'
do
let
(
:event
)
{
described_class
.
new
(
project:
double
,
options:
{})
}
let
(
:fetcher
)
do
Gitlab
::
CycleAnalytics
::
MetricsFetcher
.
new
(
project:
create
(
:empty_project
),
from:
1
.
day
.
ago
,
branch:
nil
)
end
let
(
:event
)
{
described_class
.
new
(
fetcher:
fetcher
,
stage:
stage_name
,
options:
{})
}
it
'has the start attributes'
do
it
'has the start attributes'
do
expect
(
event
.
start_time_attrs
).
not_to
be_nil
expect
(
event
.
start_time_attrs
).
not_to
be_nil
...
...
spec/lib/gitlab/cycle_analytics/staging_event_spec.rb
View file @
a67311cb
...
@@ -2,6 +2,8 @@ require 'spec_helper'
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
StagingEvent
do
describe
Gitlab
::
CycleAnalytics
::
StagingEvent
do
let
(
:stage_name
)
{
:staging
}
it_behaves_like
'default query config'
do
it_behaves_like
'default query config'
do
it
'does not have the default order'
do
it
'does not have the default order'
do
expect
(
event
.
order
).
not_to
eq
(
event
.
start_time_attrs
)
expect
(
event
.
order
).
not_to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/test_event_spec.rb
View file @
a67311cb
...
@@ -2,6 +2,8 @@ require 'spec_helper'
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
TestEvent
do
describe
Gitlab
::
CycleAnalytics
::
TestEvent
do
let
(
:stage_name
)
{
:test
}
it_behaves_like
'default query config'
do
it_behaves_like
'default query config'
do
it
'does not have the default order'
do
it
'does not have the default order'
do
expect
(
event
.
order
).
not_to
eq
(
event
.
start_time_attrs
)
expect
(
event
.
order
).
not_to
eq
(
event
.
start_time_attrs
)
...
...
spec/models/cycle_analytics/summary_spec.rb
View file @
a67311cb
require
'spec_helper'
require
'spec_helper'
describe
CycleAnalytics
::
Summary
,
models:
true
do
describe
Gitlab
::
CycleAnalytics
::
Stage
Summary
,
models:
true
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:project
)
{
create
(
:project
)
}
let
(
:from
)
{
Time
.
now
}
let
(
:from
)
{
Time
.
now
}
let
(
:user
)
{
create
(
:user
,
:admin
)
}
let
(
:user
)
{
create
(
:user
,
:admin
)
}
...
...
spec/serializers/analytics_summary_serializer_spec.rb
View file @
a67311cb
...
@@ -8,10 +8,10 @@ describe AnalyticsSummarySerializer do
...
@@ -8,10 +8,10 @@ describe AnalyticsSummarySerializer do
let
(
:json
)
{
serializer
.
as_json
}
let
(
:json
)
{
serializer
.
as_json
}
let
(
:project
)
{
create
(
:empty_project
)
}
let
(
:project
)
{
create
(
:empty_project
)
}
let
(
:resource
)
{
Gitlab
::
CycleAnalytics
::
Summary
::
Issue
.
new
(
project:
double
,
from:
1
.
day
.
ago
)
}
let
(
:resource
)
{
Gitlab
::
CycleAnalytics
::
S
tageS
ummary
::
Issue
.
new
(
project:
double
,
from:
1
.
day
.
ago
)
}
before
do
before
do
allow_any_instance_of
(
Gitlab
::
CycleAnalytics
::
Summary
::
Issue
).
to
receive
(
:value
).
and_return
(
1.12
)
allow_any_instance_of
(
Gitlab
::
CycleAnalytics
::
S
tageS
ummary
::
Issue
).
to
receive
(
:value
).
and_return
(
1.12
)
end
end
it
'it generates payload for single object'
do
it
'it generates payload for single object'
do
...
...
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