ci / 质量门禁 (push) Canceled after 0s
- 建立 pnpm workspace + Turborepo 单仓、ESLint 9/Prettier/commitlint/husky 门禁 - NestJS + Fastify API:统一错误体、trace_id、Zod 管道、/health 真实依赖探活、OpenAPI 3.1 契约 - Prisma 基线:outbox_events/idempotency_keys/system_configs 与首版迁移、幂等种子 - shared 契约包:错误码、权限点、ULID、游标分页、命名/时间工具 - ui 包与 Web 壳层:Semi + Remix 图标统一出口、Cloud Blue 视觉、登录/工作台/错误页 - worker 骨架、Playwright 冒烟、Gitea CI、OpenAPI 快照与 oasdiff 回退脚本 - 补充 A0 实施报告与本地开发说明
28 lines
1.1 KiB
TypeScript
28 lines
1.1 KiB
TypeScript
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();
|
|
});
|
|
});
|