test(agents): share sanitize history mock factories

This commit is contained in:
Vincent Koc
2026-04-12 10:58:35 +01:00
parent e3a08c8e8a
commit a52725e81a
3 changed files with 40 additions and 31 deletions

View File

@@ -1,6 +1,8 @@
import type { AgentMessage } from "@mariozechner/pi-agent-core";
import { beforeEach, describe, expect, it, vi } from "vitest";
import {
createSanitizeSessionHistoryHelpersMock,
createSanitizeSessionHistoryProviderRuntimeMock,
loadSanitizeSessionHistoryWithCleanMocks,
makeInMemorySessionManager,
makeModelSnapshotEntry,
@@ -8,22 +10,12 @@ import {
} from "./pi-embedded-runner.sanitize-session-history.test-harness.js";
import { castAgentMessage } from "./test-helpers/agent-message-fixtures.js";
vi.mock("./pi-embedded-helpers.js", async () => ({
...(await vi.importActual("./pi-embedded-helpers.js")),
sanitizeSessionMessagesImages: vi.fn(async (msgs) => msgs),
}));
vi.mock("./pi-embedded-helpers.js", async () => await createSanitizeSessionHistoryHelpersMock());
vi.mock("../plugins/provider-runtime.js", async () => {
const actual = await vi.importActual<typeof import("../plugins/provider-runtime.js")>(
"../plugins/provider-runtime.js",
);
return {
...actual,
resolveProviderRuntimePlugin: vi.fn(() => undefined),
sanitizeProviderReplayHistoryWithPlugin: vi.fn(() => undefined),
validateProviderReplayTurnsWithPlugin: vi.fn(() => undefined),
};
});
vi.mock(
"../plugins/provider-runtime.js",
async () => await createSanitizeSessionHistoryProviderRuntimeMock(),
);
describe("sanitizeSessionHistory openai tool id preservation", () => {
let sanitizeSessionHistory: SanitizeSessionHistoryHarness["sanitizeSessionHistory"];

View File

@@ -1,5 +1,7 @@
import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import {
createSanitizeSessionHistoryHelpersMock,
createSanitizeSessionHistoryProviderRuntimeMock,
loadSanitizeSessionHistoryWithCleanMocks,
makeMockSessionManager,
makeSimpleUserMessages,
@@ -8,23 +10,15 @@ import {
sanitizeWithOpenAIResponses,
} from "./pi-embedded-runner.sanitize-session-history.test-harness.js";
vi.mock("./pi-embedded-helpers.js", async () => ({
...(await vi.importActual("./pi-embedded-helpers.js")),
isGoogleModelApi: vi.fn(),
sanitizeSessionMessagesImages: vi.fn(async (msgs) => msgs),
}));
vi.mock(
"./pi-embedded-helpers.js",
async () => await createSanitizeSessionHistoryHelpersMock({ isGoogleModelApi: vi.fn() }),
);
vi.mock("../plugins/provider-runtime.js", async () => {
const actual = await vi.importActual<typeof import("../plugins/provider-runtime.js")>(
"../plugins/provider-runtime.js",
);
return {
...actual,
resolveProviderRuntimePlugin: vi.fn(() => undefined),
sanitizeProviderReplayHistoryWithPlugin: vi.fn(() => undefined),
validateProviderReplayTurnsWithPlugin: vi.fn(() => undefined),
};
});
vi.mock(
"../plugins/provider-runtime.js",
async () => await createSanitizeSessionHistoryProviderRuntimeMock(),
);
let sanitizeSessionHistory: SanitizeSessionHistoryHarness["sanitizeSessionHistory"];
let mockedHelpers: SanitizeSessionHistoryHarness["mockedHelpers"];

View File

@@ -60,6 +60,29 @@ export function makeSimpleUserMessages(): AgentMessage[] {
return messages as unknown as AgentMessage[];
}
export async function createSanitizeSessionHistoryHelpersMock(extra: Record<string, unknown> = {}) {
return {
...(await vi.importActual("./pi-embedded-helpers.js")),
sanitizeSessionMessagesImages: vi.fn(async (msgs) => msgs),
...extra,
};
}
export async function createSanitizeSessionHistoryProviderRuntimeMock(
extra: Record<string, unknown> = {},
) {
const actual = await vi.importActual<typeof import("../plugins/provider-runtime.js")>(
"../plugins/provider-runtime.js",
);
return {
...actual,
resolveProviderRuntimePlugin: vi.fn(() => undefined),
sanitizeProviderReplayHistoryWithPlugin: vi.fn(() => undefined),
validateProviderReplayTurnsWithPlugin: vi.fn(() => undefined),
...extra,
};
}
export async function loadSanitizeSessionHistoryWithCleanMocks(): Promise<SanitizeSessionHistoryHarness> {
vi.resetModules();
vi.resetAllMocks();