test: tighten web search provider runtime assertions

This commit is contained in:
Peter Steinberger
2026-05-10 23:22:38 +01:00
parent 49431ff10d
commit 5e3766b4d1

View File

@@ -207,13 +207,32 @@ function expectLoaderCallCount(count: number) {
expect(loadOpenClawPluginsMock).toHaveBeenCalledTimes(count);
}
function requireRecord(value: unknown): Record<string, unknown> {
expect(value).toBeTruthy();
expect(typeof value).toBe("object");
expect(Array.isArray(value)).toBe(false);
return value as Record<string, unknown>;
}
function requireLastCallFirstArg(
mock: { mock: { calls: readonly (readonly unknown[])[] } },
label: string,
): Record<string, unknown> {
const call = mock.mock.calls.at(-1);
expect(call, `${label} should have been called`).toBeTruthy();
return requireRecord(call?.[0]);
}
function requirePluginsConfig(params: Record<string, unknown>): Record<string, unknown> {
const config = requireRecord(params.config);
return requireRecord(config.plugins);
}
function expectScopedWebSearchCandidates(pluginIds: readonly string[]) {
expect(loadInstalledPluginManifestRegistryMock).toHaveBeenCalled();
expect(loadOpenClawPluginsMock).toHaveBeenCalledWith(
expect.objectContaining({
onlyPluginIds: [...pluginIds],
}),
);
expect(
requireLastCallFirstArg(loadOpenClawPluginsMock, "loadOpenClawPlugins").onlyPluginIds,
).toEqual([...pluginIds]);
}
function expectAutoEnabledWebSearchLoad(params: {
@@ -224,15 +243,9 @@ function expectAutoEnabledWebSearchLoad(params: {
config: params.rawConfig,
env: createWebSearchEnv(),
});
expect(loadOpenClawPluginsMock).toHaveBeenCalledWith(
expect.objectContaining({
config: expect.objectContaining({
plugins: expect.objectContaining({
allow: expect.arrayContaining([...params.expectedAllow]),
}),
}),
}),
);
const loaderParams = requireLastCallFirstArg(loadOpenClawPluginsMock, "loadOpenClawPlugins");
const plugins = requirePluginsConfig(loaderParams);
expect(plugins.allow).toEqual([...params.expectedAllow]);
}
function expectSnapshotLoaderCalls(params: {
@@ -505,17 +518,12 @@ describe("resolvePluginWebSearchProviders", () => {
expect(toRuntimeProviderKeys(providers)).toEqual(["brave:brave"]);
expectScopedWebSearchCandidates(["brave"]);
expect(loadOpenClawPluginsMock).toHaveBeenCalledWith(
expect.objectContaining({
config: expect.objectContaining({
plugins: expect.objectContaining({
allow: ["brave"],
bundledDiscovery: "allowlist",
entries: { brave: { enabled: true } },
}),
}),
}),
);
const loaderParams = requireLastCallFirstArg(loadOpenClawPluginsMock, "loadOpenClawPlugins");
expect(requirePluginsConfig(loaderParams)).toEqual({
allow: ["brave"],
bundledDiscovery: "allowlist",
entries: { brave: { enabled: true } },
});
});
it("uses the active registry workspace for candidate discovery and snapshot loads when workspaceDir is omitted", () => {
@@ -535,17 +543,14 @@ describe("resolvePluginWebSearchProviders", () => {
env,
});
expect(loadInstalledPluginManifestRegistryMock).toHaveBeenCalledWith(
expect.objectContaining({
workspaceDir: "/tmp/runtime-workspace",
}),
);
expect(loadOpenClawPluginsMock).toHaveBeenCalledWith(
expect.objectContaining({
workspaceDir: "/tmp/runtime-workspace",
onlyPluginIds: ["brave"],
}),
const manifestParams = requireLastCallFirstArg(
loadInstalledPluginManifestRegistryMock,
"loadPluginManifestRegistryForInstalledIndex",
);
expect(manifestParams.workspaceDir).toBe("/tmp/runtime-workspace");
const loaderParams = requireLastCallFirstArg(loadOpenClawPluginsMock, "loadOpenClawPlugins");
expect(loaderParams.workspaceDir).toBe("/tmp/runtime-workspace");
expect(loaderParams.onlyPluginIds).toEqual(["brave"]);
});
it("reuses a compatible active registry for snapshot resolution when config is provided", () => {
const { env, rawConfig } = createActiveBraveRegistryFixture();