mirror of
https://github.com/wassname/pi-lgtm.git
synced 2026-06-27 16:46:17 +08:00
reject task-management verbs in /lgtm
This commit is contained in:
+2
-2
@@ -70,8 +70,8 @@ export function parseLgtmArgs(args: string): LgtmCommandSpec {
|
|||||||
if (trimmed === "*") return { kind: "view_all" };
|
if (trimmed === "*") return { kind: "view_all" };
|
||||||
|
|
||||||
const tokens = trimmed.split(/[\s,]+/).map(token => token.trim()).filter(Boolean);
|
const tokens = trimmed.split(/[\s,]+/).map(token => token.trim()).filter(Boolean);
|
||||||
if (tokens[0] === "clear") {
|
if (["clear", "delete"].includes(tokens[0])) {
|
||||||
return { kind: "error", message: "Task clearing lives in /tasks now. /lgtm is viewer-only." };
|
return { kind: "error", message: "Task management lives in /tasks now. /lgtm is viewer-only." };
|
||||||
}
|
}
|
||||||
|
|
||||||
return { kind: "view", ids: tokens.map(token => token.replace(/^#/, "")).filter(Boolean) };
|
return { kind: "view", ids: tokens.map(token => token.replace(/^#/, "")).filter(Boolean) };
|
||||||
|
|||||||
@@ -55,9 +55,10 @@ describe("parseLgtmArgs", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("rejects task-management forms", () => {
|
it("rejects task-management forms", () => {
|
||||||
expect(parseLgtmArgs("clear")).toEqual({ kind: "error", message: "Task clearing lives in /tasks now. /lgtm is viewer-only." });
|
expect(parseLgtmArgs("clear")).toEqual({ kind: "error", message: "Task management lives in /tasks now. /lgtm is viewer-only." });
|
||||||
expect(parseLgtmArgs("clear *")).toEqual({ kind: "error", message: "Task clearing lives in /tasks now. /lgtm is viewer-only." });
|
expect(parseLgtmArgs("clear *")).toEqual({ kind: "error", message: "Task management lives in /tasks now. /lgtm is viewer-only." });
|
||||||
expect(parseLgtmArgs("clear #7")).toEqual({ kind: "error", message: "Task clearing lives in /tasks now. /lgtm is viewer-only." });
|
expect(parseLgtmArgs("clear #7")).toEqual({ kind: "error", message: "Task management lives in /tasks now. /lgtm is viewer-only." });
|
||||||
|
expect(parseLgtmArgs("delete #7")).toEqual({ kind: "error", message: "Task management lives in /tasks now. /lgtm is viewer-only." });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -104,6 +105,20 @@ describe("/lgtm command", () => {
|
|||||||
await command.handler("clear 1", { ui });
|
await command.handler("clear 1", { ui });
|
||||||
|
|
||||||
expect(harness.sentMessages).toHaveLength(0);
|
expect(harness.sentMessages).toHaveLength(0);
|
||||||
expect(ui.notify).toHaveBeenCalledWith("Task clearing lives in /tasks now. /lgtm is viewer-only.", "error");
|
expect(ui.notify).toHaveBeenCalledWith("Task management lives in /tasks now. /lgtm is viewer-only.", "error");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("rejects /lgtm delete and points task management back to /tasks", async () => {
|
||||||
|
const harness = makeHarness();
|
||||||
|
await harness.execTool("TaskCreate", { subject: "Task A", description: "Desc", done_criterion: "done" });
|
||||||
|
|
||||||
|
const ui = harness.makeUi();
|
||||||
|
const command = harness.commands.get("lgtm");
|
||||||
|
if (!command) throw new Error("/lgtm not registered");
|
||||||
|
|
||||||
|
await command.handler("delete 1", { ui });
|
||||||
|
|
||||||
|
expect(harness.sentMessages).toHaveLength(0);
|
||||||
|
expect(ui.notify).toHaveBeenCalledWith("Task management lives in /tasks now. /lgtm is viewer-only.", "error");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user