Files
oh-my-pi/packages/coding-agent/test/config/provider-globals.test.ts
T
can1357 5b3275c7ae feat(coding-agent): introduced ordered provider priority lists for search and images
- Replaced single-provider preferences with ordered priority lists for web search and image generation.
- Added a `MultiSelectSubmenu` component supporting toggle and reordering interactions in settings.
- Implemented migration logic to convert legacy single-provider preferences into ordered priority lists.
- Updated setup wizard scenes, image generation fallback logic, and search provider chains to use priority lists.
2026-07-23 20:44:50 +02:00

32 lines
1.4 KiB
TypeScript

import { afterEach, describe, expect, it, vi } from "bun:test";
import { applyProviderGlobalsFromSettings } from "@oh-my-pi/pi-coding-agent/config/provider-globals";
import * as imageGen from "@oh-my-pi/pi-coding-agent/tools/image-gen";
import * as webSearch from "@oh-my-pi/pi-coding-agent/web/search";
describe("applyProviderGlobalsFromSettings", () => {
afterEach(() => {
vi.restoreAllMocks();
});
it("reapplies valid web and image provider globals from cwd-scoped settings", () => {
const excludeSpy = vi.spyOn(webSearch, "setExcludedSearchProviders").mockImplementation(() => {});
const orderSpy = vi.spyOn(webSearch, "setSearchProviderOrder").mockImplementation(() => {});
const imageOrderSpy = vi.spyOn(imageGen, "setImageProviderOrder").mockImplementation(() => {});
applyProviderGlobalsFromSettings({
get(path: "providers.webSearchOrder" | "providers.webSearchExclude" | "providers.imageOrder"): unknown {
const values: Record<string, unknown> = {
"providers.webSearchOrder": ["perplexity", "not-a-provider", "exa"],
"providers.webSearchExclude": ["exa", "not-a-provider", "gemini"],
"providers.imageOrder": ["xai", 42, "gemini"],
};
return values[path];
},
});
expect(orderSpy).toHaveBeenCalledWith(["perplexity", "exa"]);
expect(excludeSpy).toHaveBeenCalledWith(["exa", "gemini"]);
expect(imageOrderSpy).toHaveBeenCalledWith(["xai", "gemini"]);
});
});