From f84c4c89f5feba98f3797d9a9b04135cf1c0d810 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Thu, 16 Apr 2026 22:57:30 +0200 Subject: [PATCH] fix(ai): restore FakeOpenAI mock .withResponse() so openai-completions tests pass The openai-completions provider now calls .withResponse() on the create() result to surface HTTP status/headers for the new onResponse hook (d131fcd4). The FakeOpenAI test mock only returned an async iterable, so 4 tests in openai-completions-tool-choice.test.ts that actually consume the stream failed with "withResponse is not a function". Updated the mock to return a Promise augmented with .withResponse() resolving to { data: , response: { status, headers } }. closes #3304 --- .../test/openai-completions-tool-choice.test.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/ai/test/openai-completions-tool-choice.test.ts b/packages/ai/test/openai-completions-tool-choice.test.ts index 62185d3e..485e973e 100644 --- a/packages/ai/test/openai-completions-tool-choice.test.ts +++ b/packages/ai/test/openai-completions-tool-choice.test.ts @@ -24,9 +24,9 @@ vi.mock("openai", () => { class FakeOpenAI { chat = { completions: { - create: async (params: unknown) => { + create: (params: unknown) => { mockState.lastParams = params; - return { + const stream = { async *[Symbol.asyncIterator]() { const chunks = mockState.chunks ?? [ { @@ -44,6 +44,17 @@ vi.mock("openai", () => { } }, }; + const promise = Promise.resolve(stream) as Promise & { + withResponse: () => Promise<{ + data: typeof stream; + response: { status: number; headers: Headers }; + }>; + }; + promise.withResponse = async () => ({ + data: stream, + response: { status: 200, headers: new Headers() }, + }); + return promise; }, }, };