| 
									
										
										
										
											2021-05-12 22:04:21 +08:00
										 |  |  | 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 | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-18 22:30:27 +08:00
										 |  |  |     const colorField = { | 
					
						
							|  |  |  |       config: { | 
					
						
							|  |  |  |         color: { | 
					
						
							|  |  |  |           mode: 'continuous-GrYlRd', | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       index: 7, | 
					
						
							|  |  |  |       name: 'color', | 
					
						
							|  |  |  |       type: 'number', | 
					
						
							|  |  |  |       values: new ArrayVector([0.5, 0.5, 0.5]), | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-12 22:04:21 +08:00
										 |  |  |     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]), | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2021-05-18 22:30:27 +08:00
										 |  |  |         color: colorField, | 
					
						
							| 
									
										
										
										
											2021-05-12 22:04:21 +08:00
										 |  |  |         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]), | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2021-05-18 22:30:27 +08:00
										 |  |  |         color: colorField, | 
					
						
							| 
									
										
										
										
											2021-05-12 22:04:21 +08:00
										 |  |  |         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]), | 
					
						
							|  |  |  |           }, | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2021-05-18 22:30:27 +08:00
										 |  |  |         color: colorField, | 
					
						
							| 
									
										
										
										
											2021-05-12 22:04:21 +08:00
										 |  |  |         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', | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ]); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }); |