feat(api): 搭建 API 与 Worker 骨架及契约基线

NestJS 11 + Fastify 统一错误体与 trace_id,/health 真实探活 DB/Redis,OpenAPI 3.1 契约含 20 个错误码;shared 包提供错误码、权限点、ULID、分页与通用 schema;worker 完成队列进程骨架。
This commit is contained in:
Stev_Wang committed 2026-11-02 17:20:46 +08:00
1 parent 09dbb27b66
commit 23067edb8f
70 files changed
+2445

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
import { afterEach, describe, expect, it, vi } from 'vitest';
import { testConfig } from '../testing/test-app';
import { PrismaService } from './prisma/prisma.service';
import { RedisService } from './redis/redis.service';
describe('PrismaService', () => {
it('关闭应用时断开 Prisma 连接', async () => {
const service = new PrismaService(testConfig);
const disconnect = vi.spyOn(service, '$disconnect').mockResolvedValue();
await service.onModuleDestroy();
expect(disconnect).toHaveBeenCalledTimes(1);
});
});
describe('RedisService', () => {
afterEach(() => {
vi.restoreAllMocks();
});
it('ping 返回 PONG', async () => {
const service = new RedisService(testConfig);
const client = service.getClient();
vi.spyOn(client, 'connect').mockResolvedValue(undefined);
vi.spyOn(client, 'ping').mockResolvedValue('PONG');
await expect(service.ping()).resolves.toBe('PONG');
});
it('关闭应用时断开 Redis 连接', () => {
const service = new RedisService(testConfig);
const client = service.getClient();
const disconnect = vi.spyOn(client, 'disconnect').mockReturnValue(undefined);
service.onModuleDestroy();
expect(disconnect).toHaveBeenCalledTimes(1);
});
});