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