import { afterEach, beforeEach, describe, expect, it } from "vitest"; import type { ChannelPlugin } from "./types.js"; import { setActivePluginRegistry } from "../../plugins/runtime.js"; import { createTestRegistry } from "../../test-utils/channel-plugins.js"; import { listChannelPlugins } from "./index.js"; describe("channel plugin registry", () => { const emptyRegistry = createTestRegistry([]); const createPlugin = (id: string): ChannelPlugin => ({ id, meta: { id, label: id, selectionLabel: id, docsPath: `/channels/${id}`, blurb: "test", }, capabilities: { chatTypes: ["direct"] }, config: { listAccountIds: () => [], resolveAccount: () => ({}), }, }); beforeEach(() => { setActivePluginRegistry(emptyRegistry); }); afterEach(() => { setActivePluginRegistry(emptyRegistry); }); it("sorts channel plugins by configured order", () => { const registry = createTestRegistry( ["slack", "telegram", "signal"].map((id) => ({ pluginId: id, plugin: createPlugin(id), source: "test", })), ); setActivePluginRegistry(registry); const pluginIds = listChannelPlugins().map((plugin) => plugin.id); expect(pluginIds).toEqual(["telegram", "slack", "signal"]); }); });