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: "demo-channel" , label: "Demo Channel" });
expect(base.id).toBe("demo-channel" );
expect(base.meta.label).toBe("Demo Channel" );
expect(base.meta.selectionLabel).toBe("Demo Channel" );
expect(base.meta.docsPath).toBe("/channels/demo-channel" );
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: "demo-chat" ,
label: "Demo Chat" ,
docsPath: "/custom/demo-chat" ,
capabilities: { chatTypes: ["group" ] },
config: {
listAccountIds: () => ["acct-1" ],
isConfigured: async () => true ,
},
});
expect(base.meta.docsPath).toBe("/custom/demo-chat" );
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: "demo-outbound" ,
outbound: {
deliveryMode: "direct" ,
resolveTarget: () => ({ ok: true , to: "target" }),
sendText: async () => ({ channel: "demo-outbound" , messageId: "m1" }),
},
});
expect(plugin.config.listAccountIds(cfg)).toEqual([]);
});
});
Messung V0.5 in Prozent C=100 H=97 G=98
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-06-10)
¤
*© Formatika GbR, Deutschland