Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
nexpie-grafana-theme
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kornkitt Poolsup
nexpie-grafana-theme
Commits
1c4dd6f2
Unverified
Commit
1c4dd6f2
authored
Jul 24, 2018
by
Marcus Efraimsson
Committed by
GitHub
Jul 24, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #12702 from dehrax/12224-influx-query-ctrl
Karma to Jest: influx query_ctrl
parents
04c91601
48ae9ec7
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
178 additions
and
194 deletions
+178
-194
public/app/plugins/datasource/influxdb/query_ctrl.ts
+0
-1
public/app/plugins/datasource/influxdb/specs/query_ctrl.jest.ts
+178
-0
public/app/plugins/datasource/influxdb/specs/query_ctrl_specs.ts
+0
-193
No files found.
public/app/plugins/datasource/influxdb/query_ctrl.ts
View file @
1c4dd6f2
...
@@ -22,7 +22,6 @@ export class InfluxQueryCtrl extends QueryCtrl {
...
@@ -22,7 +22,6 @@ export class InfluxQueryCtrl extends QueryCtrl {
/** @ngInject **/
/** @ngInject **/
constructor
(
$scope
,
$injector
,
private
templateSrv
,
private
$q
,
private
uiSegmentSrv
)
{
constructor
(
$scope
,
$injector
,
private
templateSrv
,
private
$q
,
private
uiSegmentSrv
)
{
super
(
$scope
,
$injector
);
super
(
$scope
,
$injector
);
this
.
target
=
this
.
target
;
this
.
target
=
this
.
target
;
this
.
queryModel
=
new
InfluxQuery
(
this
.
target
,
templateSrv
,
this
.
panel
.
scopedVars
);
this
.
queryModel
=
new
InfluxQuery
(
this
.
target
,
templateSrv
,
this
.
panel
.
scopedVars
);
this
.
queryBuilder
=
new
InfluxQueryBuilder
(
this
.
target
,
this
.
datasource
.
database
);
this
.
queryBuilder
=
new
InfluxQueryBuilder
(
this
.
target
,
this
.
datasource
.
database
);
...
...
public/app/plugins/datasource/influxdb/specs/query_ctrl.jest.ts
0 → 100644
View file @
1c4dd6f2
import
'../query_ctrl'
;
import
{
uiSegmentSrv
}
from
'app/core/services/segment_srv'
;
import
{
InfluxQueryCtrl
}
from
'../query_ctrl'
;
describe
(
'InfluxDBQueryCtrl'
,
()
=>
{
let
ctx
=
<
any
>
{};
beforeEach
(()
=>
{
InfluxQueryCtrl
.
prototype
.
datasource
=
{
metricFindQuery
:
()
=>
Promise
.
resolve
([]),
};
InfluxQueryCtrl
.
prototype
.
target
=
{
target
:
{}
};
InfluxQueryCtrl
.
prototype
.
panelCtrl
=
{
panel
:
{
targets
:
[
InfluxQueryCtrl
.
prototype
.
target
],
},
refresh
:
()
=>
{},
};
ctx
.
ctrl
=
new
InfluxQueryCtrl
(
{},
{},
{},
{},
new
uiSegmentSrv
({
trustAsHtml
:
html
=>
html
},
{
highlightVariablesAsHtml
:
()
=>
{}
})
);
});
describe
(
'init'
,
()
=>
{
it
(
'should init tagSegments'
,
()
=>
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
toBe
(
1
);
});
it
(
'should init measurementSegment'
,
()
=>
{
expect
(
ctx
.
ctrl
.
measurementSegment
.
value
).
toBe
(
'select measurement'
);
});
});
describe
(
'when first tag segment is updated'
,
()
=>
{
beforeEach
(()
=>
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
});
it
(
'should update tag key'
,
()
=>
{
expect
(
ctx
.
ctrl
.
target
.
tags
[
0
].
key
).
toBe
(
'asd'
);
expect
(
ctx
.
ctrl
.
tagSegments
[
0
].
type
).
toBe
(
'key'
);
});
it
(
'should add tagSegments'
,
()
=>
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
toBe
(
3
);
});
});
describe
(
'when last tag value segment is updated'
,
()
=>
{
beforeEach
(()
=>
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
});
it
(
'should update tag value'
,
()
=>
{
expect
(
ctx
.
ctrl
.
target
.
tags
[
0
].
value
).
toBe
(
'server1'
);
});
it
(
'should set tag operator'
,
()
=>
{
expect
(
ctx
.
ctrl
.
target
.
tags
[
0
].
operator
).
toBe
(
'='
);
});
it
(
'should add plus button for another filter'
,
()
=>
{
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
fake
).
toBe
(
true
);
});
});
describe
(
'when last tag value segment is updated to regex'
,
()
=>
{
beforeEach
(()
=>
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'/server.*/'
,
type
:
'value'
},
2
);
});
it
(
'should update operator'
,
()
=>
{
expect
(
ctx
.
ctrl
.
tagSegments
[
1
].
value
).
toBe
(
'=~'
);
expect
(
ctx
.
ctrl
.
target
.
tags
[
0
].
operator
).
toBe
(
'=~'
);
});
});
describe
(
'when second tag key is added'
,
()
=>
{
beforeEach
(()
=>
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'key2'
,
type
:
'plus-button'
},
3
);
});
it
(
'should update tag key'
,
()
=>
{
expect
(
ctx
.
ctrl
.
target
.
tags
[
1
].
key
).
toBe
(
'key2'
);
});
it
(
'should add AND segment'
,
()
=>
{
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
value
).
toBe
(
'AND'
);
});
});
describe
(
'when condition is changed'
,
()
=>
{
beforeEach
(()
=>
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'key2'
,
type
:
'plus-button'
},
3
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'OR'
,
type
:
'condition'
},
3
);
});
it
(
'should update tag condition'
,
()
=>
{
expect
(
ctx
.
ctrl
.
target
.
tags
[
1
].
condition
).
toBe
(
'OR'
);
});
it
(
'should update AND segment'
,
()
=>
{
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
value
).
toBe
(
'OR'
);
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
toBe
(
7
);
});
});
describe
(
'when deleting first tag filter after value is selected'
,
()
=>
{
beforeEach
(()
=>
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
(
ctx
.
ctrl
.
removeTagFilterSegment
,
0
);
});
it
(
'should remove tags'
,
()
=>
{
expect
(
ctx
.
ctrl
.
target
.
tags
.
length
).
toBe
(
0
);
});
it
(
'should remove all segment after 2 and replace with plus button'
,
()
=>
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
toBe
(
1
);
expect
(
ctx
.
ctrl
.
tagSegments
[
0
].
type
).
toBe
(
'plus-button'
);
});
});
describe
(
'when deleting second tag value before second tag value is complete'
,
()
=>
{
beforeEach
(()
=>
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'key2'
,
type
:
'plus-button'
},
3
);
ctx
.
ctrl
.
tagSegmentUpdated
(
ctx
.
ctrl
.
removeTagFilterSegment
,
4
);
});
it
(
'should remove all segment after 2 and replace with plus button'
,
()
=>
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
toBe
(
4
);
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
type
).
toBe
(
'plus-button'
);
});
});
describe
(
'when deleting second tag value before second tag value is complete'
,
()
=>
{
beforeEach
(()
=>
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'key2'
,
type
:
'plus-button'
},
3
);
ctx
.
ctrl
.
tagSegmentUpdated
(
ctx
.
ctrl
.
removeTagFilterSegment
,
4
);
});
it
(
'should remove all segment after 2 and replace with plus button'
,
()
=>
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
toBe
(
4
);
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
type
).
toBe
(
'plus-button'
);
});
});
describe
(
'when deleting second tag value after second tag filter is complete'
,
()
=>
{
beforeEach
(()
=>
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'key2'
,
type
:
'plus-button'
},
3
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'value'
,
type
:
'value'
},
6
);
ctx
.
ctrl
.
tagSegmentUpdated
(
ctx
.
ctrl
.
removeTagFilterSegment
,
4
);
});
it
(
'should remove all segment after 2 and replace with plus button'
,
()
=>
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
toBe
(
4
);
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
type
).
toBe
(
'plus-button'
);
});
});
});
public/app/plugins/datasource/influxdb/specs/query_ctrl_specs.ts
deleted
100644 → 0
View file @
04c91601
import
'../query_ctrl'
;
import
'app/core/services/segment_srv'
;
import
{
describe
,
beforeEach
,
it
,
sinon
,
expect
,
angularMocks
}
from
'test/lib/common'
;
import
helpers
from
'test/specs/helpers'
;
import
{
InfluxQueryCtrl
}
from
'../query_ctrl'
;
describe
(
'InfluxDBQueryCtrl'
,
function
()
{
var
ctx
=
new
helpers
.
ControllerTestContext
();
beforeEach
(
angularMocks
.
module
(
'grafana.core'
));
beforeEach
(
angularMocks
.
module
(
'grafana.controllers'
));
beforeEach
(
angularMocks
.
module
(
'grafana.services'
));
beforeEach
(
angularMocks
.
module
(
function
(
$compileProvider
)
{
$compileProvider
.
preAssignBindingsEnabled
(
true
);
})
);
beforeEach
(
ctx
.
providePhase
());
beforeEach
(
angularMocks
.
inject
((
$rootScope
,
$controller
,
$q
)
=>
{
ctx
.
$q
=
$q
;
ctx
.
scope
=
$rootScope
.
$new
();
ctx
.
datasource
.
metricFindQuery
=
sinon
.
stub
().
returns
(
ctx
.
$q
.
when
([]));
ctx
.
target
=
{
target
:
{}
};
ctx
.
panelCtrl
=
{
panel
:
{
targets
:
[
ctx
.
target
],
},
};
ctx
.
panelCtrl
.
refresh
=
sinon
.
spy
();
ctx
.
ctrl
=
$controller
(
InfluxQueryCtrl
,
{
$scope
:
ctx
.
scope
},
{
panelCtrl
:
ctx
.
panelCtrl
,
target
:
ctx
.
target
,
datasource
:
ctx
.
datasource
,
}
);
})
);
describe
(
'init'
,
function
()
{
it
(
'should init tagSegments'
,
function
()
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
to
.
be
(
1
);
});
it
(
'should init measurementSegment'
,
function
()
{
expect
(
ctx
.
ctrl
.
measurementSegment
.
value
).
to
.
be
(
'select measurement'
);
});
});
describe
(
'when first tag segment is updated'
,
function
()
{
beforeEach
(
function
()
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
});
it
(
'should update tag key'
,
function
()
{
expect
(
ctx
.
ctrl
.
target
.
tags
[
0
].
key
).
to
.
be
(
'asd'
);
expect
(
ctx
.
ctrl
.
tagSegments
[
0
].
type
).
to
.
be
(
'key'
);
});
it
(
'should add tagSegments'
,
function
()
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
to
.
be
(
3
);
});
});
describe
(
'when last tag value segment is updated'
,
function
()
{
beforeEach
(
function
()
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
});
it
(
'should update tag value'
,
function
()
{
expect
(
ctx
.
ctrl
.
target
.
tags
[
0
].
value
).
to
.
be
(
'server1'
);
});
it
(
'should set tag operator'
,
function
()
{
expect
(
ctx
.
ctrl
.
target
.
tags
[
0
].
operator
).
to
.
be
(
'='
);
});
it
(
'should add plus button for another filter'
,
function
()
{
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
fake
).
to
.
be
(
true
);
});
});
describe
(
'when last tag value segment is updated to regex'
,
function
()
{
beforeEach
(
function
()
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'/server.*/'
,
type
:
'value'
},
2
);
});
it
(
'should update operator'
,
function
()
{
expect
(
ctx
.
ctrl
.
tagSegments
[
1
].
value
).
to
.
be
(
'=~'
);
expect
(
ctx
.
ctrl
.
target
.
tags
[
0
].
operator
).
to
.
be
(
'=~'
);
});
});
describe
(
'when second tag key is added'
,
function
()
{
beforeEach
(
function
()
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'key2'
,
type
:
'plus-button'
},
3
);
});
it
(
'should update tag key'
,
function
()
{
expect
(
ctx
.
ctrl
.
target
.
tags
[
1
].
key
).
to
.
be
(
'key2'
);
});
it
(
'should add AND segment'
,
function
()
{
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
value
).
to
.
be
(
'AND'
);
});
});
describe
(
'when condition is changed'
,
function
()
{
beforeEach
(
function
()
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'key2'
,
type
:
'plus-button'
},
3
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'OR'
,
type
:
'condition'
},
3
);
});
it
(
'should update tag condition'
,
function
()
{
expect
(
ctx
.
ctrl
.
target
.
tags
[
1
].
condition
).
to
.
be
(
'OR'
);
});
it
(
'should update AND segment'
,
function
()
{
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
value
).
to
.
be
(
'OR'
);
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
to
.
be
(
7
);
});
});
describe
(
'when deleting first tag filter after value is selected'
,
function
()
{
beforeEach
(
function
()
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
(
ctx
.
ctrl
.
removeTagFilterSegment
,
0
);
});
it
(
'should remove tags'
,
function
()
{
expect
(
ctx
.
ctrl
.
target
.
tags
.
length
).
to
.
be
(
0
);
});
it
(
'should remove all segment after 2 and replace with plus button'
,
function
()
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
to
.
be
(
1
);
expect
(
ctx
.
ctrl
.
tagSegments
[
0
].
type
).
to
.
be
(
'plus-button'
);
});
});
describe
(
'when deleting second tag value before second tag value is complete'
,
function
()
{
beforeEach
(
function
()
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'key2'
,
type
:
'plus-button'
},
3
);
ctx
.
ctrl
.
tagSegmentUpdated
(
ctx
.
ctrl
.
removeTagFilterSegment
,
4
);
});
it
(
'should remove all segment after 2 and replace with plus button'
,
function
()
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
to
.
be
(
4
);
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
type
).
to
.
be
(
'plus-button'
);
});
});
describe
(
'when deleting second tag value before second tag value is complete'
,
function
()
{
beforeEach
(
function
()
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'key2'
,
type
:
'plus-button'
},
3
);
ctx
.
ctrl
.
tagSegmentUpdated
(
ctx
.
ctrl
.
removeTagFilterSegment
,
4
);
});
it
(
'should remove all segment after 2 and replace with plus button'
,
function
()
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
to
.
be
(
4
);
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
type
).
to
.
be
(
'plus-button'
);
});
});
describe
(
'when deleting second tag value after second tag filter is complete'
,
function
()
{
beforeEach
(
function
()
{
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'asd'
,
type
:
'plus-button'
},
0
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'server1'
,
type
:
'value'
},
2
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'key2'
,
type
:
'plus-button'
},
3
);
ctx
.
ctrl
.
tagSegmentUpdated
({
value
:
'value'
,
type
:
'value'
},
6
);
ctx
.
ctrl
.
tagSegmentUpdated
(
ctx
.
ctrl
.
removeTagFilterSegment
,
4
);
});
it
(
'should remove all segment after 2 and replace with plus button'
,
function
()
{
expect
(
ctx
.
ctrl
.
tagSegments
.
length
).
to
.
be
(
4
);
expect
(
ctx
.
ctrl
.
tagSegments
[
3
].
type
).
to
.
be
(
'plus-button'
);
});
});
});
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