import { describe, expect, it, vi } from "vitest";import { openSqliteDatabase } from "./sqliteAdapter";describe("sqliteAdapter", () => { it("opens a database and runs basic statements", () => { const db = openSqliteDatabase(":memory:"); db.exec("CREATE TABLE sample (id INTEGER PRIMARY KEY AUTOINCREMENT, value TEXT NOT NULL);"); const insertResult = db.prepare("INSERT INTO sample (value) VALUES (?);").run("hello") as { changes?: number; lastInsertRowid?: number; }; expect(insertResult.changes).toBe(1); const row = db.prepare("SELECT value FROM sample WHERE id = ?;").get(1) as | { value?: string } | undefined; expect(row?.value).toBe("hello"); const rows = db.prepare("SELECT value FROM sample ORDER BY id ASC;").all() as Array<{ value?: string; }>; expect(rows.map((entry) => entry.value)).toEqual(["hello"]); db.close(); }); it("throws a helpful error when node:sqlite is unavailable", () => { const missingModuleError = new Error("No such built-in module: node:sqlite"); (missingModuleError as NodeJS.ErrnoException).code = "ERR_UNKNOWN_BUILTIN_MODULE"; const requireFn = vi.fn((specifier: string) => { if (specifier === "node:sqlite") { throw missingModuleError; } throw new Error(`Unexpected module request: ${specifier}`); }); expect(() => openSqliteDatabase(":memory:", requireFn as never, false)).toThrow( "node:sqlite is unavailable", ); });});
import { describe, expect, it, vi } from "vitest";
import { openSqliteDatabase } from "./sqliteAdapter";
describe("sqliteAdapter", () => {
it("opens a database and runs basic statements", () => {
const db = openSqliteDatabase(":memory:");
db.exec("CREATE TABLE sample (id INTEGER PRIMARY KEY AUTOINCREMENT, value TEXT NOT NULL);");
const insertResult = db.prepare("INSERT INTO sample (value) VALUES (?);").run("hello") as {
changes?: number;
lastInsertRowid?: number;
};
expect(insertResult.changes).toBe(1);
const row = db.prepare("SELECT value FROM sample WHERE id = ?;").get(1) as
| { value?: string }
| undefined;
expect(row?.value).toBe("hello");
const rows = db.prepare("SELECT value FROM sample ORDER BY id ASC;").all() as Array<{
value?: string;
}>;
expect(rows.map((entry) => entry.value)).toEqual(["hello"]);
db.close();
});
it("throws a helpful error when node:sqlite is unavailable", () => {
const missingModuleError = new Error("No such built-in module: node:sqlite");
(missingModuleError as NodeJS.ErrnoException).code = "ERR_UNKNOWN_BUILTIN_MODULE";
const requireFn = vi.fn((specifier: string) => {
if (specifier === "node:sqlite") {
throw missingModuleError;
}
throw new Error(`Unexpected module request: ${specifier}`);
});
expect(() => openSqliteDatabase(":memory:", requireFn as never, false)).toThrow(
"node:sqlite is unavailable",
);
});
});