mirror of
https://github.com/public-transport/db-vendo-client.git
synced 2025-02-23 15:19:35 +02:00
147 lines
2.9 KiB
JavaScript
147 lines
2.9 KiB
JavaScript
import tap from 'tap';
|
||
import omit from 'lodash/omit.js';
|
||
import {parseLocation as parse} from '../../parse/location.js';
|
||
import {parseBitmask as parseProductsBitmask} from '../../parse/products-bitmask.js'
|
||
|
||
const profile = {
|
||
parseLocation: parse,
|
||
parseStationName: (_, name) => name.toLowerCase(),
|
||
parseProductsBitmask,
|
||
products: [{
|
||
id: 'nationalExpress',
|
||
vendo: 'ICE',
|
||
},
|
||
{
|
||
id: 'national',
|
||
vendo: 'IC',
|
||
},
|
||
{
|
||
id: 'regional',
|
||
vendo: 'REGIONAL',
|
||
},
|
||
{
|
||
id: 'bus',
|
||
vendo: 'BUS',
|
||
},
|
||
{
|
||
id: 'taxi',
|
||
vendo: 'ANRUFPFLICHTIG',
|
||
}]
|
||
};
|
||
|
||
const ctx = {
|
||
data: {},
|
||
opt: {
|
||
linesOfStops: false,
|
||
subStops: true,
|
||
entrances: true,
|
||
},
|
||
profile,
|
||
};
|
||
|
||
tap.test('parses an address correctly', (t) => {
|
||
const input = {
|
||
"id": "A=2@O=Würzburg - Heuchelhof, Pergamonweg@X=9952209@Y=49736794@U=92@b=981423354@B=1@p=1706613073@",
|
||
"lat": 49.736794,
|
||
"lon": 9.952209,
|
||
"name": "Würzburg - Heuchelhof, Pergamonweg",
|
||
"products": [],
|
||
"type": "ADR"
|
||
};
|
||
|
||
const address = parse(ctx, input);
|
||
t.same(address, {
|
||
type: 'location',
|
||
id: null,
|
||
address: 'Würzburg - Heuchelhof, Pergamonweg',
|
||
latitude: 49.736794,
|
||
longitude: 9.952209,
|
||
});
|
||
|
||
t.end();
|
||
});
|
||
|
||
tap.test('parses a POI correctly', (t) => {
|
||
const input = {
|
||
"id": "A=4@O=Berlin, Pergamonkeller (Gastronomie)@X=13395473@Y=52520223@U=91@L=991526508@B=1@p=1732715706@",
|
||
"lat": 52.52022,
|
||
"lon": 13.395473,
|
||
"name": "Berlin, Pergamonkeller (Gastronomie)",
|
||
"products": [],
|
||
"type": "POI"
|
||
};
|
||
|
||
const poi = parse(ctx, input);
|
||
t.same(poi, {
|
||
type: 'location',
|
||
poi: true,
|
||
id: '991526508',
|
||
name: 'Berlin, Pergamonkeller (Gastronomie)',
|
||
latitude: 52.52022,
|
||
longitude: 13.395473,
|
||
});
|
||
t.end();
|
||
});
|
||
|
||
tap.test('parses a stop correctly', (t) => {
|
||
const input = {
|
||
"extId": "8012622",
|
||
"id": "A=1@O=Perleberg@X=11852322@Y=53071252@U=81@L=8012622@B=1@p=1733173731@i=U×008027183@",
|
||
"lat": 53.07068,
|
||
"lon": 11.85039,
|
||
"name": "Perleberg",
|
||
"products": [
|
||
"REGIONAL",
|
||
"BUS",
|
||
"ANRUFPFLICHTIG"
|
||
],
|
||
"type": "ST"
|
||
};
|
||
|
||
const stop = parse(ctx, input);
|
||
t.same(stop, {
|
||
type: 'stop',
|
||
id: '8012622',
|
||
name: 'Perleberg',
|
||
location: {
|
||
type: 'location',
|
||
id: '8012622',
|
||
latitude: 53.07068,
|
||
longitude: 11.85039,
|
||
},
|
||
products: {
|
||
"nationalExpress": false,
|
||
"national": false,
|
||
"regional": true,
|
||
"bus": true,
|
||
"taxi": true
|
||
}
|
||
});
|
||
t.end();
|
||
});
|
||
|
||
tap.test('falls back to coordinates from `lid', (t) => {
|
||
const input = {
|
||
"id": "A=1@O=Bahnhof, Rothenburg ob der Tauber@X=10190711@Y=49377180@U=80@L=683407@",
|
||
"name": "Bahnhof, Rothenburg ob der Tauber",
|
||
"bahnhofsInfoId": "5393",
|
||
"extId": "683407",
|
||
"adminID": "vgn063",
|
||
"kategorie": "Bus",
|
||
"nummer": "2524"
|
||
};
|
||
|
||
const stop = parse(ctx, input);
|
||
t.same(stop, {
|
||
type: 'stop',
|
||
id: '683407',
|
||
name: 'Bahnhof, Rothenburg ob der Tauber',
|
||
location: {
|
||
type: 'location',
|
||
id: '683407',
|
||
latitude: 49.377180,
|
||
longitude: 10.190711,
|
||
}
|
||
});
|
||
t.end();
|
||
});
|