UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

74 lines (62 loc) 2.12 kB
// @vitest-environment node import { ModelProvider } from 'model-bank'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { LobeAiHubMixAI } from './index'; describe('LobeAiHubMixAI', () => { let instance: InstanceType<typeof LobeAiHubMixAI>; beforeEach(() => { instance = new LobeAiHubMixAI({ apiKey: 'test_api_key' }); }); describe('constructor', () => { it('should initialize with correct provider', () => { expect(instance).toBeDefined(); }); it('should set APP-Code header', () => { // The RouterRuntime-based providers have different structure // We just verify the instance is created correctly expect(instance).toBeInstanceOf(LobeAiHubMixAI); }); }); describe('chat', () => { it('should support chat method', async () => { vi.spyOn(instance as any, 'getRuntimeByModel').mockResolvedValue({ chat: vi.fn().mockResolvedValue(new Response()), }); const payload = { messages: [{ content: 'Hello', role: 'user' as const }], model: 'gpt-4', temperature: 0.7, }; const result = await instance.chat(payload); expect(result).toBeDefined(); }); }); describe('models', () => { it('should return empty array on error', async () => { // Mock the client to throw an error const mockClient = { models: { list: vi.fn().mockRejectedValue(new Error('API Error')), }, }; vi.spyOn(instance as any, 'getRuntimeByModel').mockResolvedValue({ models: async () => { try { await mockClient.models.list(); } catch (error) { console.warn( 'Failed to fetch AiHubMix models. Please ensure your AiHubMix API key is valid:', error, ); return []; } }, }); // The models method should return empty array on error const models = await (instance as any) .getRuntimeByModel('test-model') .then((r: any) => r.models()); expect(models).toEqual([]); }); }); });