refactor(reply-tests): share harness mock bundle

This commit is contained in:
Sebastian
2026-02-15 11:44:32 -05:00
parent 2da512e24d
commit 10feda100e
3 changed files with 33 additions and 15 deletions

View File

@@ -39,19 +39,21 @@ export function installRunReplyAgentTypingHeartbeatTestHooks() {
}); });
} }
async function loadHarnessMocks() {
const { loadAgentRunnerHarnessMockBundle } = await import("./agent-runner.test-harness.mocks.js");
return await loadAgentRunnerHarnessMockBundle(state);
}
vi.mock("../../agents/model-fallback.js", async () => { vi.mock("../../agents/model-fallback.js", async () => {
const { modelFallbackMockFactory } = await import("./agent-runner.test-harness.mocks.js"); return (await loadHarnessMocks()).modelFallback;
return modelFallbackMockFactory();
}); });
vi.mock("../../agents/pi-embedded.js", async () => { vi.mock("../../agents/pi-embedded.js", async () => {
const { embeddedPiMockFactory } = await import("./agent-runner.test-harness.mocks.js"); return (await loadHarnessMocks()).embeddedPi;
return embeddedPiMockFactory(state);
}); });
vi.mock("./queue.js", async () => { vi.mock("./queue.js", async () => {
const { queueMockFactory } = await import("./agent-runner.test-harness.mocks.js"); return (await loadHarnessMocks()).queue;
return await queueMockFactory();
}); });
export function createMinimalRun(params?: { export function createMinimalRun(params?: {

View File

@@ -30,9 +30,13 @@ export function getRunCliAgentMock(): AnyMock {
export type { EmbeddedRunParams }; export type { EmbeddedRunParams };
async function loadHarnessMocks() {
const { loadAgentRunnerHarnessMockBundle } = await import("./agent-runner.test-harness.mocks.js");
return await loadAgentRunnerHarnessMockBundle(state);
}
vi.mock("../../agents/model-fallback.js", async () => { vi.mock("../../agents/model-fallback.js", async () => {
const { modelFallbackMockFactory } = await import("./agent-runner.test-harness.mocks.js"); return (await loadHarnessMocks()).modelFallback;
return modelFallbackMockFactory();
}); });
vi.mock("../../agents/cli-runner.js", () => ({ vi.mock("../../agents/cli-runner.js", () => ({
@@ -40,13 +44,11 @@ vi.mock("../../agents/cli-runner.js", () => ({
})); }));
vi.mock("../../agents/pi-embedded.js", async () => { vi.mock("../../agents/pi-embedded.js", async () => {
const { embeddedPiMockFactory } = await import("./agent-runner.test-harness.mocks.js"); return (await loadHarnessMocks()).embeddedPi;
return embeddedPiMockFactory(state);
}); });
vi.mock("./queue.js", async () => { vi.mock("./queue.js", async () => {
const { queueMockFactory } = await import("./agent-runner.test-harness.mocks.js"); return (await loadHarnessMocks()).queue;
return await queueMockFactory();
}); });
export async function seedSessionStore(params: { export async function seedSessionStore(params: {

View File

@@ -1,5 +1,9 @@
import { vi } from "vitest"; import { vi } from "vitest";
export type AgentRunnerEmbeddedState = {
runEmbeddedPiAgentMock: (params: unknown) => unknown;
};
export function modelFallbackMockFactory(): Record<string, unknown> { export function modelFallbackMockFactory(): Record<string, unknown> {
return { return {
runWithModelFallback: async ({ runWithModelFallback: async ({
@@ -18,9 +22,7 @@ export function modelFallbackMockFactory(): Record<string, unknown> {
}; };
} }
export function embeddedPiMockFactory(state: { export function embeddedPiMockFactory(state: AgentRunnerEmbeddedState): Record<string, unknown> {
runEmbeddedPiAgentMock: (params: unknown) => unknown;
}): Record<string, unknown> {
return { return {
queueEmbeddedPiMessage: vi.fn().mockReturnValue(false), queueEmbeddedPiMessage: vi.fn().mockReturnValue(false),
runEmbeddedPiAgent: (params: unknown) => state.runEmbeddedPiAgentMock(params), runEmbeddedPiAgent: (params: unknown) => state.runEmbeddedPiAgentMock(params),
@@ -35,3 +37,15 @@ export async function queueMockFactory(): Promise<Record<string, unknown>> {
scheduleFollowupDrain: vi.fn(), scheduleFollowupDrain: vi.fn(),
}; };
} }
export async function loadAgentRunnerHarnessMockBundle(state: AgentRunnerEmbeddedState): Promise<{
modelFallback: Record<string, unknown>;
embeddedPi: Record<string, unknown>;
queue: Record<string, unknown>;
}> {
return {
modelFallback: modelFallbackMockFactory(),
embeddedPi: embeddedPiMockFactory(state),
queue: await queueMockFactory(),
};
}