import { describe, expect, it } from 'vitest'; import { ulid } from '../ulid.js'; import { idempotencyKeySchema, isoDateTimeSchema, traceIdSchema, ulidSchema } from './common.js'; describe('common schemas', () => { it('ulidSchema 接受应用侧生成的 ULID', () => { expect(ulidSchema.parse(ulid())).toHaveLength(26); expect(() => ulidSchema.parse('not-a-ulid')).toThrow(); }); it('isoDateTimeSchema 要求带时区', () => { expect(isoDateTimeSchema.parse('2026-11-02T08:00:00.000Z')).toBeTruthy(); expect(() => isoDateTimeSchema.parse('2026-11-02 08:00:00')).toThrow(); }); it('traceIdSchema 限制长度', () => { expect(traceIdSchema.parse('trace-12345678')).toBe('trace-12345678'); expect(() => traceIdSchema.parse('short')).toThrow(); }); it('idempotencyKeySchema 只接受可见 ASCII', () => { expect(idempotencyKeySchema.parse('idem-key-0001')).toBe('idem-key-0001'); expect(() => idempotencyKeySchema.parse('幂等键-0001')).toThrow(); expect(() => idempotencyKeySchema.parse('short')).toThrow(); }); });