Files
digitalcatalog/tests/server/catalog-repo.test.ts
T

50 lines
1.4 KiB
TypeScript

import fs from "node:fs/promises";
import os from "node:os";
import path from "node:path";
import { afterEach, describe, expect, it } from "vitest";
import { openDatabase } from "../../server/db";
import { createCatalogRepo } from "../../server/catalog-repo";
const temps: string[] = [];
async function tempDb() {
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "dc-db-"));
temps.push(dir);
const db = await openDatabase(path.join(dir, "catalogs.sqlite"));
return createCatalogRepo(db);
}
afterEach(async () => {
await Promise.all(temps.splice(0).map((dir) => fs.rm(dir, { recursive: true, force: true })));
});
describe("catalog repo", () => {
it("inserts and reads a catalog", async () => {
const repo = await tempDb();
const created = repo.create({
id: "abc12xyz90",
deleteToken: "token-token-token-token-12",
title: "کاتالوگ",
effect: "magazine",
pageCount: 2,
});
const found = repo.getById("abc12xyz90");
expect(found).toEqual(created);
expect(found?.flipMs).toBe(1000);
expect(found?.deleteToken).toBe("token-token-token-token-12");
});
it("returns null after delete", async () => {
const repo = await tempDb();
repo.create({
id: "id1",
deleteToken: "tok",
title: "کاتالوگ",
effect: "slide",
pageCount: 1,
});
expect(repo.deleteById("id1")).toBe(true);
expect(repo.getById("id1")).toBeNull();
});
});