Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
a67311cb
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a67311cb
编写于
11月 23, 2016
作者:
J
James Lopez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix other spec failures
上级
02e1e481
变更
20
隐藏空白更改
内联
并排
Showing
20 changed file
with
128 addition
and
131 deletion
+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
未找到文件。
app/controllers/concerns/cycle_analytics_params.rb
浏览文件 @
a67311cb
module
CycleAnalyticsParams
extend
ActiveSupport
::
Concern
def
options
@options
||=
{
from:
start_date
(
events_
params
),
current_user:
current_user
}
def
options
(
params
)
@options
||=
{
from:
start_date
(
params
),
current_user:
current_user
}
end
def
start_date
(
params
)
...
...
app/controllers/projects/cycle_analytics/events_controller.rb
浏览文件 @
a67311cb
...
...
@@ -9,46 +9,46 @@ module Projects
before_action
:authorize_read_merge_request!
,
only:
[
:code
,
:review
]
def
issue
render_events
(
events
.
issue_events
)
render_events
(
cycle_analytics
.
events_for
(
:issue
)
)
end
def
plan
render_events
(
events
.
plan_events
)
render_events
(
cycle_analytics
.
events_for
(
:plan
)
)
end
def
code
render_events
(
events
.
code_events
)
render_events
(
cycle_analytics
.
events_for
(
:code
)
)
end
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
def
review
render_events
(
events
.
review_events
)
render_events
(
cycle_analytics
.
events_for
(
:review
)
)
end
def
staging
render_events
(
events
.
staging_events
)
render_events
(
cycle_analytics
.
events_for
(
:staging
)
)
end
def
production
render_events
(
events
.
production_events
)
render_events
(
cycle_analytics
.
events_for
(
:production
)
)
end
private
def
render_events
(
events
_list
)
def
render_events
(
events
)
respond_to
do
|
format
|
format
.
html
format
.
json
{
render
json:
{
events:
events
_list
}
}
format
.
json
{
render
json:
{
events:
events
}
}
end
end
def
event
s
@
events
||=
Gitlab
::
CycleAnalytics
::
Events
.
new
(
project:
project
,
options:
options
)
def
cycle_analytic
s
@
cycle_analytics
||=
::
CycleAnalytics
.
new
(
project
,
options:
options
(
events_params
)
)
end
def
events_params
...
...
app/controllers/projects/cycle_analytics_controller.rb
浏览文件 @
a67311cb
...
...
@@ -6,7 +6,7 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
before_action
:authorize_read_cycle_analytics!
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?
...
...
@@ -21,7 +21,7 @@ class Projects::CycleAnalyticsController < Projects::ApplicationController
def
cycle_analytics_params
return
{}
unless
params
[
:cycle_analytics
].
present?
{
start_date:
params
[
:cycle_analytics
][
:start_date
]
}
params
[
:cycle_analytics
].
slice
(
:start_date
)
end
def
cycle_analytics_json
...
...
app/models/cycle_analytics.rb
浏览文件 @
a67311cb
...
...
@@ -7,7 +7,7 @@ class CycleAnalytics
end
def
summary
@summary
||=
Gitlab
::
CycleAnalytics
::
Summary
.
new
(
@project
,
from:
@options
[
:from
]).
data
@summary
||=
::
Gitlab
::
CycleAnalytics
::
Stage
Summary
.
new
(
@project
,
from:
@options
[
:from
]).
data
end
def
stats
...
...
@@ -15,23 +15,26 @@ class CycleAnalytics
end
def
no_stats?
stats
.
map
(
&
:value
)
.
compact
.
empty?
stats
.
map
{
|
hash
|
hash
[
:value
]
}
.
compact
.
empty?
end
def
permissions
(
user
:)
Gitlab
::
CycleAnalytics
::
Permissions
.
get
(
user:
user
,
project:
@project
)
end
def
events_for
(
stage
)
classify_stage
(
stage
).
new
(
project:
@project
,
options:
@options
,
stage:
stage
).
events
end
private
def
stats_per_stage
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
def
classify_stage
(
stage_name
)
"Gitlab::CycleAnalytics::
#{
stage_name
.
to_s
.
capitalize
}
Stage"
.
constantize
end
end
lib/gitlab/cycle_analytics/base_event.rb
浏览文件 @
a67311cb
...
...
@@ -5,10 +5,11 @@ module Gitlab
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
)
@project
=
fetcher
.
project
@stage
=
stage
@options
=
options
end
def
fetch
...
...
lib/gitlab/cycle_analytics/base_stage.rb
浏览文件 @
a67311cb
...
...
@@ -13,7 +13,7 @@ module Gitlab
end
def
events
event_class
.
new
(
fetcher:
@fetcher
,
stage:
@stage
).
fetch
event_class
.
new
(
fetcher:
@fetcher
,
stage:
@stage
,
options:
@options
).
fetch
end
def
median_data
...
...
lib/gitlab/cycle_analytics/events.rb
已删除
100644 → 0
浏览文件 @
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
浏览文件 @
a67311cb
module
Gitlab
module
CycleAnalytics
module
Summary
extend
self
class
StageSummary
def
initialize
(
project
,
from
:)
@project
=
project
@from
=
from
...
...
lib/gitlab/cycle_analytics/summary/base.rb
浏览文件 @
a67311cb
...
...
@@ -8,7 +8,7 @@ module Gitlab
end
def
title
self
.
nam
e
self
.
class
.
name
.
demoduliz
e
end
def
value
...
...
spec/lib/gitlab/cycle_analytics/code_event_spec.rb
浏览文件 @
a67311cb
...
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
CodeEvent
do
let
(
:stage_name
)
{
:code
}
it_behaves_like
'default query config'
do
it
'does not have the default order'
do
expect
(
event
.
order
).
not_to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/events_spec.rb
浏览文件 @
a67311cb
require
'spec_helper'
describe
Gitlab
::
CycleAnalytics
::
Events
do
describe
'cycle analytics events'
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:from_date
)
{
10
.
days
.
ago
}
let
(
:user
)
{
create
(
:user
,
:admin
)
}
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
allow_any_instance_of
(
Gitlab
::
ReferenceExtractor
).
to
receive
(
:issues
).
and_return
([
context
])
...
...
@@ -15,104 +17,112 @@ describe Gitlab::CycleAnalytics::Events do
end
describe
'#issue_events'
do
let
(
:stage
)
{
:issue
}
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
it
'has a title'
do
expect
(
subject
.
issue_
events
.
first
[
:title
]).
to
eq
(
context
.
title
)
expect
(
events
.
first
[
:title
]).
to
eq
(
context
.
title
)
end
it
'has the URL'
do
expect
(
subject
.
issue_
events
.
first
[
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:url
]).
not_to
be_nil
end
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
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
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
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
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
describe
'#plan_events'
do
let
(
:stage
)
{
:plan
}
it
'has a title'
do
expect
(
subject
.
plan_
events
.
first
[
:title
]).
not_to
be_nil
expect
(
events
.
first
[
:title
]).
not_to
be_nil
end
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
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
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
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
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
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
describe
'#code_events'
do
let
(
:stage
)
{
:code
}
before
do
create_commit_referencing_issue
(
context
)
end
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
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
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
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
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
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
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
describe
'#test_events'
do
let
(
:stage
)
{
:test
}
let
(
:merge_request
)
{
MergeRequest
.
first
}
let!
(
:pipeline
)
do
create
(
:ci_pipeline
,
...
...
@@ -130,83 +140,85 @@ describe Gitlab::CycleAnalytics::Events do
end
it
'has the name'
do
expect
(
subject
.
test_
events
.
first
[
:name
]).
not_to
be_nil
expect
(
events
.
first
[
:name
]).
not_to
be_nil
end
it
'has the ID'
do
expect
(
subject
.
test_
events
.
first
[
:id
]).
not_to
be_nil
expect
(
events
.
first
[
:id
]).
not_to
be_nil
end
it
'has the URL'
do
expect
(
subject
.
test_
events
.
first
[
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:url
]).
not_to
be_nil
end
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
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
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
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
it
'has the date'
do
expect
(
subject
.
test_
events
.
first
[
:date
]).
not_to
be_nil
expect
(
events
.
first
[
:date
]).
not_to
be_nil
end
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
describe
'#review_events'
do
let
(
:stage
)
{
:review
}
let!
(
:context
)
{
create
(
:issue
,
project:
project
,
created_at:
2
.
days
.
ago
)
}
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
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
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
it
'has the URL'
do
expect
(
subject
.
review_
events
.
first
[
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:url
]).
not_to
be_nil
end
it
'has a state'
do
expect
(
subject
.
review_
events
.
first
[
:state
]).
not_to
be_nil
expect
(
events
.
first
[
:state
]).
not_to
be_nil
end
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
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
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
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
describe
'#staging_events'
do
let
(
:stage
)
{
:staging
}
let
(
:merge_request
)
{
MergeRequest
.
first
}
let!
(
:pipeline
)
do
create
(
:ci_pipeline
,
...
...
@@ -227,55 +239,56 @@ describe Gitlab::CycleAnalytics::Events do
end
it
'has the name'
do
expect
(
subject
.
staging_
events
.
first
[
:name
]).
not_to
be_nil
expect
(
events
.
first
[
:name
]).
not_to
be_nil
end
it
'has the ID'
do
expect
(
subject
.
staging_
events
.
first
[
:id
]).
not_to
be_nil
expect
(
events
.
first
[
:id
]).
not_to
be_nil
end
it
'has the URL'
do
expect
(
subject
.
staging_
events
.
first
[
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:url
]).
not_to
be_nil
end
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
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
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
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
it
'has the date'
do
expect
(
subject
.
staging_
events
.
first
[
:date
]).
not_to
be_nil
expect
(
events
.
first
[
:date
]).
not_to
be_nil
end
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
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
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
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
describe
'#production_events'
do
let
(
:stage
)
{
:production
}
let!
(
:context
)
{
create
(
:issue
,
project:
project
,
created_at:
2
.
days
.
ago
)
}
before
do
...
...
@@ -284,35 +297,35 @@ describe Gitlab::CycleAnalytics::Events do
end
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
it
'has a title'
do
expect
(
subject
.
production_
events
.
first
[
:title
]).
to
eq
(
context
.
title
)
expect
(
events
.
first
[
:title
]).
to
eq
(
context
.
title
)
end
it
'has the URL'
do
expect
(
subject
.
production_
events
.
first
[
:url
]).
not_to
be_nil
expect
(
events
.
first
[
:url
]).
not_to
be_nil
end
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
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
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
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
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
...
...
spec/lib/gitlab/cycle_analytics/issue_event_spec.rb
浏览文件 @
a67311cb
...
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
IssueEvent
do
let
(
:stage_name
)
{
:issue
}
it_behaves_like
'default query config'
do
it
'has the default order'
do
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/plan_event_spec.rb
浏览文件 @
a67311cb
...
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
PlanEvent
do
let
(
:stage_name
)
{
:plan
}
it_behaves_like
'default query config'
do
it
'has the default order'
do
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/production_event_spec.rb
浏览文件 @
a67311cb
...
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
ProductionEvent
do
let
(
:stage_name
)
{
:production
}
it_behaves_like
'default query config'
do
it
'has the default order'
do
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/review_event_spec.rb
浏览文件 @
a67311cb
...
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
ReviewEvent
do
let
(
:stage_name
)
{
:review
}
it_behaves_like
'default query config'
do
it
'has the default order'
do
expect
(
event
.
order
).
to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/shared_event_spec.rb
浏览文件 @
a67311cb
require
'spec_helper'
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
expect
(
event
.
start_time_attrs
).
not_to
be_nil
...
...
spec/lib/gitlab/cycle_analytics/staging_event_spec.rb
浏览文件 @
a67311cb
...
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
StagingEvent
do
let
(
:stage_name
)
{
:staging
}
it_behaves_like
'default query config'
do
it
'does not have the default order'
do
expect
(
event
.
order
).
not_to
eq
(
event
.
start_time_attrs
)
...
...
spec/lib/gitlab/cycle_analytics/test_event_spec.rb
浏览文件 @
a67311cb
...
...
@@ -2,6 +2,8 @@ require 'spec_helper'
require
'lib/gitlab/cycle_analytics/shared_event_spec'
describe
Gitlab
::
CycleAnalytics
::
TestEvent
do
let
(
:stage_name
)
{
:test
}
it_behaves_like
'default query config'
do
it
'does not have the default order'
do
expect
(
event
.
order
).
not_to
eq
(
event
.
start_time_attrs
)
...
...
spec/models/cycle_analytics/summary_spec.rb
浏览文件 @
a67311cb
require
'spec_helper'
describe
CycleAnalytics
::
Summary
,
models:
true
do
describe
Gitlab
::
CycleAnalytics
::
Stage
Summary
,
models:
true
do
let
(
:project
)
{
create
(
:project
)
}
let
(
:from
)
{
Time
.
now
}
let
(
:user
)
{
create
(
:user
,
:admin
)
}
...
...
spec/serializers/analytics_summary_serializer_spec.rb
浏览文件 @
a67311cb
...
...
@@ -8,10 +8,10 @@ describe AnalyticsSummarySerializer do
let
(
:json
)
{
serializer
.
as_json
}
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
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
it
'it generates payload for single object'
do
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录