@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.
115 lines (85 loc) • 3.45 kB
text/typescript
import { describe, expect, it } from 'vitest';
import { merge } from '@/utils/merge';
import { ImageStore } from '../../store';
import { initialCreateImageState } from './initialState';
import { createImageSelectors } from './selectors';
// 创建一个最小的 ImageStore 模拟对象
const createMockImageStore = (overrides?: Partial<ImageStore>): ImageStore => {
return merge(
{
...initialCreateImageState,
// 其他必要的初始状态
} as ImageStore,
overrides || {},
);
};
describe('createImageSelectors', () => {
describe('isCreating', () => {
it('should return false from initial state', () => {
const state = createMockImageStore();
const result = createImageSelectors.isCreating(state);
expect(result).toBe(false);
});
it('should return true when isCreating is true', () => {
const state = createMockImageStore({ isCreating: true });
const result = createImageSelectors.isCreating(state);
expect(result).toBe(true);
});
it('should return false when isCreating is explicitly set to false', () => {
const state = createMockImageStore({ isCreating: false });
const result = createImageSelectors.isCreating(state);
expect(result).toBe(false);
});
});
describe('isCreatingWithNewTopic', () => {
it('should return false from initial state', () => {
const state = createMockImageStore();
const result = createImageSelectors.isCreatingWithNewTopic(state);
expect(result).toBe(false);
});
it('should return true when isCreatingWithNewTopic is true', () => {
const state = createMockImageStore({ isCreatingWithNewTopic: true });
const result = createImageSelectors.isCreatingWithNewTopic(state);
expect(result).toBe(true);
});
it('should return false when isCreatingWithNewTopic is explicitly set to false', () => {
const state = createMockImageStore({ isCreatingWithNewTopic: false });
const result = createImageSelectors.isCreatingWithNewTopic(state);
expect(result).toBe(false);
});
});
describe('combined states', () => {
it('should handle both states being true', () => {
const state = createMockImageStore({
isCreating: true,
isCreatingWithNewTopic: true,
});
expect(createImageSelectors.isCreating(state)).toBe(true);
expect(createImageSelectors.isCreatingWithNewTopic(state)).toBe(true);
});
it('should handle mixed states', () => {
const state = createMockImageStore({
isCreating: true,
isCreatingWithNewTopic: false,
});
expect(createImageSelectors.isCreating(state)).toBe(true);
expect(createImageSelectors.isCreatingWithNewTopic(state)).toBe(false);
});
it('should handle opposite mixed states', () => {
const state = createMockImageStore({
isCreating: false,
isCreatingWithNewTopic: true,
});
expect(createImageSelectors.isCreating(state)).toBe(false);
expect(createImageSelectors.isCreatingWithNewTopic(state)).toBe(true);
});
it('should handle both states being false', () => {
const state = createMockImageStore({
isCreating: false,
isCreatingWithNewTopic: false,
});
expect(createImageSelectors.isCreating(state)).toBe(false);
expect(createImageSelectors.isCreatingWithNewTopic(state)).toBe(false);
});
});
});