




















@@ -65,6 +65,13 @@ async function buildForumTopicMessageContext(accountId?: string) {
6565});
6666}
676768+function expectRouteArgs(): Record<string, unknown> {
69+expect(resolveTelegramConversationRouteMock).toHaveBeenCalledTimes(1);
70+return (
71+resolveTelegramConversationRouteMock.mock.calls[0] as unknown as [Record<string, unknown>]
72+)[0];
73+}
74+6875describe("buildTelegramMessageContext thread binding override", () => {
6976beforeEach(() => {
7077recordInboundSessionMock.mockClear();
@@ -82,20 +89,15 @@ describe("buildTelegramMessageContext thread binding override", () => {
82898390const ctx = await buildForumTopicMessageContext();
849185-expect(resolveTelegramConversationRouteMock).toHaveBeenCalledWith(
86-expect.objectContaining({
87-accountId: "default",
88-chatId: -100200300,
89-isGroup: true,
90-resolvedThreadId: 77,
91-replyThreadId: 77,
92-senderId: "42",
93-}),
94-);
92+const routeArgs = expectRouteArgs();
93+expect(routeArgs.accountId).toBe("default");
94+expect(routeArgs.chatId).toBe(-100200300);
95+expect(routeArgs.isGroup).toBe(true);
96+expect(routeArgs.resolvedThreadId).toBe(77);
97+expect(routeArgs.replyThreadId).toBe(77);
98+expect(routeArgs.senderId).toBe("42");
9599expect(ctx?.ctxPayload?.SessionKey).toBe("agent:codex-acp:session-1");
96-expect(ctx?.turn.record).toMatchObject({
97-updateLastRoute: undefined,
98-});
100+expect(ctx?.turn.record.updateLastRoute).toBeUndefined();
99101});
100102101103it("treats named-account bound conversations as explicit route matches", async () => {
@@ -109,16 +111,13 @@ describe("buildTelegramMessageContext thread binding override", () => {
109111110112const ctx = await buildForumTopicMessageContext("work");
111113112-expect(resolveTelegramConversationRouteMock).toHaveBeenCalledWith(
113-expect.objectContaining({
114-accountId: "work",
115-chatId: -100200300,
116-isGroup: true,
117-resolvedThreadId: 77,
118-replyThreadId: 77,
119-senderId: "42",
120-}),
121-);
114+const routeArgs = expectRouteArgs();
115+expect(routeArgs.accountId).toBe("work");
116+expect(routeArgs.chatId).toBe(-100200300);
117+expect(routeArgs.isGroup).toBe(true);
118+expect(routeArgs.resolvedThreadId).toBe(77);
119+expect(routeArgs.replyThreadId).toBe(77);
120+expect(routeArgs.senderId).toBe("42");
122121expect(ctx?.route.accountId).toBe("work");
123122expect(ctx?.route.matchedBy).toBe("binding.channel");
124123expect(ctx?.ctxPayload?.SessionKey).toBe("agent:codex-acp:session-2");
@@ -144,16 +143,13 @@ describe("buildTelegramMessageContext thread binding override", () => {
144143},
145144});
146145147-expect(resolveTelegramConversationRouteMock).toHaveBeenCalledWith(
148-expect.objectContaining({
149-accountId: "default",
150-chatId: 1234,
151-isGroup: false,
152-resolvedThreadId: undefined,
153-replyThreadId: undefined,
154-senderId: "42",
155-}),
156-);
146+const routeArgs = expectRouteArgs();
147+expect(routeArgs.accountId).toBe("default");
148+expect(routeArgs.chatId).toBe(1234);
149+expect(routeArgs.isGroup).toBe(false);
150+expect(routeArgs.resolvedThreadId).toBeUndefined();
151+expect(routeArgs.replyThreadId).toBeUndefined();
152+expect(routeArgs.senderId).toBe("42");
157153expect(ctx?.ctxPayload?.SessionKey).toBe("agent:codex-acp:session-dm");
158154});
159155@@ -178,14 +174,11 @@ describe("buildTelegramMessageContext thread binding override", () => {
178174},
179175});
180176181-expect(resolveTelegramConversationRouteMock).toHaveBeenCalledWith(
182-expect.objectContaining({
183-chatId: 1234,
184-isGroup: false,
185-resolvedThreadId: undefined,
186-replyThreadId: 77,
187-}),
188-);
177+const routeArgs = expectRouteArgs();
178+expect(routeArgs.chatId).toBe(1234);
179+expect(routeArgs.isGroup).toBe(false);
180+expect(routeArgs.resolvedThreadId).toBeUndefined();
181+expect(routeArgs.replyThreadId).toBe(77);
189182expect(ctx?.ctxPayload?.MessageThreadId).toBe(77);
190183});
191184});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。