37 lines
1.6 KiB
JavaScript
37 lines
1.6 KiB
JavaScript
import { test } from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { KINDS, FEATURES, isKind, kindLabel, ticketTypeFor, servicesCatalog } from '../server/services/projectKinds.js'
|
|
|
|
test('Schlüssel und Labels in fester Reihenfolge', () => {
|
|
assert.deepEqual(KINDS.map(k => k.key), ['website', 'webapp', 'app', 'migration', 'automation', 'other'])
|
|
assert.deepEqual(KINDS.map(k => k.label), ['Website', 'Web-App', 'App', 'Migration/Umzug', 'Automation/Skript', 'Sonstiges'])
|
|
})
|
|
test('isKind', () => {
|
|
assert.equal(isKind('website'), true)
|
|
assert.equal(isKind('shop'), false)
|
|
assert.equal(isKind(''), false)
|
|
})
|
|
test('kindLabel', () => {
|
|
assert.equal(kindLabel('migration'), 'Migration/Umzug')
|
|
assert.equal(kindLabel('xyz'), '')
|
|
})
|
|
test('ticketTypeFor', () => {
|
|
assert.equal(ticketTypeFor('migration'), 'Migration')
|
|
assert.equal(ticketTypeFor('app'), 'Webpage')
|
|
})
|
|
test('Preview-Werte', () => {
|
|
const p = Object.fromEntries(KINDS.map(k => [k.key, k.preview]))
|
|
assert.deepEqual(p, { website: 'yes', webapp: 'possible', app: 'no', migration: 'no', automation: 'no', other: 'no' })
|
|
})
|
|
test('Features nur bei Website', () => {
|
|
assert.deepEqual(KINDS.find(k => k.key === 'website').features, ['analyse'])
|
|
for (const k of KINDS.filter(k => k.key !== 'website')) assert.deepEqual(k.features, [])
|
|
assert.deepEqual(FEATURES.analyse, { label: 'Website-Analyse', status: 'in_development' })
|
|
})
|
|
test('servicesCatalog und Beschreibungen', () => {
|
|
const c = servicesCatalog()
|
|
assert.equal(c.kinds, KINDS)
|
|
assert.equal(c.features, FEATURES)
|
|
for (const k of KINDS) assert.ok(k.description.length > 0)
|
|
})
|