import { describe, it, expect } from "vitest"; import { normalizeIncoming, TELEGRAM_CAPABILITIES } from "../src/channels/telegram/formatters/messages.js"; import type { IncomingMessage } from "../src/core/messages.js"; describe("normalizeIncoming", () => { it("maps a Telegram text message to the normalized contract", () => { const ctx = { from: { id: 42, first_name: "Ali", language_code: "en" }, chat: { id: 7 }, message: { text: "hello there" }, } as never; const result = normalizeIncoming(ctx as never) as IncomingMessage; expect(result.channel).toBe("telegram"); expect(result.externalUserId).toBe("42"); expect(result.externalConversationId).toBe("7"); expect(result.text).toBe("hello there"); }); it("captures photo attachments", () => { const ctx = { from: { id: 1 }, chat: { id: 1 }, message: { photo: [{ file_id: "last" }, { file_id: "big" }] }, } as never; const result = normalizeIncoming(ctx as never) as IncomingMessage; expect(result.attachments).toHaveLength(1); expect(result.attachments?.[0].fileId).toBe("big"); }); }); describe("TELEGRAM_CAPABILITIES", () => { it("declares Telegram-specific capabilities", () => { expect(TELEGRAM_CAPABILITIES.supportsButtons).toBe(true); expect(TELEGRAM_CAPABILITIES.supportsAttachments).toBe(true); expect(TELEGRAM_CAPABILITIES.supportsRichText).toBe(true); expect(TELEGRAM_CAPABILITIES.supportsCommands).toBe(true); }); });