From 7453ba6381b3a4a0bac991e11e00f1237cbab75d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 11 May 2026 23:54:27 +0100 Subject: [PATCH] test: guard deepinfra provider mock calls --- .../image-generation-provider.test.ts | 26 +++++++++++++++---- extensions/deepinfra/provider-models.test.ts | 10 ++++++- extensions/deepinfra/speech-provider.test.ts | 10 ++++++- .../video-generation-provider.test.ts | 10 ++++++- 4 files changed, 48 insertions(+), 8 deletions(-) diff --git a/extensions/deepinfra/image-generation-provider.test.ts b/extensions/deepinfra/image-generation-provider.test.ts index 28d14533231..841e0751fc0 100644 --- a/extensions/deepinfra/image-generation-provider.test.ts +++ b/extensions/deepinfra/image-generation-provider.test.ts @@ -46,6 +46,22 @@ afterAll(() => { vi.resetModules(); }); +function requireFirstMockArg(mock: ReturnType, label: string): unknown { + const [call] = mock.mock.calls; + if (!call) { + throw new Error(`expected ${label}`); + } + return call[0]; +} + +function requireFirstMockObjectArg(mock: ReturnType, label: string): object { + const value = requireFirstMockArg(mock, label); + if (!value || typeof value !== "object" || Array.isArray(value)) { + throw new Error(`expected ${label}`); + } + return value; +} + describe("deepinfra image generation provider", () => { afterEach(() => { assertOkOrThrowHttpErrorMock.mockClear(); @@ -113,7 +129,7 @@ describe("deepinfra image generation provider", () => { ], ]); expect(postJsonRequestMock).toHaveBeenCalledOnce(); - const [jsonRequest] = postJsonRequestMock.mock.calls[0] ?? []; + const jsonRequest = requireFirstMockArg(postJsonRequestMock, "DeepInfra JSON image request"); const jsonRequestHeaders = Reflect.get(jsonRequest ?? {}, "headers"); expect(jsonRequestHeaders).toBeInstanceOf(Headers); expect(Object.fromEntries((jsonRequestHeaders as Headers).entries())).toEqual({ @@ -175,10 +191,10 @@ describe("deepinfra image generation provider", () => { }); expect(postMultipartRequestMock).toHaveBeenCalledOnce(); - const [multipartRequest] = postMultipartRequestMock.mock.calls[0] ?? []; - if (!multipartRequest) { - throw new Error("Expected DeepInfra multipart request"); - } + const multipartRequest = requireFirstMockObjectArg( + postMultipartRequestMock, + "DeepInfra multipart image request", + ); const multipartHeaders = Reflect.get(multipartRequest, "headers"); expect(multipartHeaders).toBeInstanceOf(Headers); expect(Object.fromEntries((multipartHeaders as Headers).entries())).toEqual({ diff --git a/extensions/deepinfra/provider-models.test.ts b/extensions/deepinfra/provider-models.test.ts index 4b74319c300..c485fbb740c 100644 --- a/extensions/deepinfra/provider-models.test.ts +++ b/extensions/deepinfra/provider-models.test.ts @@ -66,6 +66,14 @@ async function withFetchPathTest( } } +function requireFirstFetchCall(mockFetch: ReturnType): [unknown, unknown] { + const [call] = mockFetch.mock.calls; + if (!call) { + throw new Error("expected DeepInfra models fetch call"); + } + return call as [unknown, unknown]; +} + describe("discoverDeepInfraModels", () => { it("returns static catalog in test environment", async () => { const models = await discoverDeepInfraModels(); @@ -89,7 +97,7 @@ describe("discoverDeepInfraModels", () => { await withFetchPathTest(mockFetch, async () => { const models = await discoverDeepInfraModels(); expect(mockFetch).toHaveBeenCalledOnce(); - const [fetchUrl, fetchInit] = mockFetch.mock.calls[0] ?? []; + const [fetchUrl, fetchInit] = requireFirstFetchCall(mockFetch); const fetchSignal = Reflect.get(fetchInit ?? {}, "signal"); expect(fetchUrl).toBe(DEEPINFRA_MODELS_URL); expect(fetchSignal).toBeInstanceOf(AbortSignal); diff --git a/extensions/deepinfra/speech-provider.test.ts b/extensions/deepinfra/speech-provider.test.ts index c79b681556f..6962f9fa0cd 100644 --- a/extensions/deepinfra/speech-provider.test.ts +++ b/extensions/deepinfra/speech-provider.test.ts @@ -24,6 +24,14 @@ afterAll(() => { vi.resetModules(); }); +function requireFirstPostJsonRequest(): unknown { + const [call] = postJsonRequestMock.mock.calls; + if (!call) { + throw new Error("expected DeepInfra speech request"); + } + return call[0]; +} + describe("deepinfra speech provider", () => { afterEach(() => { assertOkOrThrowHttpErrorMock.mockClear(); @@ -108,7 +116,7 @@ describe("deepinfra speech provider", () => { ], ]); expect(postJsonRequestMock).toHaveBeenCalledOnce(); - const [postRequest] = postJsonRequestMock.mock.calls[0] ?? []; + const postRequest = requireFirstPostJsonRequest(); const postRequestHeaders = Reflect.get(postRequest ?? {}, "headers"); expect(postRequestHeaders).toBeInstanceOf(Headers); expect(Object.fromEntries((postRequestHeaders as Headers).entries())).toEqual({ diff --git a/extensions/deepinfra/video-generation-provider.test.ts b/extensions/deepinfra/video-generation-provider.test.ts index f4b0f0f38eb..5815fdf4c85 100644 --- a/extensions/deepinfra/video-generation-provider.test.ts +++ b/extensions/deepinfra/video-generation-provider.test.ts @@ -15,6 +15,14 @@ beforeAll(async () => { installProviderHttpMockCleanup(); +function requireFirstPostJsonRequest(): unknown { + const [call] = postJsonRequestMock.mock.calls; + if (!call) { + throw new Error("expected DeepInfra video request"); + } + return call[0]; +} + describe("deepinfra video generation provider", () => { it("declares explicit mode capabilities", () => { expectExplicitVideoGenerationCapabilities(buildDeepInfraVideoGenerationProvider()); @@ -66,7 +74,7 @@ describe("deepinfra video generation provider", () => { ], ]); expect(postJsonRequestMock).toHaveBeenCalledOnce(); - const [postRequest] = postJsonRequestMock.mock.calls[0] ?? []; + const postRequest = requireFirstPostJsonRequest(); const postRequestHeaders = Reflect.get(postRequest ?? {}, "headers"); expect(postRequestHeaders).toBeInstanceOf(Headers); expect(Object.fromEntries((postRequestHeaders as Headers).entries())).toEqual({