mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-07 06:01:38 +00:00
refactor(auto-reply): share agent-runner test harness mocks
This commit is contained in:
@@ -4,6 +4,11 @@ import type { TypingMode } from "../../config/types.js";
|
|||||||
import type { TemplateContext } from "../templating.js";
|
import type { TemplateContext } from "../templating.js";
|
||||||
import type { GetReplyOptions } from "../types.js";
|
import type { GetReplyOptions } from "../types.js";
|
||||||
import type { FollowupRun, QueueSettings } from "./queue.js";
|
import type { FollowupRun, QueueSettings } from "./queue.js";
|
||||||
|
import {
|
||||||
|
embeddedPiMockFactory,
|
||||||
|
modelFallbackMockFactory,
|
||||||
|
queueMockFactory,
|
||||||
|
} from "./agent-runner.test-harness.mocks.js";
|
||||||
import { createMockTypingController } from "./test-helpers.js";
|
import { createMockTypingController } from "./test-helpers.js";
|
||||||
|
|
||||||
// Avoid exporting vitest mock types (TS2742 under pnpm + d.ts emit).
|
// Avoid exporting vitest mock types (TS2742 under pnpm + d.ts emit).
|
||||||
@@ -40,34 +45,14 @@ export function installRunReplyAgentTypingHeartbeatTestHooks() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
vi.mock("../../agents/model-fallback.js", () => ({
|
vi.mock("../../agents/model-fallback.js", () => ({
|
||||||
runWithModelFallback: async ({
|
...modelFallbackMockFactory(),
|
||||||
provider,
|
|
||||||
model,
|
|
||||||
run,
|
|
||||||
}: {
|
|
||||||
provider: string;
|
|
||||||
model: string;
|
|
||||||
run: (provider: string, model: string) => Promise<unknown>;
|
|
||||||
}) => ({
|
|
||||||
result: await run(provider, model),
|
|
||||||
provider,
|
|
||||||
model,
|
|
||||||
}),
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
vi.mock("../../agents/pi-embedded.js", () => ({
|
vi.mock("../../agents/pi-embedded.js", () => ({
|
||||||
queueEmbeddedPiMessage: vi.fn().mockReturnValue(false),
|
...embeddedPiMockFactory(state),
|
||||||
runEmbeddedPiAgent: (params: unknown) => state.runEmbeddedPiAgentMock(params),
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
vi.mock("./queue.js", async () => {
|
vi.mock("./queue.js", queueMockFactory);
|
||||||
const actual = await vi.importActual<typeof import("./queue.js")>("./queue.js");
|
|
||||||
return {
|
|
||||||
...actual,
|
|
||||||
enqueueFollowupRun: vi.fn(),
|
|
||||||
scheduleFollowupDrain: vi.fn(),
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
export function createMinimalRun(params?: {
|
export function createMinimalRun(params?: {
|
||||||
opts?: GetReplyOptions;
|
opts?: GetReplyOptions;
|
||||||
|
|||||||
@@ -3,6 +3,11 @@ import path from "node:path";
|
|||||||
import { vi } from "vitest";
|
import { vi } from "vitest";
|
||||||
import type { TemplateContext } from "../templating.js";
|
import type { TemplateContext } from "../templating.js";
|
||||||
import type { FollowupRun, QueueSettings } from "./queue.js";
|
import type { FollowupRun, QueueSettings } from "./queue.js";
|
||||||
|
import {
|
||||||
|
embeddedPiMockFactory,
|
||||||
|
modelFallbackMockFactory,
|
||||||
|
queueMockFactory,
|
||||||
|
} from "./agent-runner.test-harness.mocks.js";
|
||||||
import { createMockTypingController } from "./test-helpers.js";
|
import { createMockTypingController } from "./test-helpers.js";
|
||||||
|
|
||||||
// Avoid exporting vitest mock types (TS2742 under pnpm + d.ts emit).
|
// Avoid exporting vitest mock types (TS2742 under pnpm + d.ts emit).
|
||||||
@@ -31,19 +36,7 @@ export function getRunCliAgentMock(): AnyMock {
|
|||||||
export type { EmbeddedRunParams };
|
export type { EmbeddedRunParams };
|
||||||
|
|
||||||
vi.mock("../../agents/model-fallback.js", () => ({
|
vi.mock("../../agents/model-fallback.js", () => ({
|
||||||
runWithModelFallback: async ({
|
...modelFallbackMockFactory(),
|
||||||
provider,
|
|
||||||
model,
|
|
||||||
run,
|
|
||||||
}: {
|
|
||||||
provider: string;
|
|
||||||
model: string;
|
|
||||||
run: (provider: string, model: string) => Promise<unknown>;
|
|
||||||
}) => ({
|
|
||||||
result: await run(provider, model),
|
|
||||||
provider,
|
|
||||||
model,
|
|
||||||
}),
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
vi.mock("../../agents/cli-runner.js", () => ({
|
vi.mock("../../agents/cli-runner.js", () => ({
|
||||||
@@ -51,18 +44,10 @@ vi.mock("../../agents/cli-runner.js", () => ({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
vi.mock("../../agents/pi-embedded.js", () => ({
|
vi.mock("../../agents/pi-embedded.js", () => ({
|
||||||
queueEmbeddedPiMessage: vi.fn().mockReturnValue(false),
|
...embeddedPiMockFactory(state),
|
||||||
runEmbeddedPiAgent: (params: unknown) => state.runEmbeddedPiAgentMock(params),
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
vi.mock("./queue.js", async () => {
|
vi.mock("./queue.js", queueMockFactory);
|
||||||
const actual = await vi.importActual<typeof import("./queue.js")>("./queue.js");
|
|
||||||
return {
|
|
||||||
...actual,
|
|
||||||
enqueueFollowupRun: vi.fn(),
|
|
||||||
scheduleFollowupDrain: vi.fn(),
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
export async function seedSessionStore(params: {
|
export async function seedSessionStore(params: {
|
||||||
storePath: string;
|
storePath: string;
|
||||||
|
|||||||
37
src/auto-reply/reply/agent-runner.test-harness.mocks.ts
Normal file
37
src/auto-reply/reply/agent-runner.test-harness.mocks.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import { vi } from "vitest";
|
||||||
|
|
||||||
|
export function modelFallbackMockFactory(): Record<string, unknown> {
|
||||||
|
return {
|
||||||
|
runWithModelFallback: async ({
|
||||||
|
provider,
|
||||||
|
model,
|
||||||
|
run,
|
||||||
|
}: {
|
||||||
|
provider: string;
|
||||||
|
model: string;
|
||||||
|
run: (provider: string, model: string) => Promise<unknown>;
|
||||||
|
}) => ({
|
||||||
|
result: await run(provider, model),
|
||||||
|
provider,
|
||||||
|
model,
|
||||||
|
}),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function embeddedPiMockFactory(state: {
|
||||||
|
runEmbeddedPiAgentMock: (params: unknown) => unknown;
|
||||||
|
}): Record<string, unknown> {
|
||||||
|
return {
|
||||||
|
queueEmbeddedPiMessage: vi.fn().mockReturnValue(false),
|
||||||
|
runEmbeddedPiAgent: (params: unknown) => state.runEmbeddedPiAgentMock(params),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function queueMockFactory(): Promise<Record<string, unknown>> {
|
||||||
|
const actual = await vi.importActual<typeof import("./queue.js")>("./queue.js");
|
||||||
|
return {
|
||||||
|
...actual,
|
||||||
|
enqueueFollowupRun: vi.fn(),
|
||||||
|
scheduleFollowupDrain: vi.fn(),
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user