import { describe, expect, it } from "vitest" ;
import { getSlashCommands, helpText, parseCommand } from "./commands.js" ;
describe("parseCommand" , () => {
it("normalizes aliases and keeps command args" , () => {
expect(parseCommand("/elev full" )).toEqual({ name: "elevated" , args: "full" });
});
it("normalizes gateway-status aliases" , () => {
expect(parseCommand("/gwstatus" )).toEqual({ name: "gateway-status" , args: "" });
});
it("returns empty name for empty input" , () => {
expect(parseCommand(" " )).toEqual({ name: "" , args: "" });
});
});
describe("getSlashCommands" , () => {
it("provides level completions for built-in toggles" , () => {
const commands = getSlashCommands();
const verbose = commands.find((command) => command.name === "verbose" );
const activation = commands.find((command) => command.name === "activation" );
expect(verbose?.getArgumentCompletions?.("o" )).toEqual([
{ value: "on" , label: "on" },
{ value: "off" , label: "off" },
]);
expect(activation?.getArgumentCompletions?.("a" )).toEqual([
{ value: "always" , label: "always" },
]);
});
it("keeps session status on the shared command path and exposes gateway status separately" , () => {
const commands = getSlashCommands();
const status = commands.find((command) => command.name === "status" );
const gatewayStatus = commands.find((command) => command.name === "gateway-status" );
expect(status?.description).toBe("Show current status." );
expect(gatewayStatus?.description).toBe("Show gateway status summary" );
});
});
describe("helpText" , () => {
it("includes slash command help for aliases" , () => {
const output = helpText();
expect(output).toContain("/elevated <on|off|ask|full>" );
expect(output).toContain("/elev <on|off|ask|full>" );
expect(output).toContain("/gateway-status" );
expect(output).toContain("/gwstatus" );
});
});
Messung V0.5 in Prozent C=100 H=100 G=100
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland