Skip to content

Commit 360d46a

Browse files
committed
add test: parse entire subscription ✅
1 parent 376a1cc commit 360d46a

File tree

4 files changed

+243
-0
lines changed

4 files changed

+243
-0
lines changed

test/fixtures/vrn-subscription.js

+151
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
'use strict'
2+
3+
module.exports = {
4+
id: 'foo',
5+
hysteresis: {minDeviationInterval: 5, notificationStart: 20},
6+
monitorFlags: ['AF', 'DF', 'DV', 'FTF', 'OF', 'PF'],
7+
connectionInfo: [{
8+
arrivalStation: '8000244',
9+
arrivalPlatform: '1',
10+
arrivalStationName: 'Mannheim Hbf',
11+
arrivalTime: '2020-11-28T18:29:00Z',
12+
departureStation: '8000156',
13+
departurePlatform: '4',
14+
departureStationName: 'Heidelberg Hbf',
15+
departureTime: '2020-11-28T18:13:00Z',
16+
productName: 'S 3'
17+
}],
18+
journeyRefreshToken: '¶HKI¶T$A=1@O=Heidelberg Hbf@L=8000156@a=128@$A=1@O=Mannheim Hbf@L=8000244@a=128@$202011281813$202011281829$S 3$$1$$$',
19+
journey: {
20+
type: 'journey',
21+
legs: [{
22+
tripId: '1|225439|0|80|28112020',
23+
direction: 'Germersheim',
24+
line: {
25+
type: 'line',
26+
id: 's-3',
27+
fahrtNr: '38352',
28+
name: 'S 3',
29+
public: true,
30+
mode: 'train',
31+
product: 'urban-train'
32+
},
33+
reachable: true,
34+
35+
origin: {
36+
type: 'stop',
37+
id: '8000156',
38+
name: 'Heidelberg Hbf',
39+
location: {
40+
type: 'location',
41+
id: '8000156',
42+
latitude: 49.403582,
43+
longitude: 8.67548
44+
},
45+
isMeta: false
46+
},
47+
departure: '2020-11-28T20:16:00+01:00',
48+
plannedDeparture: '2020-11-28T20:13:00+01:00',
49+
departureDelay: 180,
50+
departurePlatform: '4',
51+
plannedDeparturePlatform: '4',
52+
53+
destination: {
54+
type: 'stop',
55+
id: '8000244',
56+
name: 'Mannheim Hbf',
57+
location: {
58+
type: 'location',
59+
id: '8000244',
60+
latitude: 49.479181,
61+
longitude: 8.469268
62+
},
63+
isMeta: false
64+
},
65+
arrival: '2020-11-28T20:31:00+01:00',
66+
plannedArrival: '2020-11-28T20:29:00+01:00',
67+
arrivalDelay: 120,
68+
arrivalPlatform: '1',
69+
plannedArrivalPlatform: '1',
70+
71+
cycle: {min: 600, max: 1200, nr: 9},
72+
alternatives: [{
73+
tripId: '1|225210|0|80|28112020',
74+
line: {
75+
type: 'line',
76+
id: 's-2',
77+
fahrtNr: '38246',
78+
name: 'S 2',
79+
public: true,
80+
mode: 'train',
81+
product: 'urban-train'
82+
},
83+
direction: 'Kaiserslautern Hbf',
84+
when: '1970-01-01T20:33:00+01:00',
85+
plannedWhen: '1970-01-01T20:33:00+01:00',
86+
delay: null
87+
}, {
88+
tripId: '1|1204374|0|80|28112020',
89+
line: {
90+
type: 'line',
91+
id: 's-3',
92+
fahrtNr: '38354',
93+
name: 'S 3',
94+
public: true,
95+
mode: 'train',
96+
product: 'urban-train'
97+
},
98+
direction: 'Bruchsal',
99+
when: '1970-01-01T20:43:00+01:00',
100+
plannedWhen: '1970-01-01T20:43:00+01:00',
101+
delay: null
102+
}, {
103+
tripId: '1|225074|0|80|28112020',
104+
line: {
105+
type: 'line',
106+
id: 's-2',
107+
fahrtNr: '38140',
108+
name: 'S 2',
109+
public: true,
110+
mode: 'train',
111+
product: 'urban-train'
112+
},
113+
direction: 'Kaiserslautern Hbf',
114+
when: '1970-01-01T21:03:00+01:00',
115+
plannedWhen: '1970-01-01T21:03:00+01:00',
116+
delay: null
117+
}, {
118+
tripId: '1|225448|0|80|28112020',
119+
line: {
120+
type: 'line',
121+
id: 's-3',
122+
fahrtNr: '38358',
123+
name: 'S 3',
124+
public: true,
125+
mode: 'train',
126+
product: 'urban-train'
127+
},
128+
direction: 'Germersheim',
129+
when: '1970-01-01T21:13:00+01:00',
130+
plannedWhen: '1970-01-01T21:13:00+01:00',
131+
delay: null
132+
}, {
133+
tripId: '1|225213|0|80|28112020',
134+
line: {
135+
type: 'line',
136+
id: 's-2',
137+
fahrtNr: '38248',
138+
name: 'S 2',
139+
public: true,
140+
mode: 'train',
141+
product: 'urban-train'
142+
},
143+
direction: 'Kaiserslautern Hbf',
144+
when: '1970-01-01T21:33:00+01:00',
145+
plannedWhen: '1970-01-01T21:33:00+01:00',
146+
delay: null
147+
}],
148+
}],
149+
refreshToken: '¶HKI¶T$A=1@O=Heidelberg Hbf@L=8000156@a=128@$A=1@O=Mannheim Hbf@L=8000244@a=128@$202011281813$202011281829$S 3$$1$$$',
150+
},
151+
}

