mirror of
https://github.com/farcasclaudiu/openclaw.git
synced 2026-06-29 13:02:10 +03:00
test: add explicit harness mock types
This commit is contained in:
@@ -256,7 +256,12 @@ vi.mock("./doctor-state-migrations.js", () => ({
|
|||||||
runLegacyStateMigrations,
|
runLegacyStateMigrations,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
export async function arrangeLegacyStateMigrationTest() {
|
export async function arrangeLegacyStateMigrationTest(): Promise<{
|
||||||
|
doctorCommand: unknown;
|
||||||
|
runtime: { log: MockFn; error: MockFn; exit: MockFn };
|
||||||
|
detectLegacyStateMigrations: MockFn;
|
||||||
|
runLegacyStateMigrations: MockFn;
|
||||||
|
}> {
|
||||||
readConfigFileSnapshot.mockResolvedValue({
|
readConfigFileSnapshot.mockResolvedValue({
|
||||||
path: "/tmp/openclaw.json",
|
path: "/tmp/openclaw.json",
|
||||||
exists: true,
|
exists: true,
|
||||||
@@ -270,9 +275,9 @@ export async function arrangeLegacyStateMigrationTest() {
|
|||||||
|
|
||||||
const { doctorCommand } = await import("./doctor.js");
|
const { doctorCommand } = await import("./doctor.js");
|
||||||
const runtime = {
|
const runtime = {
|
||||||
log: vi.fn(),
|
log: vi.fn() as unknown as MockFn,
|
||||||
error: vi.fn(),
|
error: vi.fn() as unknown as MockFn,
|
||||||
exit: vi.fn(),
|
exit: vi.fn() as unknown as MockFn,
|
||||||
};
|
};
|
||||||
|
|
||||||
detectLegacyStateMigrations.mockClear();
|
detectLegacyStateMigrations.mockClear();
|
||||||
|
|||||||
@@ -1,6 +1,21 @@
|
|||||||
import { vi } from "vitest";
|
import { vi } from "vitest";
|
||||||
|
import type { MockFn } from "../test-utils/vitest-mock-fn.js";
|
||||||
|
|
||||||
export function discordWebMediaMockFactory() {
|
type DiscordWebMediaMockFactoryResult = {
|
||||||
|
loadWebMedia: MockFn;
|
||||||
|
loadWebMediaRaw: MockFn;
|
||||||
|
};
|
||||||
|
|
||||||
|
type DiscordRestFactoryResult = {
|
||||||
|
rest: import("@buape/carbon").RequestClient;
|
||||||
|
postMock: MockFn;
|
||||||
|
putMock: MockFn;
|
||||||
|
getMock: MockFn;
|
||||||
|
patchMock: MockFn;
|
||||||
|
deleteMock: MockFn;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function discordWebMediaMockFactory(): DiscordWebMediaMockFactoryResult {
|
||||||
return {
|
return {
|
||||||
loadWebMedia: vi.fn().mockResolvedValue({
|
loadWebMedia: vi.fn().mockResolvedValue({
|
||||||
buffer: Buffer.from("img"),
|
buffer: Buffer.from("img"),
|
||||||
@@ -17,12 +32,12 @@ export function discordWebMediaMockFactory() {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export function makeDiscordRest() {
|
export function makeDiscordRest(): DiscordRestFactoryResult {
|
||||||
const postMock = vi.fn();
|
const postMock = vi.fn() as unknown as MockFn;
|
||||||
const putMock = vi.fn();
|
const putMock = vi.fn() as unknown as MockFn;
|
||||||
const getMock = vi.fn();
|
const getMock = vi.fn() as unknown as MockFn;
|
||||||
const patchMock = vi.fn();
|
const patchMock = vi.fn() as unknown as MockFn;
|
||||||
const deleteMock = vi.fn();
|
const deleteMock = vi.fn() as unknown as MockFn;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
rest: {
|
rest: {
|
||||||
|
|||||||
@@ -1,18 +1,31 @@
|
|||||||
import { beforeEach, vi } from "vitest";
|
import { beforeEach, vi } from "vitest";
|
||||||
|
import type { MockFn } from "../test-utils/vitest-mock-fn.js";
|
||||||
import { resetInboundDedupe } from "../auto-reply/reply/inbound-dedupe.js";
|
import { resetInboundDedupe } from "../auto-reply/reply/inbound-dedupe.js";
|
||||||
import { resetSystemEventsForTest } from "../infra/system-events.js";
|
import { resetSystemEventsForTest } from "../infra/system-events.js";
|
||||||
|
|
||||||
const waitForTransportReadyMock = vi.hoisted(() => vi.fn());
|
type SignalToolResultTestMocks = {
|
||||||
const sendMock = vi.hoisted(() => vi.fn());
|
waitForTransportReadyMock: MockFn;
|
||||||
const replyMock = vi.hoisted(() => vi.fn());
|
sendMock: MockFn;
|
||||||
const updateLastRouteMock = vi.hoisted(() => vi.fn());
|
replyMock: MockFn;
|
||||||
const readAllowFromStoreMock = vi.hoisted(() => vi.fn());
|
updateLastRouteMock: MockFn;
|
||||||
const upsertPairingRequestMock = vi.hoisted(() => vi.fn());
|
readAllowFromStoreMock: MockFn;
|
||||||
const streamMock = vi.hoisted(() => vi.fn());
|
upsertPairingRequestMock: MockFn;
|
||||||
const signalCheckMock = vi.hoisted(() => vi.fn());
|
streamMock: MockFn;
|
||||||
const signalRpcRequestMock = vi.hoisted(() => vi.fn());
|
signalCheckMock: MockFn;
|
||||||
|
signalRpcRequestMock: MockFn;
|
||||||
|
};
|
||||||
|
|
||||||
export function getSignalToolResultTestMocks() {
|
const waitForTransportReadyMock = vi.hoisted(() => vi.fn()) as unknown as MockFn;
|
||||||
|
const sendMock = vi.hoisted(() => vi.fn()) as unknown as MockFn;
|
||||||
|
const replyMock = vi.hoisted(() => vi.fn()) as unknown as MockFn;
|
||||||
|
const updateLastRouteMock = vi.hoisted(() => vi.fn()) as unknown as MockFn;
|
||||||
|
const readAllowFromStoreMock = vi.hoisted(() => vi.fn()) as unknown as MockFn;
|
||||||
|
const upsertPairingRequestMock = vi.hoisted(() => vi.fn()) as unknown as MockFn;
|
||||||
|
const streamMock = vi.hoisted(() => vi.fn()) as unknown as MockFn;
|
||||||
|
const signalCheckMock = vi.hoisted(() => vi.fn()) as unknown as MockFn;
|
||||||
|
const signalRpcRequestMock = vi.hoisted(() => vi.fn()) as unknown as MockFn;
|
||||||
|
|
||||||
|
export function getSignalToolResultTestMocks(): SignalToolResultTestMocks {
|
||||||
return {
|
return {
|
||||||
waitForTransportReadyMock,
|
waitForTransportReadyMock,
|
||||||
sendMock,
|
sendMock,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { beforeEach, vi } from "vitest";
|
import { beforeEach, vi } from "vitest";
|
||||||
|
import type { MockFn } from "../test-utils/vitest-mock-fn.js";
|
||||||
|
|
||||||
const { botApi, botCtorSpy } = vi.hoisted(() => ({
|
const { botApi, botCtorSpy } = vi.hoisted(() => ({
|
||||||
botApi: {
|
botApi: {
|
||||||
@@ -20,6 +21,13 @@ const { loadConfig } = vi.hoisted(() => ({
|
|||||||
loadConfig: vi.fn(() => ({})),
|
loadConfig: vi.fn(() => ({})),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
type TelegramSendTestMocks = {
|
||||||
|
botApi: Record<string, MockFn>;
|
||||||
|
botCtorSpy: MockFn;
|
||||||
|
loadConfig: MockFn;
|
||||||
|
loadWebMedia: MockFn;
|
||||||
|
};
|
||||||
|
|
||||||
vi.mock("../web/media.js", () => ({
|
vi.mock("../web/media.js", () => ({
|
||||||
loadWebMedia,
|
loadWebMedia,
|
||||||
}));
|
}));
|
||||||
@@ -48,7 +56,7 @@ vi.mock("../config/config.js", async (importOriginal) => {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
export function getTelegramSendTestMocks() {
|
export function getTelegramSendTestMocks(): TelegramSendTestMocks {
|
||||||
return { botApi, botCtorSpy, loadConfig, loadWebMedia };
|
return { botApi, botCtorSpy, loadConfig, loadWebMedia };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user