mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 02:23:31 -06:00
208 lines
4.6 KiB
TypeScript
208 lines
4.6 KiB
TypeScript
import { ArrayVector, createTheme } from '@grafana/data';
|
|
import { makeEdgesDataFrame, makeNodesDataFrame, processNodes } from './utils';
|
|
|
|
describe('processNodes', () => {
|
|
const theme = createTheme();
|
|
|
|
it('handles empty args', async () => {
|
|
expect(processNodes(undefined, undefined, theme)).toEqual({ nodes: [], edges: [] });
|
|
});
|
|
|
|
it('returns proper nodes and edges', async () => {
|
|
const { nodes, edges, legend } = processNodes(
|
|
makeNodesDataFrame(3),
|
|
makeEdgesDataFrame([
|
|
[0, 1],
|
|
[0, 2],
|
|
[1, 2],
|
|
]),
|
|
theme
|
|
);
|
|
|
|
const colorField = {
|
|
config: {
|
|
color: {
|
|
mode: 'continuous-GrYlRd',
|
|
},
|
|
},
|
|
index: 7,
|
|
name: 'color',
|
|
type: 'number',
|
|
values: new ArrayVector([0.5, 0.5, 0.5]),
|
|
};
|
|
|
|
expect(nodes).toEqual([
|
|
{
|
|
arcSections: [
|
|
{
|
|
config: {
|
|
color: {
|
|
fixedColor: 'green',
|
|
},
|
|
},
|
|
name: 'arc__success',
|
|
type: 'number',
|
|
values: new ArrayVector([0.5, 0.5, 0.5]),
|
|
},
|
|
{
|
|
config: {
|
|
color: {
|
|
fixedColor: 'red',
|
|
},
|
|
},
|
|
name: 'arc__errors',
|
|
type: 'number',
|
|
values: new ArrayVector([0.5, 0.5, 0.5]),
|
|
},
|
|
],
|
|
color: colorField,
|
|
dataFrameRowIndex: 0,
|
|
id: '0',
|
|
incoming: 0,
|
|
mainStat: {
|
|
config: {},
|
|
index: 3,
|
|
name: 'mainStat',
|
|
type: 'number',
|
|
values: new ArrayVector([0.1, 0.1, 0.1]),
|
|
},
|
|
secondaryStat: {
|
|
config: {},
|
|
index: 4,
|
|
name: 'secondaryStat',
|
|
type: 'number',
|
|
values: new ArrayVector([2, 2, 2]),
|
|
},
|
|
subTitle: 'service',
|
|
title: 'service:0',
|
|
},
|
|
{
|
|
arcSections: [
|
|
{
|
|
config: {
|
|
color: {
|
|
fixedColor: 'green',
|
|
},
|
|
},
|
|
name: 'arc__success',
|
|
type: 'number',
|
|
values: new ArrayVector([0.5, 0.5, 0.5]),
|
|
},
|
|
{
|
|
config: {
|
|
color: {
|
|
fixedColor: 'red',
|
|
},
|
|
},
|
|
name: 'arc__errors',
|
|
type: 'number',
|
|
values: new ArrayVector([0.5, 0.5, 0.5]),
|
|
},
|
|
],
|
|
color: colorField,
|
|
dataFrameRowIndex: 1,
|
|
id: '1',
|
|
incoming: 1,
|
|
mainStat: {
|
|
config: {},
|
|
index: 3,
|
|
name: 'mainStat',
|
|
type: 'number',
|
|
values: new ArrayVector([0.1, 0.1, 0.1]),
|
|
},
|
|
secondaryStat: {
|
|
config: {},
|
|
index: 4,
|
|
name: 'secondaryStat',
|
|
type: 'number',
|
|
values: new ArrayVector([2, 2, 2]),
|
|
},
|
|
subTitle: 'service',
|
|
title: 'service:1',
|
|
},
|
|
{
|
|
arcSections: [
|
|
{
|
|
config: {
|
|
color: {
|
|
fixedColor: 'green',
|
|
},
|
|
},
|
|
name: 'arc__success',
|
|
type: 'number',
|
|
values: new ArrayVector([0.5, 0.5, 0.5]),
|
|
},
|
|
{
|
|
config: {
|
|
color: {
|
|
fixedColor: 'red',
|
|
},
|
|
},
|
|
name: 'arc__errors',
|
|
type: 'number',
|
|
values: new ArrayVector([0.5, 0.5, 0.5]),
|
|
},
|
|
],
|
|
color: colorField,
|
|
dataFrameRowIndex: 2,
|
|
id: '2',
|
|
incoming: 2,
|
|
mainStat: {
|
|
config: {},
|
|
index: 3,
|
|
name: 'mainStat',
|
|
type: 'number',
|
|
values: new ArrayVector([0.1, 0.1, 0.1]),
|
|
},
|
|
secondaryStat: {
|
|
config: {},
|
|
index: 4,
|
|
name: 'secondaryStat',
|
|
type: 'number',
|
|
values: new ArrayVector([2, 2, 2]),
|
|
},
|
|
subTitle: 'service',
|
|
title: 'service:2',
|
|
},
|
|
]);
|
|
|
|
expect(edges).toEqual([
|
|
{
|
|
dataFrameRowIndex: 0,
|
|
id: '0--1',
|
|
mainStat: '',
|
|
secondaryStat: '',
|
|
source: '0',
|
|
target: '1',
|
|
},
|
|
{
|
|
dataFrameRowIndex: 1,
|
|
id: '0--2',
|
|
mainStat: '',
|
|
secondaryStat: '',
|
|
source: '0',
|
|
target: '2',
|
|
},
|
|
{
|
|
dataFrameRowIndex: 2,
|
|
id: '1--2',
|
|
mainStat: '',
|
|
secondaryStat: '',
|
|
source: '1',
|
|
target: '2',
|
|
},
|
|
]);
|
|
|
|
expect(legend).toEqual([
|
|
{
|
|
color: 'green',
|
|
name: 'arc__success',
|
|
},
|
|
{
|
|
color: 'red',
|
|
name: 'arc__errors',
|
|
},
|
|
]);
|
|
});
|
|
});
|