52 lines
3.3 KiB
JavaScript
52 lines
3.3 KiB
JavaScript
import test from 'node:test'
|
||
import assert from 'node:assert/strict'
|
||
import { loadModule } from './load.mjs'
|
||
|
||
const v = await loadModule('src/lib/ticketView.js')
|
||
|
||
test('displayDate und displayTime: lesbar normalisiert, sonst Rohtext', () => {
|
||
for (const [raw, want] of [['2.5.2026', '02.05.2026'], ['31.02.2026', '31.02.2026'], ['2026-10-07T09:00:00.000Z', '2026-10-07T09:00:00.000Z'], [' ', ''], [undefined, '']]) assert.equal(v.displayDate(raw), want, String(raw))
|
||
for (const [raw, want] of [['0930', '09:30'], ['9:30', '09:30'], ['2560', '2560'], ['ab 9', 'ab 9'], ['', '']]) assert.equal(v.displayTime(raw), want, raw)
|
||
})
|
||
|
||
test('appointmentText: kein Rückfall, Rohtext bei Unlesbarem', () => {
|
||
const t = (o) => v.appointmentText(o)
|
||
assert.equal(t({ startDate: '2.5.2026', startTime: '0930', endTime: '1030' }), '02.05.2026, 09:30–10:30')
|
||
assert.equal(t({ startDate: '02.05.2026', startTime: '0930' }), '02.05.2026, 09:30')
|
||
assert.equal(t({ startDate: '02.05.2026', endTime: '1030' }), '02.05.2026')
|
||
assert.equal(t({ startDate: '31.02.2026', startTime: '0900' }), '31.02.2026, 09:00')
|
||
assert.equal(t({ startDate: '', startTime: '0900' }), '')
|
||
assert.equal(t({}), '')
|
||
assert.equal(v.dueText({ deadline: '5.10.2026' }), '05.10.2026')
|
||
assert.equal(v.dueText({}), '')
|
||
})
|
||
|
||
test('ticketNumber, createdDate, shortName', () => {
|
||
assert.equal(v.ticketNumber({ woid: '100131', $id: 'x' }), '100131')
|
||
assert.equal(v.ticketNumber({ $id: '66f1c2a9abcde' }), 'abcde')
|
||
assert.equal(v.ticketNumber({}), '')
|
||
assert.ok(v.createdDate({ $createdAt: '2026-10-01T10:00:00.000Z' }) instanceof Date)
|
||
assert.ok(v.createdDate({ createdAt: '2026-10-01T10:00:00.000Z' }) instanceof Date)
|
||
assert.equal(v.createdDate({ $createdAt: 'kaputt' }), null)
|
||
assert.equal(v.createdDate({}), null)
|
||
for (const [raw, want] of [['Kenso Grimm', 'Kenso G.'], [' Anna Maria Meier ', 'Anna M.'], ['Andrej', 'Andrej'], ['', '']]) assert.equal(v.shortName(raw), want)
|
||
})
|
||
|
||
const emps = [{ userId: 'u1', displayName: 'Kenso Grimm' }, { userId: 'u2', displayName: 'Andrej' }, { displayName: 'Ohne Login' }]
|
||
|
||
test('assigneeLabel: Niemand, Liste, assignedName, Unbekannt', () => {
|
||
assert.deepEqual(v.assigneeLabel({ assignedTo: '' }, emps), { text: 'Niemand', none: true })
|
||
assert.deepEqual(v.assigneeLabel({ assignedTo: 'u1' }, emps), { text: 'Kenso G.', none: false })
|
||
assert.equal(v.assigneeLabel({ assignedTo: 'u9', assignedName: 'Justin Nowak' }, emps).text, 'Justin N.')
|
||
assert.equal(v.assigneeLabel({ assignedTo: 'u9' }, emps).text, 'Unbekannt')
|
||
assert.equal(v.assigneeLabel({ assignedTo: 'u1', assignedName: 'Kenso Grimm' }, []).text, 'Kenso G.')
|
||
})
|
||
|
||
test('assigneeOptions: aktueller Wert bleibt immer wählbar', () => {
|
||
assert.deepEqual(v.assigneeOptions({ assignedTo: 'u1' }, emps), [{ value: '', label: 'Nicht zugewiesen' }, { value: 'u1', label: 'Kenso Grimm' }, { value: 'u2', label: 'Andrej' }])
|
||
assert.deepEqual(v.assigneeOptions({ assignedTo: 'u9', assignedName: 'Justin Nowak' }, emps).at(-1), { value: 'u9', label: 'Justin Nowak' })
|
||
assert.deepEqual(v.assigneeOptions({ assignedTo: 'u9' }, emps).at(-1), { value: 'u9', label: 'Unbekannte Person' })
|
||
assert.deepEqual(v.assigneeOptions({ assignedTo: '' }, []), [{ value: '', label: 'Nicht zugewiesen' }])
|
||
assert.equal(v.assigneeOptions({ assignedTo: 'u1' }, []).at(-1).label, 'Unbekannte Person')
|
||
})
|