Files
openwork/apps/app/tests/extension-taxonomy.test.ts

50 lines
2.2 KiB
TypeScript

import { describe, expect, test } from "bun:test";
import { MCP_QUICK_CONNECT, type McpDirectoryInfo } from "../src/app/constants";
import {
matchesExtensionFilter,
taxonomyForDirectoryEntry,
} from "../src/react-app/domains/settings/extension-taxonomy";
function builtInEntry(id: string): McpDirectoryInfo {
const entry = MCP_QUICK_CONNECT.find((candidate) => candidate.id === id);
if (!entry) throw new Error(`missing built-in entry ${id}`);
return entry;
}
describe("extension taxonomy", () => {
test("built-ins are apps because they run on this device", () => {
for (const id of ["openwork-browser", "computer-use", "ollama", "openwork-voice"]) {
expect(taxonomyForDirectoryEntry(builtInEntry(id))).toBe("app");
}
});
test("Google Workspace is not a built-in app; it arrives as an org connection", () => {
expect(MCP_QUICK_CONNECT.some((entry) => entry.id === "google-workspace")).toBe(false);
});
test("directory entries that are not built-in stay MCPs", () => {
const notion = MCP_QUICK_CONNECT.find((entry) => entry.name === "Notion");
expect(notion).toBeDefined();
if (notion) expect(taxonomyForDirectoryEntry(notion)).toBe("mcp");
});
test("the all filter keeps every taxonomy and non-MCP filters match exactly", () => {
expect(matchesExtensionFilter("all", "plugin")).toBe(true);
expect(matchesExtensionFilter("connection", "connection")).toBe(true);
expect(matchesExtensionFilter("connection", "mcp")).toBe(false);
expect(matchesExtensionFilter("skill", "app")).toBe(false);
expect(matchesExtensionFilter("skill", "connection", "mcp")).toBe(false);
expect(matchesExtensionFilter("command", "command")).toBe(true);
expect(matchesExtensionFilter("command", "skill")).toBe(false);
expect(matchesExtensionFilter("agent", "agent")).toBe(true);
expect(matchesExtensionFilter("agent", "command")).toBe(false);
});
test("the MCP filter includes MCP-backed connections but excludes native connections", () => {
expect(matchesExtensionFilter("mcp", "connection", "mcp")).toBe(true);
expect(matchesExtensionFilter("mcp", "connection", "native")).toBe(false);
expect(matchesExtensionFilter("mcp", "mcp", null)).toBe(true);
});
});