db-vendo-client/test/format/db-journeys-query.js
2024-12-07 23:48:08 +00:00

118 lines
No EOL
2.4 KiB
JavaScript

import tap from 'tap';
import {createClient} from '../../index.js';
import {profile as rawProfile} from '../../p/db/index.js';
import {data as loyaltyCards} from '../../p/db/loyalty-cards.js';
const client = createClient(rawProfile, 'public-transport/hafas-client:test');
const {profile} = client;
const opt = {
results: null,
via: null,
stopovers: false,
transfers: -1,
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(
{
"abfahrtsHalt": "A=1@L=8098160@",
"anfrageZeitpunkt": "2024-12-07T23:50:12",
"ankunftsHalt": "A=1@L=8000284@",
"ankunftSuche": "ABFAHRT",
"klasse": "KLASSE_2",
"produktgattungen": [
"ICE",
"EC_IC",
"IR",
"REGIONAL",
"SBAHN",
"BUS",
"SCHIFF",
"UBAHN",
"TRAM",
"ANRUFPFLICHTIG"
],
"schnelleVerbindungen": true,
"sitzplatzOnly": false,
"bikeCarriage": false,
"reservierungsKontingenteVorhanden": false,
"nurDeutschlandTicketVerbindungen": false,
"deutschlandTicketVorhanden": false
});
tap.test('formats a journeys() request correctly (DB)', (t) => {
const _opt = {...opt};
delete _opt.loyaltyCard;
delete _opt.age;
const ctx = {profile, opt: _opt};
// transformJourneysQuery() mutates its 2nd argument!
const query = {...berlinWienQuery0};
const req = profile.transformJourneysQuery(ctx, query);
t.same(req.body, {
...berlinWienQuery0,
reisende: [
{
"typ": "ERWACHSENER",
"ermaessigungen": [
{
"art": "KEINE_ERMAESSIGUNG",
"klasse": "KLASSENLOS"
}
],
"alter": [],
"anzahl": 1
}
]
});
t.end();
});
tap.test('formats a journeys() request with BC correctly (DB)', (t) => {
const ctx = {profile, opt};
// transformJourneysQuery() mutates its 2nd argument!
const query = {...berlinWienQuery0};
const req = profile.transformJourneysQuery(ctx, query);
t.same(req.body, {
...berlinWienQuery0,
reisende: [
{
"typ": "JUGENDLICHER",
"ermaessigungen": [
{
"art": "BAHNCARD25",
"klasse": "KLASSE_2"
}
],
"alter": ["24"],
"anzahl": 1
}
]
});
t.end();
});