mirror of
https://github.com/doum1004/llmwiki-cli.git
synced 2026-04-29 07:26:10 +02:00
70 lines
2.3 KiB
TypeScript
70 lines
2.3 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 { WikiManager } from "../src/lib/wiki.ts";
|
|
import type { StorageProvider } from "../src/types.ts";
|
|
|
|
let testDir: string;
|
|
let provider: StorageProvider;
|
|
|
|
beforeEach(async () => {
|
|
testDir = await mkdtemp(join(tmpdir(), "llmwiki-fs-"));
|
|
provider = new WikiManager(testDir);
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await rm(testDir, { recursive: true, force: true });
|
|
});
|
|
|
|
describe("FilesystemProvider", () => {
|
|
it("writePage + readPage round-trips content", async () => {
|
|
await provider.writePage("test.md", "hello world");
|
|
const content = await provider.readPage("test.md");
|
|
expect(content).toBe("hello world");
|
|
});
|
|
|
|
it("readPage returns null for missing page", async () => {
|
|
const content = await provider.readPage("nonexistent.md");
|
|
expect(content).toBeNull();
|
|
});
|
|
|
|
it("pageExists returns false for missing page", async () => {
|
|
expect(await provider.pageExists("nope.md")).toBe(false);
|
|
});
|
|
|
|
it("pageExists returns true after write", async () => {
|
|
await provider.writePage("exists.md", "content");
|
|
expect(await provider.pageExists("exists.md")).toBe(true);
|
|
});
|
|
|
|
it("appendPage returns false for missing page", async () => {
|
|
const ok = await provider.appendPage("missing.md", "more");
|
|
expect(ok).toBe(false);
|
|
});
|
|
|
|
it("appendPage appends to existing page", async () => {
|
|
await provider.writePage("page.md", "first\n");
|
|
const ok = await provider.appendPage("page.md", "second");
|
|
expect(ok).toBe(true);
|
|
const content = await provider.readPage("page.md");
|
|
expect(content).toBe("first\nsecond");
|
|
});
|
|
|
|
it("listPages returns written markdown files", async () => {
|
|
await provider.writePage("a.md", "a");
|
|
await provider.writePage("sub/b.md", "b");
|
|
const pages = await provider.listPages();
|
|
expect(pages).toContain("a.md");
|
|
expect(pages).toContain("sub/b.md");
|
|
});
|
|
|
|
it("listPages with dir scopes to subdirectory", async () => {
|
|
await provider.writePage("root.md", "r");
|
|
await provider.writePage("sub/child.md", "c");
|
|
const pages = await provider.listPages("sub");
|
|
expect(pages).toContain("sub/child.md");
|
|
expect(pages).not.toContain("root.md");
|
|
});
|
|
});
|