test(telegram): table-drive sticker and forum-topic cases

This commit is contained in:
Peter Steinberger
2026-02-21 23:04:40 +00:00
parent b1c50cc5c0
commit d5cc357737

View File

@@ -1077,26 +1077,46 @@ describe("sendStickerTelegram", () => {
botCtorSpy.mockReset();
});
it("sends a sticker by file_id", async () => {
const chatId = "123";
const fileId = "CAACAgIAAxkBAAI...sticker_file_id";
const sendSticker = vi.fn().mockResolvedValue({
message_id: 100,
chat: { id: chatId },
});
const api = { sendSticker } as unknown as {
sendSticker: typeof sendSticker;
};
const positiveSendCases = [
{
name: "sends a sticker by file_id",
fileId: "CAACAgIAAxkBAAI...sticker_file_id",
expectedFileId: "CAACAgIAAxkBAAI...sticker_file_id",
expectedMessageId: 100,
assertResult: true,
},
{
name: "trims whitespace from fileId",
fileId: " fileId123 ",
expectedFileId: "fileId123",
expectedMessageId: 106,
assertResult: false,
},
] as const;
const res = await sendStickerTelegram(chatId, fileId, {
token: "tok",
api,
});
for (const testCase of positiveSendCases) {
it(testCase.name, async () => {
const chatId = "123";
const sendSticker = vi.fn().mockResolvedValue({
message_id: testCase.expectedMessageId,
chat: { id: chatId },
});
const api = { sendSticker } as unknown as {
sendSticker: typeof sendSticker;
};
expect(sendSticker).toHaveBeenCalledWith(chatId, fileId, undefined);
expect(res.messageId).toBe("100");
expect(res.chatId).toBe(chatId);
});
const res = await sendStickerTelegram(chatId, testCase.fileId, {
token: "tok",
api,
});
expect(sendSticker).toHaveBeenCalledWith(chatId, testCase.expectedFileId, undefined);
if (testCase.assertResult) {
expect(res.messageId).toBe(String(testCase.expectedMessageId));
expect(res.chatId).toBe(chatId);
}
});
}
it("throws error when fileId is blank", async () => {
for (const fileId of ["", " "]) {
@@ -1132,24 +1152,6 @@ describe("sendStickerTelegram", () => {
expect(sendSticker).toHaveBeenNthCalledWith(2, chatId, "fileId123", undefined);
expect(res.messageId).toBe("109");
});
it("trims whitespace from fileId", async () => {
const chatId = "123";
const sendSticker = vi.fn().mockResolvedValue({
message_id: 106,
chat: { id: chatId },
});
const api = { sendSticker } as unknown as {
sendSticker: typeof sendSticker;
};
await sendStickerTelegram(chatId, " fileId123 ", {
token: "tok",
api,
});
expect(sendSticker).toHaveBeenCalledWith(chatId, "fileId123", undefined);
});
});
describe("shared send behaviors", () => {
@@ -1438,43 +1440,54 @@ describe("sendPollTelegram", () => {
});
describe("createForumTopicTelegram", () => {
it("uses base chat id when target includes topic suffix", async () => {
const createForumTopic = vi.fn().mockResolvedValue({
message_thread_id: 272,
name: "Build Updates",
});
const api = { createForumTopic } as unknown as Bot["api"];
const cases = [
{
name: "uses base chat id when target includes topic suffix",
target: "telegram:group:-1001234567890:topic:271",
title: "x",
response: { message_thread_id: 272, name: "Build Updates" },
expectedCall: ["-1001234567890", "x", undefined] as const,
expectedResult: {
topicId: 272,
name: "Build Updates",
chatId: "-1001234567890",
},
},
{
name: "forwards optional icon fields",
target: "-1001234567890",
title: "Roadmap",
response: { message_thread_id: 300, name: "Roadmap" },
options: {
iconColor: 0x6fb9f0,
iconCustomEmojiId: " 1234567890 ",
},
expectedCall: [
"-1001234567890",
"Roadmap",
{ icon_color: 0x6fb9f0, icon_custom_emoji_id: "1234567890" },
] as const,
expectedResult: {
topicId: 300,
name: "Roadmap",
chatId: "-1001234567890",
},
},
] as const;
const result = await createForumTopicTelegram("telegram:group:-1001234567890:topic:271", "x", {
token: "tok",
api,
});
for (const testCase of cases) {
it(testCase.name, async () => {
const createForumTopic = vi.fn().mockResolvedValue(testCase.response);
const api = { createForumTopic } as unknown as Bot["api"];
expect(createForumTopic).toHaveBeenCalledWith("-1001234567890", "x", undefined);
expect(result).toEqual({
topicId: 272,
name: "Build Updates",
chatId: "-1001234567890",
});
});
const result = await createForumTopicTelegram(testCase.target, testCase.title, {
token: "tok",
api,
...testCase.options,
});
it("forwards optional icon fields", async () => {
const createForumTopic = vi.fn().mockResolvedValue({
message_thread_id: 300,
name: "Roadmap",
expect(createForumTopic).toHaveBeenCalledWith(...testCase.expectedCall);
expect(result).toEqual(testCase.expectedResult);
});
const api = { createForumTopic } as unknown as Bot["api"];
await createForumTopicTelegram("-1001234567890", "Roadmap", {
token: "tok",
api,
iconColor: 0x6fb9f0,
iconCustomEmojiId: " 1234567890 ",
});
expect(createForumTopic).toHaveBeenCalledWith("-1001234567890", "Roadmap", {
icon_color: 0x6fb9f0,
icon_custom_emoji_id: "1234567890",
});
});
}
});