import { describe, expect, it } from "vitest"; import { parseTelegramTarget, stripTelegramInternalPrefixes } from "./targets.js"; describe("stripTelegramInternalPrefixes", () => { it("strips telegram prefix", () => { expect(stripTelegramInternalPrefixes("telegram:123")).toBe("123"); }); it("strips telegram+group prefixes", () => { expect(stripTelegramInternalPrefixes("telegram:group:-100123")).toBe("-100123"); }); it("is idempotent", () => { expect(stripTelegramInternalPrefixes("@mychannel")).toBe("@mychannel"); }); }); describe("parseTelegramTarget", () => { it("parses plain chatId", () => { expect(parseTelegramTarget("-1001234567890")).toEqual({ chatId: "-1001234567890", }); }); it("parses @username", () => { expect(parseTelegramTarget("@mychannel")).toEqual({ chatId: "@mychannel", }); }); it("parses chatId:topicId format", () => { expect(parseTelegramTarget("-1001234567890:123")).toEqual({ chatId: "-1001234567890", messageThreadId: 123, }); }); it("parses chatId:topic:topicId format", () => { expect(parseTelegramTarget("-1001234567890:topic:456")).toEqual({ chatId: "-1001234567890", messageThreadId: 456, }); }); it("trims whitespace", () => { expect(parseTelegramTarget(" -1001234567890:99 ")).toEqual({ chatId: "-1001234567890", messageThreadId: 99, }); }); it("does not treat non-numeric suffix as topicId", () => { expect(parseTelegramTarget("-1001234567890:abc")).toEqual({ chatId: "-1001234567890:abc", }); }); it("strips internal prefixes before parsing", () => { expect(parseTelegramTarget("telegram:group:-1001234567890:topic:456")).toEqual({ chatId: "-1001234567890", messageThreadId: 456, }); }); });