test: share codex provider fixtures

This commit is contained in:
Peter Steinberger
2026-04-20 16:59:18 +01:00
parent f0ef3070fa
commit f42fc9e6c2

View File

@@ -11,6 +11,25 @@ afterEach(() => {
vi.restoreAllMocks();
});
function expectStaticFallbackCatalog(
result: Awaited<ReturnType<typeof buildCodexProviderCatalog>>,
) {
expect(result.provider.models.map((model) => model.id)).toEqual([
"gpt-5.4",
"gpt-5.4-mini",
"gpt-5.2",
]);
}
function createFakeCodexClient(): CodexAppServerClient {
return {
initialize: vi.fn(async () => undefined),
request: vi.fn(async () => ({ data: [] })),
addCloseHandler: vi.fn(() => () => undefined),
close: vi.fn(),
} as unknown as CodexAppServerClient;
}
describe("codex provider", () => {
it("maps Codex app-server models to a Codex provider catalog", async () => {
const listModels = vi.fn(async () => ({
@@ -67,11 +86,7 @@ describe("codex provider", () => {
});
expect(listModels).not.toHaveBeenCalled();
expect(result.provider.models.map((model) => model.id)).toEqual([
"gpt-5.4",
"gpt-5.4-mini",
"gpt-5.2",
]);
expectStaticFallbackCatalog(result);
});
it("keeps a static fallback catalog when live discovery is explicitly disabled by env", async () => {
@@ -83,20 +98,11 @@ describe("codex provider", () => {
});
expect(listModels).not.toHaveBeenCalled();
expect(result.provider.models.map((model) => model.id)).toEqual([
"gpt-5.4",
"gpt-5.4-mini",
"gpt-5.2",
]);
expectStaticFallbackCatalog(result);
});
it("closes the transient app-server client after live discovery", async () => {
const client = {
initialize: vi.fn(async () => undefined),
request: vi.fn(async () => ({ data: [] })),
addCloseHandler: vi.fn(() => () => undefined),
close: vi.fn(),
} as unknown as CodexAppServerClient;
const client = createFakeCodexClient();
vi.spyOn(CodexAppServerClient, "start").mockReturnValue(client);
await buildCodexProviderCatalog({
@@ -107,18 +113,8 @@ describe("codex provider", () => {
});
it("does not close an active shared app-server client during live discovery", async () => {
const activeClient = {
initialize: vi.fn(async () => undefined),
request: vi.fn(async () => ({ data: [] })),
addCloseHandler: vi.fn(() => () => undefined),
close: vi.fn(),
} as unknown as CodexAppServerClient;
const discoveryClient = {
initialize: vi.fn(async () => undefined),
request: vi.fn(async () => ({ data: [] })),
addCloseHandler: vi.fn(() => () => undefined),
close: vi.fn(),
} as unknown as CodexAppServerClient;
const activeClient = createFakeCodexClient();
const discoveryClient = createFakeCodexClient();
vi.spyOn(CodexAppServerClient, "start")
.mockReturnValueOnce(activeClient)
.mockReturnValueOnce(discoveryClient);