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.

64 lines (50 loc) 1.91 kB
import { act } from '@testing-library/react'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import { DEFAULT_FEATURE_FLAGS, mapFeatureFlagsEnvToState } from '@/config/featureFlags'; import { ServerConfigStore, createServerConfigStore, initServerConfigStore } from './store'; describe('createServerConfigStore', () => { beforeEach(() => { // 每个测试用例前重置模块状态 vi.resetModules(); }); it('should create a singleton store', () => { const store1 = createServerConfigStore(); const store2 = createServerConfigStore(); expect(store1).toBe(store2); }); it('should initialize store with default state', () => { const store = createServerConfigStore(); expect(store.getState().featureFlags).toHaveProperty('showLLM'); expect(store.getState().featureFlags).toHaveProperty('enablePlugins'); expect(store.getState()).toMatchObject({ serverConfig: { telemetry: {}, aiProvider: {} }, }); }); it('should initialize store with custom initial state', () => { const initialState: Partial<ServerConfigStore> = { featureFlags: { ...mapFeatureFlagsEnvToState(DEFAULT_FEATURE_FLAGS), isAgentEditable: false, }, serverConfig: { telemetry: { langfuse: true }, aiProvider: {} }, }; const store = initServerConfigStore(initialState); expect(store.getState().featureFlags.isAgentEditable).toBeFalsy(); expect(store.getState().serverConfig).toEqual({ telemetry: { langfuse: true }, aiProvider: {}, }); }); it('should update store state correctly', () => { const store = createServerConfigStore(); act(() => { store.setState({ featureFlags: { ...store.getState().featureFlags, showDalle: false, }, }); }); expect(store.getState().featureFlags.showDalle).toBeFalsy(); }); });