Files
Moltbot/src/test-utils/channel-plugins.test.ts
2026-02-19 15:08:54 +00:00

51 lines
1.9 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { createChannelTestPluginBase, createOutboundTestPlugin } from "./channel-plugins.js";
describe("createChannelTestPluginBase", () => {
it("builds a plugin base with defaults", () => {
const cfg = {} as never;
const base = createChannelTestPluginBase({ id: "telegram", label: "Telegram" });
expect(base.id).toBe("telegram");
expect(base.meta.label).toBe("Telegram");
expect(base.meta.selectionLabel).toBe("Telegram");
expect(base.meta.docsPath).toBe("/channels/telegram");
expect(base.capabilities.chatTypes).toEqual(["direct"]);
expect(base.config.listAccountIds(cfg)).toEqual(["default"]);
expect(base.config.resolveAccount(cfg)).toEqual({});
});
it("honors config and metadata overrides", async () => {
const cfg = {} as never;
const base = createChannelTestPluginBase({
id: "discord",
label: "Discord Bot",
docsPath: "/custom/discord",
capabilities: { chatTypes: ["group"] },
config: {
listAccountIds: () => ["acct-1"],
isConfigured: async () => true,
},
});
expect(base.meta.docsPath).toBe("/custom/discord");
expect(base.capabilities.chatTypes).toEqual(["group"]);
expect(base.config.listAccountIds(cfg)).toEqual(["acct-1"]);
const account = base.config.resolveAccount(cfg);
await expect(base.config.isConfigured?.(account, cfg)).resolves.toBe(true);
});
});
describe("createOutboundTestPlugin", () => {
it("keeps outbound test plugin account list behavior", () => {
const cfg = {} as never;
const plugin = createOutboundTestPlugin({
id: "signal",
outbound: {
deliveryMode: "direct",
resolveTarget: () => ({ ok: true, to: "target" }),
sendText: async () => ({ channel: "signal", messageId: "m1" }),
},
});
expect(plugin.config.listAccountIds(cfg)).toEqual([]);
});
});