mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-15 12:00:43 +00:00
51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { vi } from "vitest";
|
|
|
|
// Avoid exporting vitest mock types (TS2742 under pnpm + d.ts emit).
|
|
// oxlint-disable-next-line typescript/no-explicit-any
|
|
type AnyMock = any;
|
|
|
|
const hoisted = vi.hoisted(() => ({
|
|
embedBatch: vi.fn(async (texts: string[]) => texts.map(() => [0, 1, 0])),
|
|
embedQuery: vi.fn(async () => [0, 1, 0]),
|
|
}));
|
|
|
|
export function getEmbedBatchMock(): AnyMock {
|
|
return hoisted.embedBatch;
|
|
}
|
|
|
|
export function getEmbedQueryMock(): AnyMock {
|
|
return hoisted.embedQuery;
|
|
}
|
|
|
|
export function resetEmbeddingMocks(): void {
|
|
hoisted.embedBatch.mockReset();
|
|
hoisted.embedQuery.mockReset();
|
|
hoisted.embedBatch.mockImplementation(async (texts: string[]) => texts.map(() => [0, 1, 0]));
|
|
hoisted.embedQuery.mockImplementation(async () => [0, 1, 0]);
|
|
}
|
|
|
|
// Unit tests: avoid importing the real chokidar implementation (native fsevents, etc.).
|
|
vi.mock("chokidar", () => ({
|
|
default: {
|
|
watch: () => ({ on: () => {}, close: async () => {} }),
|
|
},
|
|
watch: () => ({ on: () => {}, close: async () => {} }),
|
|
}));
|
|
|
|
vi.mock("./sqlite-vec.js", () => ({
|
|
loadSqliteVecExtension: async () => ({ ok: false, error: "sqlite-vec disabled in tests" }),
|
|
}));
|
|
|
|
vi.mock("./embeddings.js", () => ({
|
|
createEmbeddingProvider: async () => ({
|
|
requestedProvider: "openai",
|
|
provider: {
|
|
id: "mock",
|
|
model: "mock-embed",
|
|
maxInputTokens: 8192,
|
|
embedQuery: hoisted.embedQuery,
|
|
embedBatch: hoisted.embedBatch,
|
|
},
|
|
}),
|
|
}));
|