-
Notifications
You must be signed in to change notification settings - Fork 25
Expand file tree
/
Copy pathnetzgrafik.default.spec.ts
More file actions
182 lines (165 loc) · 8.39 KB
/
netzgrafik.default.spec.ts
File metadata and controls
182 lines (165 loc) · 8.39 KB
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
import netzgrafikDefaultJson from "./netzgrafik_default.json";
import {NetzgrafikDefault} from "./netzgrafik.default";
import {NetzgrafikTestData} from "./test-data/netzgrafik";
import {DataService} from "../services/data/data.service";
import {LogPublishersService} from "../logger/log.publishers.service";
import {LogService} from "../logger/log.service";
import {LabelService} from "../services/data/label.service";
import {LabelGroupService} from "../services/data/labelgroup.service";
import {NetzgrafikColoringService} from "../services/data/netzgrafikColoring.service";
import {NodeService} from "../services/data/node.service";
import {NoteService} from "../services/data/note.service";
import {ResourceService} from "../services/data/resource.service";
import {StammdatenService} from "../services/data/stammdaten.service";
import {TrainrunService} from "../services/data/trainrun.service";
import {TrainrunSectionService} from "../services/data/trainrunsection.service";
import {FilterService} from "../services/ui/filter.service";
describe("NetzgrafikDefault", () => {
let dataService: DataService;
let nodeService: NodeService;
let resourceService: ResourceService;
let trainrunService: TrainrunService;
let trainrunSectionService: TrainrunSectionService;
let stammdatenService: StammdatenService;
let noteService: NoteService;
let logService: LogService = null;
let logPublishersService: LogPublishersService = null;
let labelGroupService: LabelGroupService = null;
let labelService: LabelService = null;
let filterService: FilterService = null;
let netzgrafikColoringService: NetzgrafikColoringService = null;
beforeEach(() => {
stammdatenService = new StammdatenService();
resourceService = new ResourceService();
logPublishersService = new LogPublishersService();
logService = new LogService(logPublishersService);
labelGroupService = new LabelGroupService(logService);
labelService = new LabelService(logService, labelGroupService);
filterService = new FilterService(labelService, labelGroupService);
trainrunService = new TrainrunService(logService, labelService, filterService);
trainrunSectionService = new TrainrunSectionService(logService, trainrunService, filterService);
nodeService = new NodeService(
logService,
resourceService,
trainrunService,
trainrunSectionService,
labelService,
filterService,
);
noteService = new NoteService(logService, labelService, filterService);
netzgrafikColoringService = new NetzgrafikColoringService(logService);
dataService = new DataService(
resourceService,
nodeService,
trainrunSectionService,
trainrunService,
stammdatenService,
noteService,
labelService,
labelGroupService,
filterService,
netzgrafikColoringService,
);
});
// TODO: broken until the numberOfStops migration is completely done
// need to be replaced with tests importing a graph without any numberOfStops
describe("normal case", () => {
// needs to be updated to new format (no longer numberOfStops but the complete graph nodes + links)
it("should load and serialize default netzgrafikDto (no trainruns) without changes", () => {
const inputDto = NetzgrafikDefault.getDefaultNetzgrafik();
dataService.loadNetzgrafikDto(inputDto);
const outputJson = dataService.getNetzgrafikDto();
expect(JSON.stringify(inputDto, null, 2)).toEqual(JSON.stringify(outputJson, null, 2));
});
it("should load and serialize demo netzgrafikDto (complete variant) without changes", () => {
const inputDto = NetzgrafikDefault.getNetzgrafikDemoStandaloneGithub();
dataService.loadNetzgrafikDto(inputDto);
const outputJson = dataService.getNetzgrafikDto();
// The demo file should be up-to-date with numberOfStops: 0 and collapsed nodes
// already in place. No expansion should occur.
expect(JSON.stringify(inputDto, null, 2)).toEqual(JSON.stringify(outputJson, null, 2));
});
});
describe("handling old files with numberOfStops", () => {
describe("2 nodes", () => {
// A -> B has 1 stop
it("should replace the numberOfStops: 1 with an equivalent graph portion", () => {
const inputDto = NetzgrafikTestData.getLegacyNtezgrafik2Nodes();
dataService.loadNetzgrafikDto(inputDto);
const outputJson = dataService.getNetzgrafikDto();
// we expect to have a new node between A and B
// the existing trainrunSection A -> B to now be A -> NEW
// and a new trainrunSection NEW -> B
const newNode = outputJson.nodes[2];
expect(newNode.betriebspunktName).toBe("NEW");
expect(newNode.positionX).toBe(1488);
expect(newNode.positionY).toBe(512);
expect(outputJson.trainrunSections[0].sourceNodeId).toBe(11);
expect(outputJson.trainrunSections[0].targetNodeId).toBe(newNode.id);
expect(outputJson.trainrunSections[1].sourceNodeId).toBe(newNode.id);
expect(outputJson.trainrunSections[1].targetNodeId).toBe(12);
expect(outputJson.trainrunSections[0].numberOfStops).toBe(0);
expect(outputJson.trainrunSections[1].numberOfStops).toBe(0);
});
it("should replace the numberOfStops: 3 with an equivalent graph portion", () => {
const inputDto = NetzgrafikTestData.getLegacyNtezgrafik2Nodes();
inputDto.trainrunSections[0].numberOfStops = 3;
dataService.loadNetzgrafikDto(inputDto);
// before
// A ------ B
// after
// A ------ C ------ D ------ E ------ B
const outputJson = dataService.getNetzgrafikDto();
const newNode1 = outputJson.nodes[2];
expect(newNode1.betriebspunktName).toBe("NEW");
expect(newNode1.positionX).toBe(1488);
expect(newNode1.positionY).toBe(512);
const newNode2 = outputJson.nodes[3];
expect(newNode2.betriebspunktName).toBe("NEW");
expect(newNode2.positionX).toBe(1576);
expect(newNode2.positionY).toBe(512);
const newNode3 = outputJson.nodes[4];
expect(newNode3.betriebspunktName).toBe("NEW");
expect(newNode3.positionX).toBe(1620);
expect(newNode3.positionY).toBe(512);
expect(outputJson.trainrunSections[0].sourceNodeId).toBe(11);
expect(outputJson.trainrunSections[0].targetNodeId).toBe(newNode1.id);
expect(outputJson.trainrunSections[1].sourceNodeId).toBe(newNode1.id);
expect(outputJson.trainrunSections[1].targetNodeId).toBe(newNode2.id);
expect(outputJson.trainrunSections[2].sourceNodeId).toBe(newNode2.id);
expect(outputJson.trainrunSections[2].targetNodeId).toBe(newNode3.id);
expect(outputJson.trainrunSections[3].sourceNodeId).toBe(newNode3.id);
expect(outputJson.trainrunSections[3].targetNodeId).toBe(12);
expect(outputJson.trainrunSections[0].numberOfStops).toBe(0);
expect(outputJson.trainrunSections[1].numberOfStops).toBe(0);
expect(outputJson.trainrunSections[2].numberOfStops).toBe(0);
expect(outputJson.trainrunSections[3].numberOfStops).toBe(0);
});
});
describe("3 nodes", () => {
// A -> B -> C
// each trainrunSection with 1 stop
it("should replace the numberOfStops: 1 with an equivalent graph portion for each section", () => {
const inputDto = NetzgrafikTestData.getLegacyNtezgrafik3Nodes();
dataService.loadNetzgrafikDto(inputDto);
const outputJson = dataService.getNetzgrafikDto();
const newNode1 = outputJson.nodes[3];
expect(newNode1.betriebspunktName).toBe("NEW");
expect(newNode1.positionX).toBe(1488);
expect(newNode1.positionY).toBe(512);
const newNode2 = outputJson.nodes[4];
expect(newNode2.betriebspunktName).toBe("NEW");
expect(newNode2.positionX).toBe(1808);
expect(newNode2.positionY).toBe(544);
expect(outputJson.trainrunSections[0].sourceNodeId).toBe(11);
expect(outputJson.trainrunSections[0].targetNodeId).toBe(newNode1.id);
expect(outputJson.trainrunSections[2].sourceNodeId).toBe(newNode1.id);
expect(outputJson.trainrunSections[2].targetNodeId).toBe(12);
expect(outputJson.trainrunSections[1].sourceNodeId).toBe(12);
expect(outputJson.trainrunSections[1].targetNodeId).toBe(newNode2.id);
expect(outputJson.trainrunSections[3].sourceNodeId).toBe(newNode2.id);
expect(outputJson.trainrunSections[3].targetNodeId).toBe(13);
});
});
});
});