50 lines
2.3 KiB
JavaScript
50 lines
2.3 KiB
JavaScript
import { test } from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { supportMinutes, parseSupporters, worksheetMinutes, firstName } from '../server/services/worksheetMinutes.js'
|
|
|
|
// Gleiche Faelle wie WOMS tests/unit/support.test.mjs (Rechenregel muss in beiden Systemen gleich sein)
|
|
const andrej = { employeeId: 'a', name: 'Andrej Stevanovski', task: 'Farbkonzept' }
|
|
const nico = { employeeId: 'n', name: 'Nico Rech', task: 'Texte' }
|
|
|
|
test('supportMinutes: Hälfte, aufgerundet auf 15', () => {
|
|
const cases = [[15, 15], [30, 15], [45, 30], [60, 30], [75, 45], [70, 45], [0, 0], [-5, 0], ['60', 30], [null, 0]]
|
|
for (const [total, expected] of cases) assert.equal(supportMinutes(total), expected, `${total}`)
|
|
})
|
|
|
|
test('parseSupporters ist fehlertolerant', () => {
|
|
assert.deepEqual(parseSupporters('kaputt'), [])
|
|
assert.deepEqual(parseSupporters('{}'), [])
|
|
assert.deepEqual(parseSupporters(null), [])
|
|
assert.deepEqual(parseSupporters(''), [])
|
|
const raw = '[{"employeeId":"a","name":"Andrej S","task":" Farbe "},{"employeeId":"a","name":"x","task":"y"},{"employeeId":"b","name":"Nico"},null,"x"]'
|
|
assert.deepEqual(parseSupporters(raw), [{ employeeId: 'a', name: 'Andrej S', task: 'Farbe' }])
|
|
assert.equal(parseSupporters([{ employeeId: 'a', name: 'A', task: 'x'.repeat(250) }])[0].task.length, 200)
|
|
})
|
|
|
|
test('parseSupporters meldet kaputte Werte einmal mit Kontext', () => {
|
|
const warned = []
|
|
const orig = console.warn
|
|
console.warn = (...args) => warned.push(args.join(' '))
|
|
try {
|
|
parseSupporters('kaputt', 'ws9')
|
|
parseSupporters('[]', 'ws8')
|
|
} finally {
|
|
console.warn = orig
|
|
}
|
|
assert.equal(warned.length, 1)
|
|
assert.match(warned[0], /\[unterstuetzung\] supporters unlesbar ws9/)
|
|
})
|
|
|
|
test('worksheetMinutes: Arbeitszeit plus je Person die Unterstützung', () => {
|
|
assert.equal(worksheetMinutes({ totalTime: 60, supporters: JSON.stringify([andrej, nico]) }), 120)
|
|
assert.equal(worksheetMinutes({ totalTime: 70, supporters: JSON.stringify([andrej]) }), 115)
|
|
assert.equal(worksheetMinutes({ totalTime: 45 }), 45)
|
|
assert.equal(worksheetMinutes({ totalTime: 0, supporters: JSON.stringify([andrej]) }), 0)
|
|
assert.equal(worksheetMinutes({ totalTime: 60, supporters: 'kaputt' }), 60)
|
|
})
|
|
|
|
test('firstName', () => {
|
|
assert.equal(firstName('Andrej Stevanovski'), 'Andrej')
|
|
assert.equal(firstName(''), '')
|
|
})
|