31 lines
898 B
TypeScript
31 lines
898 B
TypeScript
import { describe, expect, it } from "bun:test";
|
|
import type { CommandMetadata } from "@oh-my-pi/pi-utils/cli";
|
|
import { commands } from "../src/cli-commands";
|
|
|
|
const METADATA_KEYS = [
|
|
"description",
|
|
"hidden",
|
|
"flags",
|
|
"args",
|
|
"examples",
|
|
] as const satisfies readonly (keyof CommandMetadata)[];
|
|
|
|
describe("CLI command help metadata", () => {
|
|
it("is complete and matches every loaded command", async () => {
|
|
for (const entry of commands) {
|
|
const help = entry.help;
|
|
expect(help, `${entry.name} must provide static help metadata`).toBeDefined();
|
|
if (!help) continue;
|
|
|
|
const Command = await entry.load();
|
|
for (const key of METADATA_KEYS) {
|
|
if (help[key] !== undefined) {
|
|
const expected: unknown = help[key];
|
|
const actual: unknown = Command[key];
|
|
expect(expected, `${entry.name}.${key} drifted from its command class`).toEqual(actual);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|