47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
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"]);
|
|
});
|
|
});
|