| import { describe, expect, it, vi } from "vitest"; |
| import { resolveTelegramForumFlag, resolveTelegramStreamMode } from "./bot/helpers.js"; |
|
|
| describe("resolveTelegramStreamMode", () => { |
| it("defaults to partial when telegram streaming is unset", () => { |
| expect(resolveTelegramStreamMode(undefined)).toBe("partial"); |
| expect(resolveTelegramStreamMode({})).toBe("partial"); |
| }); |
|
|
| it("prefers explicit streaming boolean", () => { |
| expect(resolveTelegramStreamMode({ streaming: true })).toBe("partial"); |
| expect(resolveTelegramStreamMode({ streaming: false })).toBe("off"); |
| }); |
|
|
| it("maps legacy streamMode values", () => { |
| expect(resolveTelegramStreamMode({ streamMode: "off" })).toBe("off"); |
| expect(resolveTelegramStreamMode({ streamMode: "partial" })).toBe("partial"); |
| expect(resolveTelegramStreamMode({ streamMode: "block" })).toBe("block"); |
| }); |
|
|
| it("maps unified progress mode to partial on Telegram", () => { |
| expect(resolveTelegramStreamMode({ streaming: "progress" })).toBe("partial"); |
| }); |
| }); |
|
|
| describe("resolveTelegramForumFlag", () => { |
| it("keeps explicit forum metadata when Telegram already provides it", async () => { |
| const getChat = vi.fn(async () => ({ is_forum: false })); |
| await expect( |
| resolveTelegramForumFlag({ |
| chatId: -100123, |
| chatType: "supergroup", |
| isGroup: true, |
| isForum: true, |
| getChat, |
| }), |
| ).resolves.toBe(true); |
| expect(getChat).not.toHaveBeenCalled(); |
| }); |
|
|
| it("falls back to getChat for supergroups when is_forum is omitted", async () => { |
| const getChat = vi.fn(async () => ({ is_forum: true })); |
| await expect( |
| resolveTelegramForumFlag({ |
| chatId: -100123, |
| chatType: "supergroup", |
| isGroup: true, |
| getChat, |
| }), |
| ).resolves.toBe(true); |
| expect(getChat).toHaveBeenCalledWith(-100123); |
| }); |
|
|
| it("returns false when forum lookup is unavailable", async () => { |
| const getChat = vi.fn(async () => { |
| throw new Error("lookup failed"); |
| }); |
| await expect( |
| resolveTelegramForumFlag({ |
| chatId: -100123, |
| chatType: "supergroup", |
| isGroup: true, |
| getChat, |
| }), |
| ).resolves.toBe(false); |
| }); |
| }); |
|
|