UNPKG

minotor

Version:

A lightweight client-side transit routing library.

65 lines (60 loc) 1.85 kB
import assert from 'node:assert'; import { Readable } from 'node:stream'; import { describe, it } from 'node:test'; import { RouteTypes } from '../../timetable/timetable.js'; import { parseRoutes } from '../routes.js'; describe('GTFS routes parser', () => { describe('parsing a well formed stream', () => { it('should find valid routes present in the source', async () => { const mockedStream = new Readable(); mockedStream.push( 'route_id,agency_id,route_short_name,route_long_name,route_desc,route_type\n', ); mockedStream.push('"routeA","agencyA","B1","BUS 1","A bus","3"\n'); mockedStream.push('"routeB","agencyB","T1","TRAM 1","A tram","0"\n'); mockedStream.push(null); const routes = await parseRoutes(mockedStream); assert.deepEqual( routes, new Map([ [ 'routeA', { type: RouteTypes.BUS, name: 'B1', }, ], [ 'routeB', { type: RouteTypes.TRAM, name: 'T1', }, ], ]), ); }); it('should ignore routes with invalid route type', async () => { const mockedStream = new Readable(); mockedStream.push( 'route_id,agency_id,route_short_name,route_long_name,route_desc,route_type\n', ); mockedStream.push('"routeA","agencyA","B1","BUS 1","A bus","3"\n'); mockedStream.push('"routeB","agencyB","T1","TRAM 1","A tram","8"\n'); mockedStream.push(null); const routes = await parseRoutes(mockedStream); assert.deepEqual( routes, new Map([ [ 'routeA', { type: RouteTypes.BUS, name: 'B1', }, ], ]), ); }); }); });