mirror of
				https://github.com/public-transport/db-vendo-client.git
				synced 2025-11-04 10:06:32 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			147 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import tap from 'tap';
 | 
						||
import {parseLocation as parse} from '../../parse/location.js';
 | 
						||
import {parseProducts} from '../../parse/products.js';
 | 
						||
 | 
						||
const profile = {
 | 
						||
	parseLocation: parse,
 | 
						||
	parseStationName: (_, name) => name.toLowerCase(),
 | 
						||
	parseProducts,
 | 
						||
	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,
 | 
						||
		name: 'Würzburg - Heuchelhof, Pergamonweg',
 | 
						||
		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: 'station',
 | 
						||
		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: 'station',
 | 
						||
		id: '683407',
 | 
						||
		name: 'Bahnhof, Rothenburg ob der Tauber',
 | 
						||
		location: {
 | 
						||
			type: 'location',
 | 
						||
			id: '683407',
 | 
						||
			latitude: 49.377180,
 | 
						||
			longitude: 10.190711,
 | 
						||
		},
 | 
						||
	});
 | 
						||
	t.end();
 | 
						||
});
 |