Spaces:
Sleeping
Sleeping
| import { afterEach, beforeEach, describe, expect, it } from "vitest"; | |
| import type { PluginRegistry } from "../../plugins/registry.js"; | |
| import type { ChannelOutboundAdapter, ChannelPlugin } from "./types.js"; | |
| import { setActivePluginRegistry } from "../../plugins/runtime.js"; | |
| import { loadChannelPlugin } from "./load.js"; | |
| import { loadChannelOutboundAdapter } from "./outbound/load.js"; | |
| const createRegistry = (channels: PluginRegistry["channels"]): PluginRegistry => ({ | |
| plugins: [], | |
| tools: [], | |
| channels, | |
| providers: [], | |
| gatewayHandlers: {}, | |
| httpHandlers: [], | |
| httpRoutes: [], | |
| cliRegistrars: [], | |
| services: [], | |
| diagnostics: [], | |
| }); | |
| const emptyRegistry = createRegistry([]); | |
| const msteamsOutbound: ChannelOutboundAdapter = { | |
| deliveryMode: "direct", | |
| sendText: async () => ({ channel: "msteams", messageId: "m1" }), | |
| sendMedia: async () => ({ channel: "msteams", messageId: "m2" }), | |
| }; | |
| const msteamsPlugin: ChannelPlugin = { | |
| id: "msteams", | |
| meta: { | |
| id: "msteams", | |
| label: "Microsoft Teams", | |
| selectionLabel: "Microsoft Teams (Bot Framework)", | |
| docsPath: "/channels/msteams", | |
| blurb: "Bot Framework; enterprise support.", | |
| aliases: ["teams"], | |
| }, | |
| capabilities: { chatTypes: ["direct"] }, | |
| config: { | |
| listAccountIds: () => [], | |
| resolveAccount: () => ({}), | |
| }, | |
| outbound: msteamsOutbound, | |
| }; | |
| const registryWithMSTeams = createRegistry([ | |
| { pluginId: "msteams", plugin: msteamsPlugin, source: "test" }, | |
| ]); | |
| describe("channel plugin loader", () => { | |
| beforeEach(() => { | |
| setActivePluginRegistry(emptyRegistry); | |
| }); | |
| afterEach(() => { | |
| setActivePluginRegistry(emptyRegistry); | |
| }); | |
| it("loads channel plugins from the active registry", async () => { | |
| setActivePluginRegistry(registryWithMSTeams); | |
| const plugin = await loadChannelPlugin("msteams"); | |
| expect(plugin).toBe(msteamsPlugin); | |
| }); | |
| it("loads outbound adapters from registered plugins", async () => { | |
| setActivePluginRegistry(registryWithMSTeams); | |
| const outbound = await loadChannelOutboundAdapter("msteams"); | |
| expect(outbound).toBe(msteamsOutbound); | |
| }); | |
| }); | |