From 4575bbbb694629aa8af28414cfb62c9f576051fc Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 7 Mar 2026 16:41:42 +0000 Subject: [PATCH] refactor(telegram): dedupe topic agent routing tests --- .../bot-message-context.topic-agentid.test.ts | 141 +++++------------- 1 file changed, 38 insertions(+), 103 deletions(-) diff --git a/src/telegram/bot-message-context.topic-agentid.test.ts b/src/telegram/bot-message-context.topic-agentid.test.ts index b3b634b4768..d3e24060278 100644 --- a/src/telegram/bot-message-context.topic-agentid.test.ts +++ b/src/telegram/bot-message-context.topic-agentid.test.ts @@ -21,58 +21,51 @@ vi.mock("../config/config.js", async (importOriginal) => { }); describe("buildTelegramMessageContext per-topic agentId routing", () => { + function buildForumMessage(threadId = 3) { + return { + message_id: 1, + chat: { + id: -1001234567890, + type: "supergroup" as const, + title: "Forum", + is_forum: true, + }, + date: 1700000000, + text: "@bot hello", + message_thread_id: threadId, + from: { id: 42, first_name: "Alice" }, + }; + } + + async function buildForumContext(params: { + threadId?: number; + topicConfig?: Record; + }) { + return await buildTelegramMessageContextForTest({ + message: buildForumMessage(params.threadId), + options: { forceWasMentioned: true }, + resolveGroupActivation: () => true, + resolveTelegramGroupConfig: () => ({ + groupConfig: { requireMention: false }, + ...(params.topicConfig ? { topicConfig: params.topicConfig } : {}), + }), + }); + } + beforeEach(() => { vi.mocked(loadConfig).mockReturnValue(defaultRouteConfig as never); }); it("uses group-level agent when no topic agentId is set", async () => { - const ctx = await buildTelegramMessageContextForTest({ - message: { - message_id: 1, - chat: { - id: -1001234567890, - type: "supergroup", - title: "Forum", - is_forum: true, - }, - date: 1700000000, - text: "@bot hello", - message_thread_id: 3, - from: { id: 42, first_name: "Alice" }, - }, - options: { forceWasMentioned: true }, - resolveGroupActivation: () => true, - resolveTelegramGroupConfig: () => ({ - groupConfig: { requireMention: false }, - topicConfig: { systemPrompt: "Be nice" }, - }), - }); + const ctx = await buildForumContext({ topicConfig: { systemPrompt: "Be nice" } }); expect(ctx).not.toBeNull(); expect(ctx?.ctxPayload?.SessionKey).toBe("agent:main:telegram:group:-1001234567890:topic:3"); }); it("routes to topic-specific agent when agentId is set", async () => { - const ctx = await buildTelegramMessageContextForTest({ - message: { - message_id: 1, - chat: { - id: -1001234567890, - type: "supergroup", - title: "Forum", - is_forum: true, - }, - date: 1700000000, - text: "@bot hello", - message_thread_id: 3, - from: { id: 42, first_name: "Alice" }, - }, - options: { forceWasMentioned: true }, - resolveGroupActivation: () => true, - resolveTelegramGroupConfig: () => ({ - groupConfig: { requireMention: false }, - topicConfig: { agentId: "zu", systemPrompt: "I am Zu" }, - }), + const ctx = await buildForumContext({ + topicConfig: { agentId: "zu", systemPrompt: "I am Zu" }, }); expect(ctx).not.toBeNull(); @@ -82,27 +75,7 @@ describe("buildTelegramMessageContext per-topic agentId routing", () => { it("different topics route to different agents", async () => { const buildForTopic = async (threadId: number, agentId: string) => - await buildTelegramMessageContextForTest({ - message: { - message_id: 1, - chat: { - id: -1001234567890, - type: "supergroup", - title: "Forum", - is_forum: true, - }, - date: 1700000000, - text: "@bot hello", - message_thread_id: threadId, - from: { id: 42, first_name: "Alice" }, - }, - options: { forceWasMentioned: true }, - resolveGroupActivation: () => true, - resolveTelegramGroupConfig: () => ({ - groupConfig: { requireMention: false }, - topicConfig: { agentId }, - }), - }); + await buildForumContext({ threadId, topicConfig: { agentId } }); const ctxA = await buildForTopic(1, "main"); const ctxB = await buildForTopic(3, "zu"); @@ -117,26 +90,8 @@ describe("buildTelegramMessageContext per-topic agentId routing", () => { }); it("ignores whitespace-only agentId and uses group-level agent", async () => { - const ctx = await buildTelegramMessageContextForTest({ - message: { - message_id: 1, - chat: { - id: -1001234567890, - type: "supergroup", - title: "Forum", - is_forum: true, - }, - date: 1700000000, - text: "@bot hello", - message_thread_id: 3, - from: { id: 42, first_name: "Alice" }, - }, - options: { forceWasMentioned: true }, - resolveGroupActivation: () => true, - resolveTelegramGroupConfig: () => ({ - groupConfig: { requireMention: false }, - topicConfig: { agentId: " ", systemPrompt: "Be nice" }, - }), + const ctx = await buildForumContext({ + topicConfig: { agentId: " ", systemPrompt: "Be nice" }, }); expect(ctx).not.toBeNull(); @@ -152,27 +107,7 @@ describe("buildTelegramMessageContext per-topic agentId routing", () => { messages: { groupChat: { mentionPatterns: [] } }, } as never); - const ctx = await buildTelegramMessageContextForTest({ - message: { - message_id: 1, - chat: { - id: -1001234567890, - type: "supergroup", - title: "Forum", - is_forum: true, - }, - date: 1700000000, - text: "@bot hello", - message_thread_id: 3, - from: { id: 42, first_name: "Alice" }, - }, - options: { forceWasMentioned: true }, - resolveGroupActivation: () => true, - resolveTelegramGroupConfig: () => ({ - groupConfig: { requireMention: false }, - topicConfig: { agentId: "ghost" }, - }), - }); + const ctx = await buildForumContext({ topicConfig: { agentId: "ghost" } }); expect(ctx).not.toBeNull(); expect(ctx?.ctxPayload?.SessionKey).toContain("agent:main:");