66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
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,
|
|
});
|
|
});
|
|
});
|