-
Notifications
You must be signed in to change notification settings - Fork 594
/
topology-model.spec.ts
95 lines (88 loc) · 3.21 KB
/
topology-model.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import * as _ from 'lodash';
import { ALL_APPLICATIONS_KEY } from '@console/shared/src';
import {
topologyDataModel,
dataModel,
MockResources,
sampleHelmResourcesMap,
} from '../../__tests__/topology-test-data';
import { topologyModelFromDataModel } from '../topology-model';
import { transformTopologyData } from '../data-transformer';
import { TopologyFilters } from '../../filters/filter-utils';
import { allowedResources } from '../../topology-utils';
import { DEFAULT_TOPOLOGY_FILTERS } from '../../redux/const';
describe('topology model ', () => {
let filters: TopologyFilters;
beforeEach(() => {
filters = _.cloneDeep(DEFAULT_TOPOLOGY_FILTERS);
});
it('should return topology model data', () => {
const newModel = topologyModelFromDataModel(topologyDataModel);
expect(newModel).toEqual(dataModel);
});
it('should have the correct nodes, groups, and edges when no filters', () => {
const topologyTransformedData = transformTopologyData(
_.cloneDeep(MockResources),
allowedResources,
undefined,
undefined,
sampleHelmResourcesMap,
);
const newModel = topologyModelFromDataModel(
topologyTransformedData,
ALL_APPLICATIONS_KEY,
filters,
);
expect(newModel.nodes.filter((n) => !n.group).length).toBe(6);
expect(newModel.nodes.filter((n) => n.group).length).toBe(3);
expect(newModel.edges.length).toBe(1);
});
it('should hide nodes not in the filtered application', () => {
const topologyTransformedData = transformTopologyData(
_.cloneDeep(MockResources),
allowedResources,
undefined,
undefined,
sampleHelmResourcesMap,
);
const newModel = topologyModelFromDataModel(topologyTransformedData, 'application-1', filters);
expect(newModel.nodes.filter((n) => !n.group).length).toBe(6);
expect(newModel.nodes.filter((n) => !n.group && n.visible).length).toBe(2);
expect(newModel.nodes.filter((n) => n.group).length).toBe(3);
expect(newModel.nodes.filter((n) => n.group && n.visible).length).toBe(1);
});
it('should flag application groups as collapsed when display filter is set', () => {
const topologyTransformedData = transformTopologyData(
_.cloneDeep(MockResources),
allowedResources,
undefined,
undefined,
sampleHelmResourcesMap,
);
filters.display.appGrouping = false;
const newModel = topologyModelFromDataModel(
topologyTransformedData,
ALL_APPLICATIONS_KEY,
filters,
);
expect(newModel.nodes.filter((n) => n.group).length).toBe(3);
expect(newModel.nodes.filter((n) => n.group && n.collapsed).length).toBe(2);
});
it('should flag operator groups as collapsed when display filter is set', () => {
const topologyTransformedData = transformTopologyData(
_.cloneDeep(MockResources),
allowedResources,
undefined,
undefined,
sampleHelmResourcesMap,
);
filters.display.operatorGrouping = false;
const newModel = topologyModelFromDataModel(
topologyTransformedData,
ALL_APPLICATIONS_KEY,
filters,
);
expect(newModel.nodes.filter((n) => n.group).length).toBe(3);
expect(newModel.nodes.filter((n) => n.group && n.collapsed).length).toBe(1);
});
});