MiniSearch / client /modules /textGeneration.inference.test.ts
github-actions[bot]
Sync from https://github.com/felladrin/MiniSearch
a9fbc84
Raw
History Blame Contribute Delete
2.47 kB
import { describe, expect, it, vi } from "vitest";
vi.mock("./pubSub", () => ({
getConversationSummary: vi.fn(() => ({ conversationId: "", summary: "" })),
getQuery: vi.fn(() => ""),
getResponse: vi.fn(() => ""),
getSettings: vi.fn(() => ({
inferenceType: "browser",
enableAiResponse: true,
enableTextSearch: true,
enableImageSearch: true,
searchResultsLimit: 10,
allowAiModelDownload: true,
})),
getTextGenerationState: vi.fn(() => "idle"),
listenToSettingsChanges: vi.fn(),
updateChatMessages: vi.fn(),
updateConversationSummary: vi.fn(),
updateImageSearchResults: vi.fn(),
updateImageSearchState: vi.fn(),
updateLlmTextSearchResults: vi.fn(),
updateResponse: vi.fn(),
updateSearchPromise: vi.fn(),
updateTextGenerationState: vi.fn(),
updateTextSearchResults: vi.fn(),
updateTextSearchState: vi.fn(),
}));
vi.mock("./history", () => ({
getCurrentSearchRunId: vi.fn(() => "run-1"),
saveLlmResponseForQuery: vi.fn(() => Promise.resolve()),
updateSearchResults: vi.fn(() => Promise.resolve()),
}));
vi.mock("./logEntries", () => ({ addLogEntry: vi.fn() }));
vi.mock("./notifications", () => ({ showAiCompleteNotification: vi.fn() }));
vi.mock("./search", () => ({
searchImages: vi.fn(() => Promise.resolve([])),
searchText: vi.fn(() => Promise.resolve([])),
}));
vi.mock("./systemPrompt", () => ({ getSystemPrompt: vi.fn(() => "") }));
vi.mock("./textGenerationUtilities", () => ({
ChatGenerationError: class ChatGenerationError extends Error {},
defaultContextSize: 4096,
getFormattedSearchResults: vi.fn(() => ""),
searchResultsToConsider: 6,
}));
vi.mock("gpt-tokenizer", () => ({
default: { encode: vi.fn(() => [1, 2, 3]) },
}));
vi.mock("pretty-ms", () => ({
default: vi.fn(() => "100ms"),
}));
import { getSettings } from "./pubSub";
import { textGenerationFunctions } from "./textGeneration";
const mockGetSettings = vi.mocked(getSettings);
describe("needsModelDownloadGate", () => {
// Only the in-browser backend downloads a model, and an unknown backend from
// an older stored profile falls back to it.
it.each([
["browser", true],
["openai", false],
["horde", false],
["internal", false],
["unknown-legacy-type", true],
])("gates the %s inference type: %s", (inferenceType, expected) => {
mockGetSettings.mockReturnValueOnce({ inferenceType } as never);
expect(textGenerationFunctions.needsModelDownloadGate()).toBe(expected);
});
});