'use strict' const tap = require('tap') const omit = require('lodash/omit') const parse = require('../../parse/line') const profile = { products: [ {id: 'train', bitmasks: [1]}, {id: 'ferry', bitmasks: [2]}, {id: 'bus', bitmasks: [4, 8]} ] } const ctx = { data: {}, opt: {}, profile } tap.test('parses lines correctly', (t) => { const input = { line: 'foo line', prodCtx: { lineId: 'Foo ', num: 123, // HAFAS endpoints commonly have these padded admin codes. admin: 'foo---', } } const expected = { type: 'line', id: 'foo', fahrtNr: 123, name: 'foo line', public: true, adminCode: 'foo---', } t.same(parse(ctx, input), expected) t.same(parse(ctx, { ...input, line: null, addName: input.line }), expected) t.same(parse(ctx, { ...input, line: null, name: input.line }), expected) // no prodCtx.lineId t.same(parse(ctx, { ...input, prodCtx: {...input.prodCtx, lineId: null} }), { ...expected, id: 'foo-line' }) // no prodCtx t.same(parse(ctx, { ...input, prodCtx: undefined }), { ...omit(expected, [ 'adminCode', ]), id: 'foo-line', fahrtNr: null, }) t.end() })