import tap from 'tap'; import {parseLine as parse} from '../../parse/line.js'; const profile = { products: [ { id: 'nationalExpress', mode: 'train', name: 'InterCityExpress', short: 'ICE', vendo: 'ICE', ris: 'HIGH_SPEED_TRAIN', default: true, }, { id: 'bus', mode: 'bus', name: 'Bus', short: 'B', vendo: 'BUS', ris: 'BUS', default: true, }, ], parseOperator: _ => null }; const ctx = { data: {}, opt: {}, profile, }; tap.test('parses ICE leg correctly', (t) => { const input = { "journeyId": "foo", "verkehrsmittel": { "produktGattung": "ICE", "kategorie": "ICE", "name": "ICE 229", "nummer": "229", "richtung": "Wien Hbf", "typ": "PUBLICTRANSPORT", "zugattribute": [{ "kategorie": "BEFÖRDERER", "key": "BEF", "value": "DB Fernverkehr AG, Österreichische Bundesbahnen" },{ "kategorie": "FAHRRADMITNAHME", "key": "FR", "value": "Bicycles conveyed - subject to reservation", "teilstreckenHinweis": "(Mainz Hbf - Wien Meidling)" }], "kurzText": "ICE", "mittelText": "ICE 229", "langText": "ICE 229" } }; const expected = { type: 'line', id: 'ice-229', fahrtNr: 229, name: 'ICE 229', public: true, product: 'nationalExpress', productName: 'ICE', mode: 'train', operator: null, }; t.same(parse(ctx, input), expected); t.end(); }); tap.test('parses Bus trip correctly', (t) => { const input = { "reisetag": "2024-12-07", "regulaereVerkehrstage": "not every day", "irregulaereVerkehrstage": "7., 14. Dec 2024", "zugName": "Bus 807", "zugattribute": [ { "kategorie": "INFORMATION", "key": "cB", "value": "Tel. 0981-9714925, Anmeldung bis 90 Min. vor Abfahrt (Mo-So: 9-15 Uhr)" } ], "cancelled": false, }; const expected = { type: 'line', id: '', fahrtNr: undefined, name: 'Bus 807', public: true, product: undefined, productName: undefined, mode: undefined, operator: null }; t.same(parse(ctx, input), expected); t.end(); }); tap.test('parses Bus leg correctly', (t) => { const input = { "journeyId": "foo", "verkehrsmittel": { "produktGattung": "BUS", "kategorie": "Bus", "linienNummer": "807", "name": "Bus 807", "nummer": "807", "richtung": "Bahnhof, Dombühl", "typ": "PUBLICTRANSPORT", "zugattribute": [ { "kategorie": "INFORMATION", "key": "cB", "value": "Tel. 0981-9714925, Anmeldung bis 90 Min. vor Abfahrt (Mo-So: 9-15 Uhr)" } ], "kurzText": "Bus", "mittelText": "Bus 807", "langText": "Bus 807" } }; const expected = { type: 'line', id: 'bus-807', fahrtNr: '807', name: 'Bus 807', public: true, product: 'bus', productName: 'Bus', mode: 'bus', operator: null }; t.same(parse(ctx, input), expected); t.end(); }); tap.test('parses ris entry correctly', (t) => { const input = { "journeyID": "20241207-79693bf3-2ed5-325f-8a99-154bad5f5cf3", "transport": { "type": "HIGH_SPEED_TRAIN", "journeyDescription": "RB 51 (15538)", "label": "", "category": "RB", "categoryInternal": "RB", "number": 15538, "line": "51", "replacementTransport": null, } }; const expected = { type: 'line', id: 'rb-51-15538', fahrtNr: 15538, name: 'RB 51 (15538)', public: true, product: 'nationalExpress', productName: 'RB', mode: 'train', operator: null }; t.same(parse(ctx, input), expected); t.end(); });