/// /// import { beforeEach, vi } from 'vitest'; // Mock fetch for API calls during client tests. // In test environment there is no backend server, so we intercept // the specific endpoints the app uses and return valid mock data. beforeEach(() => { const originalFetch = globalThis.fetch; vi.spyOn(globalThis, 'fetch').mockImplementation( async (input: RequestInfo | URL, init?: RequestInit) => { const url = typeof input === 'string' ? input : input instanceof URL ? input.href : input.url; // Mock server props endpoint if (url.includes('/server')) { return new Response( JSON.stringify({ mode: 'router', version: 'test', git_commit: 'test', git_branch: 'test' }), { status: 200, headers: { 'Content-Type': 'application/json' } } ); } // Mock models list endpoint if (/\/v1\/models|\/models\b/.test(url)) { return new Response( JSON.stringify({ object: 'list', data: [ { id: 'test-model.gguf', object: 'model', owned_by: 'llamacpp', created: 0, in_cache: false, path: 'models/test-model.gguf', status: { value: 'unloaded' }, meta: {} } ], models: [ { model: 'test-model.gguf', name: 'Test Model', details: {} } ] }), { status: 200, headers: { 'Content-Type': 'application/json' } } ); } // Mock /props endpoint (used for modalities) if (url.includes('/props')) { return new Response( JSON.stringify({ default_generation_settings: { n_ctx: 2048 } }), { status: 200, headers: { 'Content-Type': 'application/json' } } ); } // Mock /tools endpoint (used for built-in tools list) if (url.includes('/tools')) { return new Response(JSON.stringify([]), { status: 200, headers: { 'Content-Type': 'application/json' } }); } // Default: use real fetch return originalFetch(input, init); } ); });