import assert from "node:assert/strict"; import { test } from "node:test"; import { runCli } from "../src/cli.js"; function createBuffer() { let output = ""; return { stream: { write(chunk: string) { output += chunk; return true; } }, output: () => output }; } test("prints usage", async () => { const stdout = createBuffer(); const stderr = createBuffer(); const code = await runCli(["--help"], { stdout: stdout.stream, stderr: stderr.stream }); assert.equal(code, 0); assert.match(stdout.output(), /Commands:/); assert.equal(stderr.output(), ""); }); test("prints usage for bare invocation", async () => { const stdout = createBuffer(); const stderr = createBuffer(); const code = await runCli([], { stdout: stdout.stream, stderr: stderr.stream }); assert.equal(code, 0); assert.match(stdout.output(), /Commands:/); assert.equal(stderr.output(), ""); }); test("rejects unknown command", async () => { const stdout = createBuffer(); const stderr = createBuffer(); const code = await runCli(["bogus"], { stdout: stdout.stream, stderr: stderr.stream }); assert.equal(code, 1); assert.equal(stdout.output(), ""); assert.match(stderr.output(), /Unknown command: bogus/); }); test("dispatches known command with json flag", async () => { const stdout = createBuffer(); const stderr = createBuffer(); const code = await runCli( ["search", "Karma Police", "--limit", "3", "--json"], { stdout: stdout.stream, stderr: stderr.stream }, { search(args, deps) { deps.stdout.write(JSON.stringify(args)); return 0; } } ); assert.equal(code, 0); assert.deepEqual(JSON.parse(stdout.output()), { command: "search", positional: ["Karma Police"], json: true, public: false, limit: "3" }); assert.equal(stderr.output(), ""); });