test/fixtures/vrn-subscription.json

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
{
2+
"result": {
3+
"resultCode": "OK"
4+
},
5+
"userId": "B3B3CBF1-86F3-4280-BFE4-E586A3624B1B",
6+
"subscrId": 1349811,
7+
"status": "ACTIVE",
8+
"channels": [
9+
{
10+
"type": "IPHONE",
11+
"address": "3b4b49491e1b1094be093ce6197a3fde1df6dccce33de17d37cf649ec8ec0aa7",
12+
"options": [
13+
{
14+
"type": "CUSTOMER_TYPE",
15+
"value": "com.deutschebahn.vrn"
16+
},
17+
{
18+
"type": "NO_SOUND",
19+
"value": "1"
20+
}
21+
],
22+
"active": true,
23+
"name": "PUSH_IPHONE",
24+
"channelId": "1952745D-F196-4775-B291-FA5CD84A81D4",
25+
"confirmed": true
26+
}
27+
],
28+
"conSubscr": {
29+
"ctxRecon": "¶HKI¶T$A=1@O=Heidelberg Hbf@L=8000156@a=128@$A=1@O=Mannheim Hbf@L=8000244@a=128@$202011281813$202011281829$S 3$$1$$$",
30+
"serviceDays": {
31+
"beginDate": "20191215",
32+
"endDate": "20211211",
33+
"selectedDays": "00011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011111001111100111110011110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
34+
},
35+
"hysteresis": {
36+
"minDeviationInterval": 5,
37+
"notificationStart": 20
38+
},
39+
"monitorFlags": [
40+
"AF",
41+
"DF",
42+
"DV",
43+
"FTF",
44+
"OF",
45+
"PF"
46+
],
47+
"data": "GZip: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",
48+
"connectionInfo": [
49+
{
50+
"arrivalStation": "8000244",
51+
"arrivalPlatform": "1",
52+
"arrivalStationName": "Mannheim Hbf",
53+
"arrivalTime": "2020-11-28T18:29:00Z",
54+
"departureStation": "8000156",
55+
"departurePlatform": "4",
56+
"departureStationName": "Heidelberg Hbf",
57+
"departureTime": "2020-11-28T18:13:00Z",
58+
"productName": "S 3"
59+
}
60+
]
61+
},
62+
"eventHistory": {
63+
"rtEvents": [],
64+
"himEvents": []
65+
}
66+
}

test/index.js

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ require('./vsn-remarks')
1818
require('./db-netz-remarks')
1919
require('./vsn-departures')
2020
require('./vrn-subscription-journey')
21+
require('./vrn-subscription')
2122

2223
require('./throttle')
2324
require('./retry')

test/vrn-subscription.js

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
'use strict'
2+
3+
const test = require('tape')
4+
5+
const createClient = require('..')
6+
const rawProfile = require('../p/vrn')
7+
const res = require('./fixtures/vrn-subscription.json')
8+
const expected = require('./fixtures/vrn-subscription.js')
9+
10+
const client = createClient(rawProfile, 'public-transport/hafas-client:test')
11+
const {profile} = client
12+
13+
const opt = {
14+
journey: true,
15+
activeDays: false,
16+
}
17+
18+
test('parses a subscription correctly (VRN)', (t) => {
19+
const common = profile.parseCommon({profile, opt, res})
20+
const ctx = {profile, opt, common, res}
21+
const sub = profile.parseSubscription(ctx, 'foo', res.conSubscr)
22+
23+
t.deepEqual(sub, expected)
24+
t.end()
25+
})

0 commit comments

Comments
 (0)