test: stabilize pdf tool runtime mocks

This commit is contained in:
Peter Steinberger 2026-03-17 08:13:51 +00:00
parent 63c5932e84
commit 00b7308396

View File

@ -10,15 +10,24 @@ import {
providerSupportsNativePdf,
resolvePdfToolMaxTokens,
} from "./pdf-tool.helpers.js";
import { createPdfTool, resolvePdfModelConfigForTool } from "./pdf-tool.js";
vi.mock("@mariozechner/pi-ai", async (importOriginal) => {
const actual = await importOriginal<typeof import("@mariozechner/pi-ai")>();
return {
...actual,
complete: vi.fn(),
};
});
const completeMock = vi.hoisted(() => vi.fn());
type PdfToolModule = typeof import("./pdf-tool.js");
let createPdfTool: PdfToolModule["createPdfTool"];
let resolvePdfModelConfigForTool: PdfToolModule["resolvePdfModelConfigForTool"];
async function importPdfToolModule(): Promise<PdfToolModule> {
vi.resetModules();
vi.doMock("@mariozechner/pi-ai", async (importOriginal) => {
const actual = await importOriginal<typeof import("@mariozechner/pi-ai")>();
return {
...actual,
complete: completeMock,
};
});
return import("./pdf-tool.js");
}
async function withTempAgentDir<T>(run: (agentDir: string) => Promise<T>): Promise<T> {
const agentDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-pdf-"));
@ -242,8 +251,10 @@ describe("providerSupportsNativePdf", () => {
describe("resolvePdfModelConfigForTool", () => {
const priorFetch = global.fetch;
beforeEach(() => {
beforeEach(async () => {
resetAuthEnv();
completeMock.mockReset();
({ resolvePdfModelConfigForTool } = await importPdfToolModule());
});
afterEach(() => {
@ -321,8 +332,10 @@ describe("resolvePdfModelConfigForTool", () => {
describe("createPdfTool", () => {
const priorFetch = global.fetch;
beforeEach(() => {
beforeEach(async () => {
resetAuthEnv();
completeMock.mockReset();
({ createPdfTool } = await importPdfToolModule());
});
afterEach(() => {
@ -484,8 +497,7 @@ describe("createPdfTool", () => {
images: [],
});
const piAi = await import("@mariozechner/pi-ai");
vi.mocked(piAi.complete).mockResolvedValue({
completeMock.mockResolvedValue({
role: "assistant",
stopReason: "stop",
content: [{ type: "text", text: "fallback summary" }],