Files
obsidian_ollama/__mocks__/ollama-client.ts

45 lines
1.2 KiB
TypeScript

// Mock for ollama-client for testing
import type { OllamaMessage, OllamaTool } from '../src/types';
export class OllamaClient {
private url: string;
private model: string;
// Mock fetch function for testing
private fetchFn: typeof fetch;
constructor(url: string, model: string, fetchFn?: typeof fetch) {
this.url = url;
this.model = model;
this.fetchFn = fetchFn ?? (jest.fn() as typeof fetch);
}
async *streamChat(
_messages: OllamaMessage[],
_tools: OllamaTool[] = []
): AsyncGenerator<OllamaMessage, void, unknown> {
// Mock implementation - simulate streaming response
const mockMessages: OllamaMessage[] = [
{ role: 'assistant', content: 'Part 1', tool_calls: [] },
{ role: 'assistant', content: 'Part 2', tool_calls: [] },
];
for (const message of mockMessages) {
yield message;
await new Promise((resolve) => setTimeout(resolve, 10));
}
}
async chat(_messages: OllamaMessage[], _tools: OllamaTool[] = []): Promise<OllamaMessage> {
return {
role: 'assistant',
content: 'Mock response',
tool_calls: [],
};
}
cancelStream(): void {
// No-op in mock
}
}