mirror of
https://github.com/doum1004/llmwiki-cli.git
synced 2026-05-16 16:12:09 +02:00
57 lines
1.8 KiB
TypeScript
57 lines
1.8 KiB
TypeScript
import { describe, it, expect, beforeEach, afterEach } from "bun:test";
|
|
import { mkdtemp, rm } from "fs/promises";
|
|
import { join } from "path";
|
|
import { tmpdir } from "os";
|
|
import { createProvider } from "../src/lib/storage.ts";
|
|
import { GitProvider } from "../src/lib/git-provider.ts";
|
|
import type { StorageProvider, WikiConfig } from "../src/types.ts";
|
|
|
|
function makeConfig(backend: WikiConfig["backend"] = "filesystem"): WikiConfig {
|
|
return {
|
|
name: "test",
|
|
domain: "general",
|
|
created: new Date().toISOString(),
|
|
backend,
|
|
paths: { raw: "raw", wiki: "wiki", schema: "SCHEMA.md" },
|
|
};
|
|
}
|
|
|
|
let testDir: string;
|
|
|
|
beforeEach(async () => {
|
|
testDir = await mkdtemp(join(tmpdir(), "llmwiki-storage-"));
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await rm(testDir, { recursive: true, force: true });
|
|
});
|
|
|
|
describe("createProvider", () => {
|
|
it("creates a filesystem provider", async () => {
|
|
const provider = await createProvider(makeConfig("filesystem"), testDir);
|
|
expect(provider).toBeDefined();
|
|
expect(provider.readPage).toBeInstanceOf(Function);
|
|
expect(provider.writePage).toBeInstanceOf(Function);
|
|
expect(provider.appendPage).toBeInstanceOf(Function);
|
|
expect(provider.pageExists).toBeInstanceOf(Function);
|
|
expect(provider.listPages).toBeInstanceOf(Function);
|
|
});
|
|
|
|
it("creates a git provider", async () => {
|
|
const gitProvider = await createProvider(makeConfig("git"), testDir);
|
|
expect(gitProvider).toBeInstanceOf(GitProvider);
|
|
});
|
|
|
|
it("rejects supabase without credentials", async () => {
|
|
expect(
|
|
createProvider(makeConfig("supabase"), testDir),
|
|
).rejects.toThrow("Supabase config missing");
|
|
});
|
|
|
|
it("throws for unknown backend", async () => {
|
|
expect(
|
|
createProvider(makeConfig("unknown" as any), testDir),
|
|
).rejects.toThrow('Unknown storage backend: "unknown"');
|
|
});
|
|
});
|