diff --git a/src/agents/tools/pdf-tool.test.ts b/src/agents/tools/pdf-tool.test.ts index 7b337ec914e..0b3c294517d 100644 --- a/src/agents/tools/pdf-tool.test.ts +++ b/src/agents/tools/pdf-tool.test.ts @@ -91,6 +91,22 @@ function expectFields(value: unknown, expected: Record): void { } } +function firstMockCall(mock: { mock: { calls: unknown[][] } }, label: string): unknown[] { + const call = mock.mock.calls.at(0); + if (!call) { + throw new Error(`expected ${label} to be called`); + } + return call; +} + +function firstCompletionContext(): { systemPrompt?: string } | undefined { + const [, context] = firstMockCall(completeMock, "complete") as [ + unknown, + { systemPrompt?: string } | undefined, + ]; + return context; +} + async function stubPdfToolInfra( agentDir: string, params?: { @@ -333,7 +349,7 @@ describe("createPdfTool", () => { pdf: `media://inbound/${mediaId}`, }); - const [loadRef, loadOptions] = loadSpy.mock.calls[0] ?? []; + const [loadRef, loadOptions] = firstMockCall(loadSpy, "loadWebMediaRaw"); expect(loadRef).toBe(`media://inbound/${mediaId}`); expectFields(loadOptions, { localRoots: [] }); expect(result.content).toEqual([{ type: "text", text: "native summary" }]); @@ -369,7 +385,7 @@ describe("createPdfTool", () => { pdf: "http://198.18.0.153/doc.pdf", }); - const [loadRef, loadOptions] = loadSpy.mock.calls[0] ?? []; + const [loadRef, loadOptions] = firstMockCall(loadSpy, "loadWebMediaRaw"); expect(loadRef).toBe("http://198.18.0.153/doc.pdf"); expectFields(loadOptions, { ssrfPolicy: { allowRfc2544BenchmarkRange: true }, @@ -400,7 +416,7 @@ describe("createPdfTool", () => { pdf: mediaPath, }); - const [loadRef, loadOptions] = loadSpy.mock.calls[0] ?? []; + const [loadRef, loadOptions] = firstMockCall(loadSpy, "loadWebMediaRaw"); expect(loadRef).toBe(mediaPath); expect(loadOptions).toBeTypeOf("object"); }); @@ -424,8 +440,10 @@ describe("createPdfTool", () => { }); const ensureModelsJsonMock = vi.mocked(modelsConfig.ensureOpenClawModelsJson); - const [modelsConfigArg, modelsAgentDir, modelsOptions] = - ensureModelsJsonMock.mock.calls[0] ?? []; + const [modelsConfigArg, modelsAgentDir, modelsOptions] = firstMockCall( + ensureModelsJsonMock, + "ensureOpenClawModelsJson", + ); expectFields( (modelsConfigArg as { agents?: { defaults?: unknown } } | undefined)?.agents?.defaults, { @@ -486,8 +504,7 @@ describe("createPdfTool", () => { native: false, model: OPENAI_PDF_MODEL, }); - const [, context] = completeMock.mock.calls[0] ?? []; - expect(context?.systemPrompt).toBeUndefined(); + expect(firstCompletionContext()?.systemPrompt).toBeUndefined(); }); }); @@ -524,8 +541,7 @@ describe("createPdfTool", () => { model: CODEX_PDF_MODEL, }); expect(completeMock).toHaveBeenCalledTimes(1); - const [, context] = completeMock.mock.calls[0] ?? []; - expect(context?.systemPrompt).toContain("Analyze the provided PDF content"); + expect(firstCompletionContext()?.systemPrompt).toContain("Analyze the provided PDF content"); }); }); @@ -562,8 +578,7 @@ describe("createPdfTool", () => { model: CODEX_PDF_MODEL, }); expect(completeMock).toHaveBeenCalledTimes(1); - const [, context] = completeMock.mock.calls[0] ?? []; - expect(context?.systemPrompt).toContain("Analyze the provided PDF content"); + expect(firstCompletionContext()?.systemPrompt).toContain("Analyze the provided PDF content"); }); });