35 lines · 1.2 KB · TypeScript
RawDownload
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 });    }  });});