Skip to content

Commit f69b61d

Browse files
committed
import: handle importing old files with numberOfStops
1 parent 7536578 commit f69b61d

File tree

7 files changed

+926
-23
lines changed

7 files changed

+926
-23
lines changed

src/app/sample-netzgrafik/netzgrafik.default.spec.ts

Lines changed: 105 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import netzgrafikDefaultJson from "./netzgrafik_default.json";
22
import {NetzgrafikDefault} from "./netzgrafik.default";
3+
import {NetzgrafikTestData} from "./test-data/netzgrafik";
34
import {DataService} from "../services/data/data.service";
45
import {LogPublishersService} from "../logger/log.publishers.service";
56
import {LogService} from "../logger/log.service";
@@ -63,21 +64,115 @@ describe("NetzgrafikDefault", () => {
6364
);
6465
});
6566

66-
it("should load and serialize default netzgrafikDto (no trainruns) without changes", () => {
67-
const inputDto = NetzgrafikDefault.getDefaultNetzgrafik();
67+
// TODO: broken until the numberOfStops migration is completely done
68+
describe("normal case", () => {
69+
// needs to be updated to new format (no longer numberOfStops but the complete graph nodes + links)
70+
it("should load and serialize default netzgrafikDto (no trainruns) without changes", () => {
71+
const inputDto = NetzgrafikDefault.getDefaultNetzgrafik();
6872

69-
dataService.loadNetzgrafikDto(inputDto);
73+
dataService.loadNetzgrafikDto(inputDto);
7074

71-
const outputJson = dataService.getNetzgrafikDto();
72-
expect(JSON.stringify(inputDto, null, 2)).toEqual(JSON.stringify(outputJson, null, 2));
75+
const outputJson = dataService.getNetzgrafikDto();
76+
expect(JSON.stringify(inputDto, null, 2)).toEqual(JSON.stringify(outputJson, null, 2));
77+
});
78+
79+
it("should load and serialize demo netzgrafikDto (complete variant) without changes", () => {
80+
const inputDto = NetzgrafikDefault.getNetzgrafikDemoStandaloneGithub();
81+
82+
dataService.loadNetzgrafikDto(inputDto);
83+
84+
const outputJson = dataService.getNetzgrafikDto();
85+
expect(JSON.stringify(inputDto, null, 2)).toEqual(JSON.stringify(outputJson, null, 2));
86+
});
7387
});
7488

75-
it("should load and serialize demo netzgrafikDto (complete variant) without changes", () => {
76-
const inputDto = NetzgrafikDefault.getNetzgrafikDemoStandaloneGithub();
89+
describe("handling old files with numberOfStops", () => {
90+
describe("2 nodes", () => {
91+
// A -> B has 1 stop
92+
it("should replace the numberOfStops: 1 with an equivalent graph portion", () => {
93+
const inputDto = NetzgrafikTestData.getLegacyNtezgrafik2Nodes();
94+
95+
dataService.loadNetzgrafikDto(inputDto);
96+
97+
const outputJson = dataService.getNetzgrafikDto();
98+
99+
// we expect to have a new node between A and B
100+
// the existing trainrunSection A -> B to now be A -> NEW
101+
// and a new trainrunSection NEW -> B
102+
const newNode = outputJson.nodes[2];
103+
expect(newNode.betriebspunktName).toBe("NEW");
104+
expect(newNode.positionX).toBe(1488);
105+
expect(newNode.positionY).toBe(512);
106+
expect(outputJson.trainrunSections[0].sourceNodeId).toBe(11);
107+
expect(outputJson.trainrunSections[0].targetNodeId).toBe(newNode.id);
108+
expect(outputJson.trainrunSections[1].sourceNodeId).toBe(newNode.id);
109+
expect(outputJson.trainrunSections[1].targetNodeId).toBe(12);
110+
expect(outputJson.trainrunSections[0].numberOfStops).toBe(0);
111+
expect(outputJson.trainrunSections[1].numberOfStops).toBe(0);
112+
});
113+
it("should replace the numberOfStops: 3 with an equivalent graph portion", () => {
114+
const inputDto = NetzgrafikTestData.getLegacyNtezgrafik2Nodes();
115+
inputDto.trainrunSections[0].numberOfStops = 3;
116+
117+
dataService.loadNetzgrafikDto(inputDto);
118+
// before
119+
// A ------ B
120+
// after
121+
// A ------ C ------ D ------ E ------ B
122+
const outputJson = dataService.getNetzgrafikDto();
123+
const newNode1 = outputJson.nodes[2];
124+
expect(newNode1.betriebspunktName).toBe("NEW");
125+
expect(newNode1.positionX).toBe(1488);
126+
expect(newNode1.positionY).toBe(512);
127+
const newNode2 = outputJson.nodes[3];
128+
expect(newNode2.betriebspunktName).toBe("NEW");
129+
expect(newNode2.positionX).toBe(1576);
130+
expect(newNode2.positionY).toBe(512);
131+
const newNode3 = outputJson.nodes[4];
132+
expect(newNode3.betriebspunktName).toBe("NEW");
133+
expect(newNode3.positionX).toBe(1620);
134+
expect(newNode3.positionY).toBe(512);
135+
expect(outputJson.trainrunSections[0].sourceNodeId).toBe(11);
136+
expect(outputJson.trainrunSections[0].targetNodeId).toBe(newNode1.id);
137+
expect(outputJson.trainrunSections[1].sourceNodeId).toBe(newNode1.id);
138+
expect(outputJson.trainrunSections[1].targetNodeId).toBe(newNode2.id);
139+
expect(outputJson.trainrunSections[2].sourceNodeId).toBe(newNode2.id);
140+
expect(outputJson.trainrunSections[2].targetNodeId).toBe(newNode3.id);
141+
expect(outputJson.trainrunSections[3].sourceNodeId).toBe(newNode3.id);
142+
expect(outputJson.trainrunSections[3].targetNodeId).toBe(12);
143+
expect(outputJson.trainrunSections[0].numberOfStops).toBe(0);
144+
expect(outputJson.trainrunSections[1].numberOfStops).toBe(0);
145+
expect(outputJson.trainrunSections[2].numberOfStops).toBe(0);
146+
expect(outputJson.trainrunSections[3].numberOfStops).toBe(0);
147+
});
148+
});
149+
describe("3 nodes", () => {
150+
// A -> B -> C
151+
// each trainrunSection with 1 stop
152+
it("should replace the numberOfStops: 1 with an equivalent graph portion for each section", () => {
153+
const inputDto = NetzgrafikTestData.getLegacyNtezgrafik3Nodes();
154+
155+
dataService.loadNetzgrafikDto(inputDto);
77156

78-
dataService.loadNetzgrafikDto(inputDto);
157+
const outputJson = dataService.getNetzgrafikDto();
79158

80-
const outputJson = dataService.getNetzgrafikDto();
81-
expect(JSON.stringify(inputDto, null, 2)).toEqual(JSON.stringify(outputJson, null, 2));
159+
const newNode1 = outputJson.nodes[3];
160+
expect(newNode1.betriebspunktName).toBe("NEW");
161+
expect(newNode1.positionX).toBe(1488);
162+
expect(newNode1.positionY).toBe(512);
163+
const newNode2 = outputJson.nodes[4];
164+
expect(newNode2.betriebspunktName).toBe("NEW");
165+
expect(newNode2.positionX).toBe(1808);
166+
expect(newNode2.positionY).toBe(544);
167+
expect(outputJson.trainrunSections[0].sourceNodeId).toBe(11);
168+
expect(outputJson.trainrunSections[0].targetNodeId).toBe(newNode1.id);
169+
expect(outputJson.trainrunSections[2].sourceNodeId).toBe(newNode1.id);
170+
expect(outputJson.trainrunSections[2].targetNodeId).toBe(12);
171+
expect(outputJson.trainrunSections[1].sourceNodeId).toBe(12);
172+
expect(outputJson.trainrunSections[1].targetNodeId).toBe(newNode2.id);
173+
expect(outputJson.trainrunSections[3].sourceNodeId).toBe(newNode2.id);
174+
expect(outputJson.trainrunSections[3].targetNodeId).toBe(13);
175+
});
176+
});
82177
});
83178
});

0 commit comments

Comments
 (0)