Files
openclaw/extensions/telegram/src/session-conversation.test.ts
Peter Steinberger af3b86091f fix(telegram): preserve direct-message topic routing (#126207)
* fix(telegram): preserve direct message topic identity

* fix(telegram): break topic routing import cycle
2026-08-19 18:00:56 -07:00

72 lines
1.9 KiB
TypeScript

// Telegram tests cover session conversation plugin behavior.
import { describe, expect, it } from "vitest";
import {
resolveTelegramSessionConversation,
resolveTelegramSessionTarget,
} from "./session-conversation.js";
describe("resolveTelegramSessionConversation", () => {
it("owns topic session parsing and parent fallback candidates", () => {
expect(
resolveTelegramSessionConversation({
kind: "group",
rawId: "-1001:topic:77",
}),
).toEqual({
id: "-1001",
threadId: "77",
baseConversationId: "-1001",
parentConversationCandidates: ["-1001"],
});
expect(
resolveTelegramSessionConversation({
kind: "group",
rawId: "-1001:Topic:77",
}),
).toEqual({
id: "-1001",
threadId: "77",
baseConversationId: "-1001",
parentConversationCandidates: ["-1001"],
});
expect(
resolveTelegramSessionConversation({
kind: "group",
rawId: "-1001",
}),
).toBeNull();
expect(
resolveTelegramSessionConversation({
kind: "group",
rawId: "-1001:direct-topic:77",
}),
).toMatchObject({
id: "-1001",
threadId: "direct-topic:77",
baseConversationId: "-1001",
});
});
});
describe("resolveTelegramSessionTarget", () => {
it("normalizes group session ids to numeric chat ids", () => {
expect(resolveTelegramSessionTarget({ kind: "group", id: "-1001" })).toBe("-1001");
expect(
resolveTelegramSessionTarget({
kind: "group",
id: "-1001",
threadId: "direct-topic:77",
}),
).toBe("-1001:direct-topic:77");
expect(resolveTelegramSessionTarget({ kind: "group", id: "-1001", threadId: "77" })).toBe(
"-1001:topic:77",
);
});
it("normalizes channel session ids to lookup targets", () => {
expect(resolveTelegramSessionTarget({ kind: "channel", id: "@OpenClawTeam" })).toBe(
"@OpenClawTeam",
);
});
});