mirror of
https://github.com/public-transport/db-vendo-client.git
synced 2025-02-22 22:59:35 +02:00
136 lines
3.8 KiB
JavaScript
136 lines
3.8 KiB
JavaScript
import tap from 'tap';
|
|
|
|
import {createClient} from '../../index.js';
|
|
import {profile as rawProfile} from '../../p/dbnav/index.js';
|
|
import {data as loyaltyCards} from '../../format/loyalty-cards.js';
|
|
|
|
const client = createClient(rawProfile, 'public-transport/hafas-client:test', {enrichStations: false});
|
|
const {profile} = client;
|
|
|
|
const opt = {
|
|
results: null,
|
|
via: null,
|
|
stopovers: false,
|
|
transfers: null,
|
|
transferTime: 0,
|
|
accessibility: 'none',
|
|
bike: false,
|
|
walkingSpeed: 'normal',
|
|
startWithWalking: true,
|
|
tickets: false,
|
|
polylines: false,
|
|
subStops: true,
|
|
entrances: true,
|
|
remarks: true,
|
|
scheduledDays: false,
|
|
departure: '2023-09-12T08:09:10+02:00',
|
|
products: {},
|
|
|
|
firstClass: false,
|
|
age: 24,
|
|
loyaltyCard: {
|
|
type: loyaltyCards.BAHNCARD,
|
|
discount: 25,
|
|
},
|
|
};
|
|
|
|
const berlinWienQuery0 = Object.freeze(
|
|
{
|
|
autonomeReservierung: false,
|
|
reservierungsKontingenteVorhanden: false,
|
|
einstiegsTypList: [
|
|
'STANDARD',
|
|
],
|
|
klasse: 'KLASSE_2',
|
|
reiseHin: {
|
|
wunsch: {
|
|
abgangsLocationId: 'A=1@L=8098160@',
|
|
verkehrsmittel: [
|
|
'ALL',
|
|
],
|
|
zeitWunsch: {
|
|
reiseDatum: '2024-12-07T23:50:12+01:00',
|
|
zeitPunktArt: 'ABFAHRT',
|
|
},
|
|
viaLocations: undefined,
|
|
zielLocationId: 'A=1@L=8000284@',
|
|
maxUmstiege: undefined,
|
|
minUmstiegsdauer: undefined,
|
|
fahrradmitnahme: false,
|
|
},
|
|
},
|
|
});
|
|
|
|
tap.test('formats a journeys() request correctly (DBnav)', (t) => {
|
|
const _opt = {...opt};
|
|
delete _opt.loyaltyCard;
|
|
delete _opt.age;
|
|
const ctx = {profile, opt: _opt};
|
|
|
|
const req = profile.formatJourneysReq(ctx, '8098160', '8000284', new Date('2024-12-07T23:50:12+01:00'), true, null);
|
|
t.same(req.body, {
|
|
...berlinWienQuery0,
|
|
reisendenProfil: {
|
|
reisende: [
|
|
{
|
|
ermaessigungen: [
|
|
'KEINE_ERMAESSIGUNG KLASSENLOS',
|
|
],
|
|
reisendenTyp: 'ERWACHSENER',
|
|
alter: undefined,
|
|
},
|
|
],
|
|
},
|
|
});
|
|
t.end();
|
|
});
|
|
|
|
|
|
tap.test('formats a journeys() request with BC correctly (DBnav)', (t) => {
|
|
const ctx = {profile, opt};
|
|
|
|
const req = profile.formatJourneysReq(ctx, '8098160', '8000284', new Date('2024-12-07T23:50:12+01:00'), true, null);
|
|
|
|
t.same(req.body, {
|
|
...berlinWienQuery0,
|
|
reisendenProfil: {
|
|
reisende: [
|
|
{
|
|
ermaessigungen: [
|
|
'BAHNCARD25 KLASSE_2',
|
|
],
|
|
reisendenTyp: 'JUGENDLICHER',
|
|
alter: 24,
|
|
},
|
|
],
|
|
},
|
|
});
|
|
t.end();
|
|
});
|
|
|
|
tap.test('formats a journeys() request with unlimited transfers (DBnav)', (t) => {
|
|
const _opt = {...opt};
|
|
const ctx = {profile, opt: _opt};
|
|
|
|
ctx.opt.transfers = 1; // 1 transfer
|
|
const reqOneTransfer = profile.formatJourneysReq(ctx, '8098160', '8000284', new Date('2024-12-07T23:50:12+01:00'), true, null);
|
|
t.equal(reqOneTransfer.body.reiseHin.wunsch.maxUmstiege, 1);
|
|
|
|
ctx.opt.transfers = 0; // no transfers
|
|
const reqZeroTransfers = profile.formatJourneysReq(ctx, '8098160', '8000284', new Date('2024-12-07T23:50:12+01:00'), true, null);
|
|
t.equal(reqZeroTransfers.body.reiseHin.wunsch.maxUmstiege, 0);
|
|
|
|
ctx.opt.transfers = null; // unconstrained transfers implicit
|
|
const reqUnlimitedTransfersImplicitNull = profile.formatJourneysReq(ctx, '8098160', '8000284', new Date('2024-12-07T23:50:12+01:00'), true, null);
|
|
t.equal(reqUnlimitedTransfersImplicitNull.body.reiseHin.wunsch.maxUmstiege, undefined);
|
|
|
|
ctx.opt.transfers = undefined; // unconstrained transfers implicit
|
|
const reqUnlimitedTransfersImplicit = profile.formatJourneysReq(ctx, '8098160', '8000284', new Date('2024-12-07T23:50:12+01:00'), true, null);
|
|
t.equal(reqUnlimitedTransfersImplicit.body.reiseHin.wunsch.maxUmstiege, undefined);
|
|
|
|
ctx.opt.transfers = -1; // unconstrained transfers explicit
|
|
const reqUnlimitedTransfersExplicit = profile.formatJourneysReq(ctx, '8098160', '8000284', new Date('2024-12-07T23:50:12+01:00'), true, null);
|
|
t.equal(reqUnlimitedTransfersExplicit.body.reiseHin.wunsch.maxUmstiege, undefined);
|
|
|
|
t.end();
|
|
});
|