32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { CharacterDraftSchema } from './index'
|
|
|
|
const draft = {
|
|
name: 'Iris Vale',
|
|
concept: 'A patient relay mechanic who hears impossible harmonics.',
|
|
abilities: { str: 9, dex: 13, con: 12, int: 16, wis: 14, cha: 10 },
|
|
hp: 12,
|
|
maxHp: 12,
|
|
defense: 13,
|
|
proficiency: 2,
|
|
inventory: ['Signal lens', 'Field toolkit'],
|
|
persona: {
|
|
voice: 'Precise, with dry humor.',
|
|
motivation: 'Prove the relay is speaking from the future.',
|
|
flaw: 'Treats every warning as a puzzle.',
|
|
bond: 'Will not abandon another crew member.',
|
|
},
|
|
}
|
|
|
|
describe('CharacterDraftSchema', () => {
|
|
it('accepts a complete editable 13+ character draft', () => {
|
|
expect(CharacterDraftSchema.parse(draft)).toEqual(draft)
|
|
expect(CharacterDraftSchema.toJSONSchema()).toMatchObject({ type: 'object' })
|
|
})
|
|
|
|
it('rejects invalid server-facing mechanics', () => {
|
|
expect(() => CharacterDraftSchema.parse({ ...draft, hp: 20, maxHp: 10 })).toThrow()
|
|
expect(() => CharacterDraftSchema.parse({ ...draft, defense: 99 })).toThrow()
|
|
})
|
|
})
|