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