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
88760983
Commit
88760983
authored
Nov 30, 2017
by
Alexander Zobnin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
repeat row: add more tests
parent
36ef1865
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
58 additions
and
25 deletions
+58
-25
public/app/features/dashboard/specs/repeat.jest.ts
+58
-25
No files found.
public/app/features/dashboard/specs/repeat.jest.ts
View file @
88760983
import
_
from
'lodash'
;
import
{
DashboardModel
}
from
'../dashboard_model'
;
import
{
expect
}
from
'test/lib/common'
;
jest
.
mock
(
'app/core/services/context_srv'
,
()
=>
({
...
...
@@ -153,13 +154,13 @@ describe('given dashboard with row repeat', function() {
beforeEach
(
function
()
{
dashboardJSON
=
{
panels
:
[
{
id
:
1
,
type
:
'row'
,
repeat
:
'apps'
,
gridPos
:
{
x
:
0
,
y
:
0
,
h
:
1
,
w
:
24
}
},
{
id
:
1
,
type
:
'row'
,
gridPos
:
{
x
:
0
,
y
:
0
,
h
:
1
,
w
:
24
},
repeat
:
'apps'
},
{
id
:
2
,
type
:
'graph'
,
gridPos
:
{
x
:
0
,
y
:
1
,
h
:
1
,
w
:
6
}},
{
id
:
3
,
type
:
'graph'
,
gridPos
:
{
x
:
6
,
y
:
1
,
h
:
1
,
w
:
6
}},
{
id
:
4
,
type
:
'row'
,
gridPos
:
{
x
:
0
,
y
:
2
,
h
:
1
,
w
:
24
}},
{
id
:
5
,
type
:
'graph'
,
gridPos
:
{
x
:
0
,
y
:
3
,
h
:
1
,
w
:
12
}},
],
templating
:
{
templating
:
{
list
:
[{
name
:
'apps'
,
current
:
{
...
...
@@ -191,10 +192,12 @@ describe('given dashboard with row repeat', function() {
dashboardJSON
.
templating
.
list
[
0
].
options
[
2
].
selected
=
true
;
dashboard
=
new
DashboardModel
(
dashboardJSON
);
dashboard
.
processRepeats
();
expect
(
dashboard
.
panels
[
1
].
scopedVars
).
toMatchObject
({
apps
:
{
text
:
'se1'
,
value
:
'se1'
}});
expect
(
dashboard
.
panels
[
4
].
scopedVars
).
toMatchObject
({
apps
:
{
text
:
'se2'
,
value
:
'se2'
}});
const
scopedVars
=
_
.
compact
(
_
.
map
(
dashboard
.
panels
,
(
panel
)
=>
{
if
(
panel
.
scopedVars
)
{
return
panel
.
scopedVars
.
apps
.
value
;
}
return
panel
.
scopedVars
?
panel
.
scopedVars
.
apps
.
value
:
null
;
}));
expect
(
scopedVars
).
toEqual
([
...
...
@@ -204,6 +207,11 @@ describe('given dashboard with row repeat', function() {
]);
});
it
(
'should repeat only configured row'
,
function
()
{
expect
(
dashboard
.
panels
[
6
].
id
).
toBe
(
4
);
expect
(
dashboard
.
panels
[
7
].
id
).
toBe
(
5
);
});
it
(
'should repeat only row if it is collapsed'
,
function
()
{
dashboardJSON
.
panels
=
[
{
...
...
@@ -227,6 +235,51 @@ describe('given dashboard with row repeat', function() {
expect
(
dashboard
.
panels
[
1
].
panels
).
toHaveLength
(
2
);
});
it
(
'should properly repeat multiple rows'
,
function
()
{
dashboardJSON
.
panels
=
[
{
id
:
1
,
type
:
'row'
,
gridPos
:
{
x
:
0
,
y
:
0
,
h
:
1
,
w
:
24
},
repeat
:
'apps'
},
// repeat
{
id
:
2
,
type
:
'graph'
,
gridPos
:
{
x
:
0
,
y
:
1
,
h
:
1
,
w
:
6
}},
{
id
:
3
,
type
:
'graph'
,
gridPos
:
{
x
:
6
,
y
:
1
,
h
:
1
,
w
:
6
}},
{
id
:
4
,
type
:
'row'
,
gridPos
:
{
x
:
0
,
y
:
2
,
h
:
1
,
w
:
24
}},
// don't touch
{
id
:
5
,
type
:
'graph'
,
gridPos
:
{
x
:
0
,
y
:
3
,
h
:
1
,
w
:
12
}},
{
id
:
6
,
type
:
'row'
,
gridPos
:
{
x
:
0
,
y
:
4
,
h
:
1
,
w
:
24
},
repeat
:
'hosts'
},
// repeat
{
id
:
7
,
type
:
'graph'
,
gridPos
:
{
x
:
0
,
y
:
5
,
h
:
1
,
w
:
6
}},
{
id
:
8
,
type
:
'graph'
,
gridPos
:
{
x
:
6
,
y
:
5
,
h
:
1
,
w
:
6
}}
];
dashboardJSON
.
templating
.
list
.
push
({
name
:
'hosts'
,
current
:
{
text
:
'backend01, backend02'
,
value
:
[
'backend01'
,
'backend02'
]
},
options
:
[
{
text
:
'backend01'
,
value
:
'backend01'
,
selected
:
true
},
{
text
:
'backend02'
,
value
:
'backend02'
,
selected
:
true
},
{
text
:
'backend03'
,
value
:
'backend03'
,
selected
:
false
}
]
});
dashboard
=
new
DashboardModel
(
dashboardJSON
);
dashboard
.
processRepeats
();
const
panel_types
=
_
.
map
(
dashboard
.
panels
,
'type'
);
expect
(
panel_types
).
toEqual
([
'row'
,
'graph'
,
'graph'
,
'row'
,
'graph'
,
'graph'
,
'row'
,
'graph'
,
'row'
,
'graph'
,
'graph'
,
'row'
,
'graph'
,
'graph'
,
]);
expect
(
dashboard
.
panels
[
0
].
scopedVars
[
'apps'
].
value
).
toBe
(
'se1'
);
expect
(
dashboard
.
panels
[
1
].
scopedVars
[
'apps'
].
value
).
toBe
(
'se1'
);
expect
(
dashboard
.
panels
[
3
].
scopedVars
[
'apps'
].
value
).
toBe
(
'se2'
);
expect
(
dashboard
.
panels
[
4
].
scopedVars
[
'apps'
].
value
).
toBe
(
'se2'
);
expect
(
dashboard
.
panels
[
8
].
scopedVars
[
'hosts'
].
value
).
toBe
(
'backend01'
);
expect
(
dashboard
.
panels
[
9
].
scopedVars
[
'hosts'
].
value
).
toBe
(
'backend01'
);
expect
(
dashboard
.
panels
[
11
].
scopedVars
[
'hosts'
].
value
).
toBe
(
'backend02'
);
expect
(
dashboard
.
panels
[
12
].
scopedVars
[
'hosts'
].
value
).
toBe
(
'backend02'
);
});
it
(
'should assign unique ids for repeated panels'
,
function
()
{
dashboardJSON
.
panels
=
[
{
...
...
@@ -252,26 +305,6 @@ describe('given dashboard with row repeat', function() {
}));
expect
(
panel_ids
.
length
).
toEqual
(
_
.
uniq
(
panel_ids
).
length
);
});
// it('should set scopedVars on panels', function() {
// expect(dashboard.panels[1].scopedVars).toMatchObject({apps: {text: 'se1', value: 'se1'}})
// });
// it('should repeat row and panels below two times', function() {
// expect(dashboard.panels).toMatchObject([
// // first (original row)
// {id: 1, type: 'row', repeat: 'apps', gridPos: {x: 0, y: 0, h: 1 , w: 24}},
// {id: 2, type: 'graph', gridPos: {x: 0, y: 1, h: 1 , w: 6}},
// {id: 3, type: 'graph', gridPos: {x: 6, y: 1, h: 1 , w: 6}},
// // repeated row
// {id: 1, type: 'row', repeatPanelId: 1, gridPos: {x: 0, y: 0, h: 1 , w: 24}},
// {id: 2, type: 'graph', repeatPanelId: 1, gridPos: {x: 0, y: 1, h: 1 , w: 6}},
// {id: 3, type: 'graph', repeatPanelId: 1, gridPos: {x: 6, y: 1, h: 1 , w: 6}},
// // row below dont touch
// {id: 4, type: 'row', gridPos: {x: 0, y: 2, h: 1 , w: 24}},
// {id: 5, type: 'graph', gridPos: {x: 0, y: 3, h: 1 , w: 12}},
// ]);
// });
});
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