import { afterEach, beforeEach, describe, expect, it } from "vitest" ;
import type { ChannelPlugin } from "../channels/plugins/types.js" ;
import { setActivePluginRegistry } from "../plugins/runtime.js" ;
import { createChannelTestPluginBase, createTestRegistry } from "../test-utils/channel-plugins.js" ;
import {
isMarkdownCapableMessageChannel,
resolveGatewayMessageChannel,
} from "./message-channel.js" ;
const emptyRegistry = createTestRegistry([]);
const demoAliasPlugin: ChannelPlugin = {
...createChannelTestPluginBase({
id: "demo-alias-channel" ,
label: "Demo Alias Channel" ,
docsPath: "/channels/demo-alias-channel" ,
}),
meta: {
...createChannelTestPluginBase({
id: "demo-alias-channel" ,
label: "Demo Alias Channel" ,
docsPath: "/channels/demo-alias-channel" ,
}).meta,
aliases: ["workspace-chat" ],
},
};
const demoMarkdownPlugin: ChannelPlugin = {
...createChannelTestPluginBase({
id: "demo-markdown-channel" ,
label: "Demo Markdown Channel" ,
docsPath: "/channels/demo-markdown-channel" ,
markdownCapable: true ,
}),
};
describe("message-channel" , () => {
beforeEach(() => {
setActivePluginRegistry(emptyRegistry);
});
afterEach(() => {
setActivePluginRegistry(emptyRegistry);
});
it("normalizes gateway message channels and rejects unknown values" , () => {
expect(resolveGatewayMessageChannel("discord" )).toBe("discord" );
expect(resolveGatewayMessageChannel(" imsg " )).toBe("imessage" );
expect(resolveGatewayMessageChannel("web" )).toBeUndefined();
expect(resolveGatewayMessageChannel("nope" )).toBeUndefined();
});
it("normalizes plugin aliases when registered" , () => {
setActivePluginRegistry(
createTestRegistry([
{ pluginId: "demo-alias-channel" , plugin: demoAliasPlugin, source: "test" },
]),
);
expect(resolveGatewayMessageChannel("workspace-chat" )).toBe("demo-alias-channel" );
});
it("reads markdown capability from channel metadata" , () => {
expect(isMarkdownCapableMessageChannel("telegram" )).toBe(true );
expect(isMarkdownCapableMessageChannel("whatsapp" )).toBe(false );
setActivePluginRegistry(
createTestRegistry([
{ pluginId: "demo-markdown-channel" , plugin: demoMarkdownPlugin, source: "test" },
]),
);
expect(isMarkdownCapableMessageChannel("demo-markdown-channel" )).toBe(true );
});
});
Messung V0.5 in Prozent C=100 H=94 G=96
¤ Dauer der Verarbeitung: 0.4 Sekunden
¤
*© Formatika GbR, Deutschland