openclaw/test/helpers/plugins/provider-contract.ts

33 lines
1.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
pluginRegistrationContractRegistry,
providerContractLoadError,
requireProviderContractProvider,
resolveProviderContractProvidersForPluginIds,
} from "../../../src/plugins/contracts/registry.js";
import { installProviderPluginContractSuite } from "../../../src/plugins/contracts/suites.js";
export function describeProviderContracts(pluginId: string) {
const providerIds =
pluginRegistrationContractRegistry.find((entry) => entry.pluginId === pluginId)?.providerIds ??
[];
describe(`${pluginId} provider contract registry load`, () => {
it("loads bundled providers without import-time registry failure", () => {
const providers = resolveProviderContractProvidersForPluginIds([pluginId]);
expect(providerContractLoadError).toBeUndefined();
expect(providers.length).toBeGreaterThan(0);
});
});
for (const providerId of providerIds) {
describe(`${pluginId}:${providerId} provider contract`, () => {
// Resolve provider entries lazily so the non-isolated extension runner
// does not race provider contract collection against other file imports.
installProviderPluginContractSuite({
provider: () => requireProviderContractProvider(providerId),
});
});
}
}