mirror of
https://github.com/public-transport/db-vendo-client.git
synced 2025-02-23 15:19:35 +02:00
120 lines
2.5 KiB
JavaScript
120 lines
2.5 KiB
JavaScript
'use strict'
|
|
|
|
const tap = require('tap')
|
|
const parse = require('../../parse/warning')
|
|
const merge = require('lodash/merge')
|
|
|
|
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<br>summary', // todo: null
|
|
text: 'some long<br>text<br><br />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()
|
|
})
|