From d7ab1a6c7cc6a479db379d086016f6f0cfc3a4f9 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Sun, 15 Mar 2026 23:54:37 -0700 Subject: [PATCH] Tests: add provider registry contract suite --- .../contracts/registry.contract.test.ts | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 src/plugins/contracts/registry.contract.test.ts diff --git a/src/plugins/contracts/registry.contract.test.ts b/src/plugins/contracts/registry.contract.test.ts new file mode 100644 index 00000000000..a87261fe58c --- /dev/null +++ b/src/plugins/contracts/registry.contract.test.ts @@ -0,0 +1,43 @@ +import { describe, expect, it } from "vitest"; +import { providerContractRegistry, webSearchProviderContractRegistry } from "./registry.js"; + +function findProviderIdsForPlugin(pluginId: string) { + return providerContractRegistry + .filter((entry) => entry.pluginId === pluginId) + .map((entry) => entry.provider.id) + .toSorted((left, right) => left.localeCompare(right)); +} + +function findWebSearchIdsForPlugin(pluginId: string) { + return webSearchProviderContractRegistry + .filter((entry) => entry.pluginId === pluginId) + .map((entry) => entry.provider.id) + .toSorted((left, right) => left.localeCompare(right)); +} + +describe("plugin contract registry", () => { + it("does not duplicate bundled provider ids", () => { + const ids = providerContractRegistry.map((entry) => entry.provider.id); + expect(ids).toEqual([...new Set(ids)]); + }); + + it("does not duplicate bundled web search provider ids", () => { + const ids = webSearchProviderContractRegistry.map((entry) => entry.provider.id); + expect(ids).toEqual([...new Set(ids)]); + }); + + it("keeps multi-provider plugin ownership explicit", () => { + expect(findProviderIdsForPlugin("google")).toEqual(["google", "google-gemini-cli"]); + expect(findProviderIdsForPlugin("minimax")).toEqual(["minimax", "minimax-portal"]); + expect(findProviderIdsForPlugin("openai")).toEqual(["openai", "openai-codex"]); + }); + + it("keeps bundled web search ownership explicit", () => { + expect(findWebSearchIdsForPlugin("brave")).toEqual(["brave"]); + expect(findWebSearchIdsForPlugin("firecrawl")).toEqual(["firecrawl"]); + expect(findWebSearchIdsForPlugin("google")).toEqual(["gemini"]); + expect(findWebSearchIdsForPlugin("moonshot")).toEqual(["kimi"]); + expect(findWebSearchIdsForPlugin("perplexity")).toEqual(["perplexity"]); + expect(findWebSearchIdsForPlugin("xai")).toEqual(["grok"]); + }); +});