telegram-user: add outbound media/capabilities tests
This commit is contained in:
parent
3cb14cf81a
commit
eeeacadb36
78
extensions/telegram-user/src/channel.test.ts
Normal file
78
extensions/telegram-user/src/channel.test.ts
Normal file
@ -0,0 +1,78 @@
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
import type { ClawdbotConfig } from "clawdbot/plugin-sdk";
|
||||
|
||||
const sendMediaTelegramUser = vi.fn<
|
||||
typeof import("./send.js").sendMediaTelegramUser
|
||||
>();
|
||||
|
||||
vi.mock("./send.js", () => {
|
||||
return {
|
||||
looksLikeTelegramUserTargetId: () => true,
|
||||
normalizeTelegramUserMessagingTarget: (raw: string) => raw,
|
||||
sendMessageTelegramUser: vi.fn(async () => ({ messageId: "m1", chatId: "c1" })),
|
||||
sendPollTelegramUser: vi.fn(async () => ({ messageId: "m2", chatId: "c2" })),
|
||||
sendMediaTelegramUser,
|
||||
};
|
||||
});
|
||||
|
||||
describe("telegram-user channel plugin", () => {
|
||||
beforeEach(() => {
|
||||
sendMediaTelegramUser.mockReset();
|
||||
});
|
||||
|
||||
it("declares thread/reaction capabilities consistent with handler behavior", async () => {
|
||||
const mod = await import("./channel.js");
|
||||
expect(mod.telegramUserPlugin.capabilities?.reactions).toBe(true);
|
||||
expect(mod.telegramUserPlugin.capabilities?.threads).toBe(true);
|
||||
expect(mod.telegramUserPlugin.capabilities?.chatTypes).toContain("thread");
|
||||
});
|
||||
|
||||
it("enforces mediaMaxMb in outbound sendMedia", async () => {
|
||||
sendMediaTelegramUser.mockResolvedValue({ messageId: "m3", chatId: "c3" });
|
||||
|
||||
const cfg = {
|
||||
channels: {
|
||||
"telegram-user": {
|
||||
mediaMaxMb: 7,
|
||||
},
|
||||
},
|
||||
} satisfies Partial<ClawdbotConfig> as unknown as ClawdbotConfig;
|
||||
|
||||
const mod = await import("./channel.js");
|
||||
await mod.telegramUserPlugin.outbound?.sendMedia?.({
|
||||
cfg,
|
||||
to: "telegram-user:123",
|
||||
text: "hello",
|
||||
mediaUrl: "file:///tmp/example.jpg",
|
||||
accountId: "default",
|
||||
});
|
||||
|
||||
expect(sendMediaTelegramUser).toHaveBeenCalledTimes(1);
|
||||
const [, , opts] = sendMediaTelegramUser.mock.calls[0] ?? [];
|
||||
expect(opts?.maxBytes).toBe(7 * 1024 * 1024);
|
||||
});
|
||||
|
||||
it("omits maxBytes when mediaMaxMb is not configured", async () => {
|
||||
sendMediaTelegramUser.mockResolvedValue({ messageId: "m4", chatId: "c4" });
|
||||
|
||||
const cfg = {
|
||||
channels: {
|
||||
"telegram-user": {},
|
||||
},
|
||||
} satisfies Partial<ClawdbotConfig> as unknown as ClawdbotConfig;
|
||||
|
||||
const mod = await import("./channel.js");
|
||||
await mod.telegramUserPlugin.outbound?.sendMedia?.({
|
||||
cfg,
|
||||
to: "telegram-user:123",
|
||||
text: "hello",
|
||||
mediaUrl: "file:///tmp/example.jpg",
|
||||
accountId: "default",
|
||||
});
|
||||
|
||||
expect(sendMediaTelegramUser).toHaveBeenCalledTimes(1);
|
||||
const [, , opts] = sendMediaTelegramUser.mock.calls[0] ?? [];
|
||||
expect(opts).not.toHaveProperty("maxBytes");
|
||||
});
|
||||
});
|
||||
Loading…
Reference in New Issue
Block a user