import { describe, expect, test } from "bun:test"; import { existsSync } from "node:fs"; import { join } from "node:path"; import { createDatabase } from "../../../src/server/db/connection"; import { createMemoryLogger } from "../../../src/server/logger"; import { closeSqliteForTest, createTestDatabase, makeTempDir, rmRetrySync } from "../../helpers"; describe("数据库初始化", () => { test("创建数据库文件并设置 PRAGMA", () => { const dir = makeTempDir("db-test"); const db = createDatabase(dir, createMemoryLogger()); try { const journalMode = db.query("PRAGMA journal_mode").get() as { journal_mode: string }; expect(journalMode.journal_mode).toBe("wal"); const foreignKeys = db.query("PRAGMA foreign_keys").get() as { foreign_keys: number }; expect(foreignKeys.foreign_keys).toBe(1); // PRAGMA busy_timeout was set (Bun SQLite may return different formats) const timeoutResult = db.query("PRAGMA busy_timeout").get() as Record; expect(timeoutResult).not.toBeNull(); closeSqliteForTest(db); } finally { rmRetrySync(dir); } }); test("在空数据目录中创建 alfred.db", () => { const handle = createTestDatabase("db-test"); try { handle.close(); expect(existsSync(join(handle.dir, "alfred.db"))).toBe(true); } finally { handle.cleanup(); } }); test("数据库连接可执行查询", () => { const handle = createTestDatabase("db-test"); try { const { db } = handle; db.exec("CREATE TABLE test (id TEXT PRIMARY KEY)"); db.exec("INSERT INTO test (id) VALUES ('1')"); const row = db.query("SELECT id FROM test WHERE id = '1'").get() as { id: string }; expect(row.id).toBe("1"); handle.close(); } finally { handle.cleanup(); } }); });