pi-mono/packages/coding-agent/test/model-selector.test.ts
Cristina Poncela Cubeiro 2ff8ba6223
fix(coding-agent): keep model and thinking level changes session scoped (#8356)
* fix(coding-agent): keep model and thinking level changes session scoped

* fix(coding-agent): persist requested default thinking level

* feat: --default arg to persist

* fix

* fix(coding-agent): keep model and thinking level changes session scoped

* fix: make default thinking level per model show list of models

* cleanup export
2026-08-19 16:48:29 +02:00

48 lines
1.3 KiB
TypeScript

import type { TUI } from "@earendil-works/pi-tui";
import { afterEach, beforeAll, describe, expect, it, vi } from "vitest";
import { ModelSelectorComponent } from "../src/modes/interactive/components/model-selector.ts";
import { initTheme } from "../src/modes/interactive/theme/theme.ts";
import { stripAnsi } from "../src/utils/ansi.ts";
import { createHarness, type Harness } from "./suite/harness.ts";
function createFakeTui(): TUI {
return { requestRender: () => {} } as unknown as TUI;
}
describe("model selector", () => {
let harness: Harness | undefined;
beforeAll(() => {
initTheme("dark");
});
afterEach(() => {
harness?.cleanup();
harness = undefined;
});
it("lists every catalog that failed to refresh", async () => {
harness = await createHarness();
vi.spyOn(harness.session.modelRuntime, "refresh").mockResolvedValue({
aborted: false,
errors: new Map([
["openai", new Error("unavailable")],
["anthropic", new Error("unavailable")],
]),
});
const selector = new ModelSelectorComponent(
createFakeTui(),
harness.getModel(),
harness.session.modelRuntime,
[],
() => {},
() => {},
);
await vi.waitFor(() => {
const rendered = stripAnsi(selector.render(120).join("\n"));
expect(rendered).toContain("Could not refresh 2 model catalogs (openai, anthropic); showing cached models.");
});
});
});