/* eslint-disable @typescript-eslint/no-empty-function, @typescript-eslint/require-await */ import { describe, expect, test } from "bun:test"; import { mkdirSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; import type { ResolvedConfig } from "../../src/server/config/types"; import { bootstrap, type BootstrapDependencies } from "../../src/server/bootstrap"; import { createMemoryLogger } from "../../src/server/logger"; function makeTempConfig(overrides: Partial = {}): ResolvedConfig { const base = join(tmpdir(), `bootstrap-db-test-${Date.now()}-${Math.random().toString(36).slice(2)}`); mkdirSync(base, { recursive: true }); return { configDir: base, dataDir: join(base, "data"), host: "127.0.0.1", logging: { consoleLevel: "info", fileLevel: "info", filePath: join(base, "data", "logs", "test.log"), rotationFrequency: "daily", rotationMaxFiles: 14, rotationSizeBytes: 52428800, rotationSizeRaw: "50MB", }, port: 0, ...overrides, }; } describe("bootstrap 数据库集成", () => { test("启动时将数据库传递给 startServer", async () => { let started = false; let receivedDb: unknown = undefined; const cfg = makeTempConfig(); const mockLoadConfig = (async () => cfg) as unknown as BootstrapDependencies["loadConfig"]; const mockOnSignal = (_signal: string, _handler: () => void) => {}; const mockStartServer = (options: { db: unknown }) => { receivedDb = options.db; started = true; return { close: () => {} }; }; const deps: BootstrapDependencies = { createLogger: async () => createMemoryLogger(), loadConfig: mockLoadConfig, onSignal: mockOnSignal, startServer: mockStartServer, }; await bootstrap({ configPath: join(cfg.configDir, "config.yaml"), mode: "production" }, deps); expect(started).toBe(true); expect(receivedDb).not.toBeUndefined(); expect(typeof (receivedDb as { close?: unknown }).close).toBe("function"); }); });