import tap from 'tap' import {parseWarning as parse} from '../../parse/warning.js' import merge from 'lodash/merge.js' const profile = { parseProductsBitmask: (_, bitmask) => [bitmask], parseDateTime: (_, date, time) => date + ':' + time } const ctx = { data: {}, opt: {}, profile } tap.test('parses warnings correctly', (t) => { const input = { hid: 'some warning ID', // todo: null head: 'some
summary', // todo: null text: 'some long
text

body', // todo: null icon: {type: 'HimWarn'}, // todo: null prio: 123, cat: 1 } const expected = { id: 'some warning ID', type: 'status', summary: 'some\nsummary', text: 'some long\ntext\n\nbody', icon: {type: 'HimWarn'}, priority: 123, category: 1 } t.same(parse(ctx, input), expected) // without basic fields t.same(parse(ctx, {...input, hid: null}), {...expected, id: null}) t.same(parse(ctx, {...input, head: null}), {...expected, summary: null}) t.same(parse(ctx, {...input, text: null}), {...expected, text: null}) t.same(parse(ctx, {...input, cat: null}), {...expected, category: null}) // without icon t.same(parse(ctx, {...input, icon: null}), { ...expected, type: 'warning', icon: null }) // with products t.same(parse(ctx, {...input, prod: 123}), { ...expected, products: [123] }) // validFrom, validUntil, modified t.same(parse(ctx, { ...input, sDate: '20190101', sTime: '094020', eDate: '20190101', eTime: '114020', lModDate: '20190101', lModTime: '084020', }), { ...expected, validFrom: '20190101:094020', validUntil: '20190101:114020', modified: '20190101:084020' }) // events const ctxWithHimMsgEventL = { ...ctx, res: { common: { himMsgEventL: [{ fDate: '20211111', fTime: '123456', tDate: '20211221', tTime: '012345', }], }, }, } const inputWithEventRefL = { ...input, eventRefL: [0], } const expectedWithEvents = { ...expected, events: [{ fromLocation: null, toLocation: null, start: '20211111:123456', end: '20211221:012345', sections: [], }], } t.same(parse( ctxWithHimMsgEventL, inputWithEventRefL, ), expectedWithEvents) // without res.common.himMsgEventL[].{f,t}Time t.same(parse( merge(ctxWithHimMsgEventL, { res: { common: { himMsgEventL: [{ fTime: null, tTime: null, }], }, }, }), inputWithEventRefL, ), merge(expectedWithEvents, { events: [{ start: '20211111:000000', end: '20211221:000000', }] })) // todo: .edges t.end() })