Spaces:
Paused
Paused
| import { describe, expect, it, vi } from "vitest"; | |
| import type { OpenClawConfig } from "../../../config/config.js"; | |
| import { telegramOutbound } from "./telegram.js"; | |
| describe("telegramOutbound.sendPayload", () => { | |
| it("sends text payload with buttons", async () => { | |
| const sendTelegram = vi.fn(async () => ({ messageId: "m1", chatId: "c1" })); | |
| const result = await telegramOutbound.sendPayload?.({ | |
| cfg: {} as OpenClawConfig, | |
| to: "telegram:123", | |
| text: "ignored", | |
| payload: { | |
| text: "Hello", | |
| channelData: { | |
| telegram: { | |
| buttons: [[{ text: "Option", callback_data: "/option" }]], | |
| }, | |
| }, | |
| }, | |
| deps: { sendTelegram }, | |
| }); | |
| expect(sendTelegram).toHaveBeenCalledTimes(1); | |
| expect(sendTelegram).toHaveBeenCalledWith( | |
| "telegram:123", | |
| "Hello", | |
| expect.objectContaining({ | |
| buttons: [[{ text: "Option", callback_data: "/option" }]], | |
| textMode: "html", | |
| }), | |
| ); | |
| expect(result).toEqual({ channel: "telegram", messageId: "m1", chatId: "c1" }); | |
| }); | |
| it("sends media payloads and attaches buttons only to first", async () => { | |
| const sendTelegram = vi | |
| .fn() | |
| .mockResolvedValueOnce({ messageId: "m1", chatId: "c1" }) | |
| .mockResolvedValueOnce({ messageId: "m2", chatId: "c1" }); | |
| const result = await telegramOutbound.sendPayload?.({ | |
| cfg: {} as OpenClawConfig, | |
| to: "telegram:123", | |
| text: "ignored", | |
| payload: { | |
| text: "Caption", | |
| mediaUrls: ["https://example.com/a.png", "https://example.com/b.png"], | |
| channelData: { | |
| telegram: { | |
| buttons: [[{ text: "Go", callback_data: "/go" }]], | |
| }, | |
| }, | |
| }, | |
| deps: { sendTelegram }, | |
| }); | |
| expect(sendTelegram).toHaveBeenCalledTimes(2); | |
| expect(sendTelegram).toHaveBeenNthCalledWith( | |
| 1, | |
| "telegram:123", | |
| "Caption", | |
| expect.objectContaining({ | |
| mediaUrl: "https://example.com/a.png", | |
| buttons: [[{ text: "Go", callback_data: "/go" }]], | |
| }), | |
| ); | |
| const secondOpts = sendTelegram.mock.calls[1]?.[2] as { buttons?: unknown } | undefined; | |
| expect(sendTelegram).toHaveBeenNthCalledWith( | |
| 2, | |
| "telegram:123", | |
| "", | |
| expect.objectContaining({ | |
| mediaUrl: "https://example.com/b.png", | |
| }), | |
| ); | |
| expect(secondOpts?.buttons).toBeUndefined(); | |
| expect(result).toEqual({ channel: "telegram", messageId: "m2", chatId: "c1" }); | |
| }); | |
| }); | |