db-vendo-client/test/parse/line.js
2024-12-08 21:42:57 +00:00

174 lines
3.3 KiB
JavaScript

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();
});