From c95c6d72e9a3a2c60e444dffffedfbb10b88aa3b Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 5 Dec 2025 22:29:49 +0000 Subject: [PATCH] test: cover directive parsing and abort/restart prefixes --- src/auto-reply/reply.triggers.test.ts | 49 +++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/auto-reply/reply.triggers.test.ts diff --git a/src/auto-reply/reply.triggers.test.ts b/src/auto-reply/reply.triggers.test.ts new file mode 100644 index 000000000..94168c010 --- /dev/null +++ b/src/auto-reply/reply.triggers.test.ts @@ -0,0 +1,49 @@ +import { describe, expect, it, vi } from "vitest"; + +import { getReplyFromConfig } from "./reply.js"; + +const baseCfg = { + inbound: { + reply: { + mode: "command" as const, + command: ["echo", "{{Body}}"], + session: undefined, + }, + }, +}; + +describe("trigger handling", () => { + it("aborts even with timestamp prefix", async () => { + const runner = vi.fn(); + const res = await getReplyFromConfig( + { + Body: "[Dec 5 10:00] stop", + From: "+1000", + To: "+2000", + }, + {}, + baseCfg, + runner, + ); + const text = Array.isArray(res) ? res[0]?.text : res?.text; + expect(text).toBe("⚙️ Agent was aborted."); + expect(runner).not.toHaveBeenCalled(); + }); + + it("restarts even with prefix/whitespace", async () => { + const runner = vi.fn(); + const res = await getReplyFromConfig( + { + Body: " [Dec 5] /restart", + From: "+1001", + To: "+2000", + }, + {}, + baseCfg, + runner, + ); + const text = Array.isArray(res) ? res[0]?.text : res?.text; + expect(text?.startsWith("⚙️ Restarting" ?? "")).toBe(true); + expect(runner).not.toHaveBeenCalled(); + }); +});