import fs from "node:fs";import os from "node:os";import path from "node:path"; import { describe, expect, test } from "vitest"; import { runPersistenceMigrations } from "./migrator";import { openPersistenceSqliteDatabase } from "./sqliteLayer"; describe("persistence sqlite layer", () => { test("opens sqlite database and runs migrations idempotently", () => { const dir = fs.mkdtempSync(path.join(os.tmpdir(), "t3-persistence-sqlite-layer-")); const dbPath = path.join(dir, "state.sqlite"); try { const db = openPersistenceSqliteDatabase(dbPath); try { runPersistenceMigrations(db); runPersistenceMigrations(db); db.prepare( "INSERT INTO metadata (key, value_json) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value_json = excluded.value_json;", ).run("app.settings.v1", JSON.stringify({ theme: "dark" })); const row = db.prepare("SELECT value_json FROM metadata WHERE key = ? LIMIT 1;").get( "app.settings.v1", ) as { value_json?: string } | undefined; expect(row?.value_json).toBe(JSON.stringify({ theme: "dark" })); } finally { db.close(); } } finally { fs.rmSync(dir, { recursive: true, force: true }); } });});
import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { describe, expect, test } from "vitest";
import { runPersistenceMigrations } from "./migrator";
import { openPersistenceSqliteDatabase } from "./sqliteLayer";
describe("persistence sqlite layer", () => {
test("opens sqlite database and runs migrations idempotently", () => {
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "t3-persistence-sqlite-layer-"));
const dbPath = path.join(dir, "state.sqlite");
try {
const db = openPersistenceSqliteDatabase(dbPath);
try {
runPersistenceMigrations(db);
runPersistenceMigrations(db);
db.prepare(
"INSERT INTO metadata (key, value_json) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value_json = excluded.value_json;",
).run("app.settings.v1", JSON.stringify({ theme: "dark" }));
const row = db.prepare("SELECT value_json FROM metadata WHERE key = ? LIMIT 1;").get(
"app.settings.v1",
) as { value_json?: string } | undefined;
expect(row?.value_json).toBe(JSON.stringify({ theme: "dark" }));
} finally {
db.close();
}
} finally {
fs.rmSync(dir, { recursive: true, force: true });
}
});
});