mirror of
https://github.com/langgenius/dify.git
synced 2026-02-24 18:05:11 +00:00
181 lines
5.3 KiB
TypeScript
181 lines
5.3 KiB
TypeScript
import { Resolution, TransferMethod } from '@/types/app'
|
|
import { createFeaturesStore } from './store'
|
|
|
|
describe('createFeaturesStore', () => {
|
|
describe('Default State', () => {
|
|
it('should create a store with moreLikeThis disabled by default', () => {
|
|
const store = createFeaturesStore()
|
|
const state = store.getState()
|
|
|
|
expect(state.features.moreLikeThis?.enabled).toBe(false)
|
|
})
|
|
|
|
it('should create a store with opening disabled by default', () => {
|
|
const store = createFeaturesStore()
|
|
const state = store.getState()
|
|
|
|
expect(state.features.opening?.enabled).toBe(false)
|
|
})
|
|
|
|
it('should create a store with suggested disabled by default', () => {
|
|
const store = createFeaturesStore()
|
|
const state = store.getState()
|
|
|
|
expect(state.features.suggested?.enabled).toBe(false)
|
|
})
|
|
|
|
it('should create a store with text2speech disabled by default', () => {
|
|
const store = createFeaturesStore()
|
|
const state = store.getState()
|
|
|
|
expect(state.features.text2speech?.enabled).toBe(false)
|
|
})
|
|
|
|
it('should create a store with speech2text disabled by default', () => {
|
|
const store = createFeaturesStore()
|
|
const state = store.getState()
|
|
|
|
expect(state.features.speech2text?.enabled).toBe(false)
|
|
})
|
|
|
|
it('should create a store with citation disabled by default', () => {
|
|
const store = createFeaturesStore()
|
|
const state = store.getState()
|
|
|
|
expect(state.features.citation?.enabled).toBe(false)
|
|
})
|
|
|
|
it('should create a store with moderation disabled by default', () => {
|
|
const store = createFeaturesStore()
|
|
const state = store.getState()
|
|
|
|
expect(state.features.moderation?.enabled).toBe(false)
|
|
})
|
|
|
|
it('should create a store with annotationReply disabled by default', () => {
|
|
const store = createFeaturesStore()
|
|
const state = store.getState()
|
|
|
|
expect(state.features.annotationReply?.enabled).toBe(false)
|
|
})
|
|
})
|
|
|
|
describe('File Image Initialization', () => {
|
|
it('should initialize file image enabled as false', () => {
|
|
const store = createFeaturesStore()
|
|
const { features } = store.getState()
|
|
|
|
expect(features.file?.image?.enabled).toBe(false)
|
|
})
|
|
|
|
it('should initialize file image detail as high resolution', () => {
|
|
const store = createFeaturesStore()
|
|
const { features } = store.getState()
|
|
|
|
expect(features.file?.image?.detail).toBe(Resolution.high)
|
|
})
|
|
|
|
it('should initialize file image number_limits as 3', () => {
|
|
const store = createFeaturesStore()
|
|
const { features } = store.getState()
|
|
|
|
expect(features.file?.image?.number_limits).toBe(3)
|
|
})
|
|
|
|
it('should initialize file image transfer_methods with local and remote options', () => {
|
|
const store = createFeaturesStore()
|
|
const { features } = store.getState()
|
|
|
|
expect(features.file?.image?.transfer_methods).toEqual([
|
|
TransferMethod.local_file,
|
|
TransferMethod.remote_url,
|
|
])
|
|
})
|
|
})
|
|
|
|
describe('Feature Merging', () => {
|
|
it('should merge initial moreLikeThis enabled state', () => {
|
|
const store = createFeaturesStore({
|
|
features: {
|
|
moreLikeThis: { enabled: true },
|
|
},
|
|
})
|
|
const { features } = store.getState()
|
|
|
|
expect(features.moreLikeThis?.enabled).toBe(true)
|
|
})
|
|
|
|
it('should merge initial opening enabled state', () => {
|
|
const store = createFeaturesStore({
|
|
features: {
|
|
opening: { enabled: true },
|
|
},
|
|
})
|
|
const { features } = store.getState()
|
|
|
|
expect(features.opening?.enabled).toBe(true)
|
|
})
|
|
|
|
it('should preserve additional properties when merging', () => {
|
|
const store = createFeaturesStore({
|
|
features: {
|
|
opening: { enabled: true, opening_statement: 'Hello!' },
|
|
},
|
|
})
|
|
const { features } = store.getState()
|
|
|
|
expect(features.opening?.enabled).toBe(true)
|
|
expect(features.opening?.opening_statement).toBe('Hello!')
|
|
})
|
|
})
|
|
|
|
describe('setFeatures', () => {
|
|
it('should update moreLikeThis feature via setFeatures', () => {
|
|
const store = createFeaturesStore()
|
|
|
|
store.getState().setFeatures({
|
|
moreLikeThis: { enabled: true },
|
|
})
|
|
|
|
expect(store.getState().features.moreLikeThis?.enabled).toBe(true)
|
|
})
|
|
|
|
it('should update multiple features via setFeatures', () => {
|
|
const store = createFeaturesStore()
|
|
|
|
store.getState().setFeatures({
|
|
moreLikeThis: { enabled: true },
|
|
opening: { enabled: true },
|
|
})
|
|
|
|
expect(store.getState().features.moreLikeThis?.enabled).toBe(true)
|
|
expect(store.getState().features.opening?.enabled).toBe(true)
|
|
})
|
|
})
|
|
|
|
describe('showFeaturesModal', () => {
|
|
it('should initialize showFeaturesModal as false', () => {
|
|
const store = createFeaturesStore()
|
|
|
|
expect(store.getState().showFeaturesModal).toBe(false)
|
|
})
|
|
|
|
it('should toggle showFeaturesModal to true', () => {
|
|
const store = createFeaturesStore()
|
|
|
|
store.getState().setShowFeaturesModal(true)
|
|
|
|
expect(store.getState().showFeaturesModal).toBe(true)
|
|
})
|
|
|
|
it('should toggle showFeaturesModal to false', () => {
|
|
const store = createFeaturesStore()
|
|
store.getState().setShowFeaturesModal(true)
|
|
|
|
store.getState().setShowFeaturesModal(false)
|
|
|
|
expect(store.getState().showFeaturesModal).toBe(false)
|
|
})
|
|
})
|
|
})
|