mirror of
https://github.com/langgenius/dify.git
synced 2026-05-13 08:57:28 +08:00
Signed-off-by: yyh <yuanyouhuilyz@gmail.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: CodingOnStar <hanxujiang@dify.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Coding On Star <447357187@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: -LAN- <laipz8200@outlook.com> Co-authored-by: statxc <tyleradams93226@gmail.com>
63 lines
2.2 KiB
TypeScript
63 lines
2.2 KiB
TypeScript
import type { ReactNode } from 'react'
|
|
import { render } from '@testing-library/react'
|
|
import { ModelTypeEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
|
|
import EmbeddingModel from './embedding-model'
|
|
|
|
const mockUseModelList = vi.hoisted(() => vi.fn())
|
|
const mockModelSelector = vi.hoisted(() => vi.fn(() => <div data-testid="model-selector">selector</div>))
|
|
|
|
vi.mock('@/app/components/workflow/nodes/_base/components/layout', () => ({
|
|
Field: ({ children, fieldTitleProps }: { children: ReactNode, fieldTitleProps: { warningDot?: boolean } }) => (
|
|
<div data-testid="field" data-warning-dot={String(!!fieldTitleProps.warningDot)}>
|
|
{children}
|
|
</div>
|
|
),
|
|
}))
|
|
|
|
vi.mock('@/app/components/header/account-setting/model-provider-page/hooks', () => ({
|
|
useModelList: mockUseModelList,
|
|
}))
|
|
|
|
vi.mock('@/app/components/header/account-setting/model-provider-page/model-selector', () => ({
|
|
default: mockModelSelector,
|
|
}))
|
|
|
|
describe('EmbeddingModel', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks()
|
|
mockUseModelList.mockReturnValue({ data: [{ provider: 'openai', model: 'text-embedding-3-large' }] })
|
|
})
|
|
|
|
it('should pass the selected model configuration and warning state to the selector field', () => {
|
|
const onEmbeddingModelChange = vi.fn()
|
|
|
|
render(
|
|
<EmbeddingModel
|
|
embeddingModel="text-embedding-3-large"
|
|
embeddingModelProvider="openai"
|
|
warningDot
|
|
onEmbeddingModelChange={onEmbeddingModelChange}
|
|
/>,
|
|
)
|
|
|
|
expect(mockUseModelList).toHaveBeenCalledWith(ModelTypeEnum.textEmbedding)
|
|
expect(mockModelSelector).toHaveBeenCalledWith(expect.objectContaining({
|
|
defaultModel: {
|
|
provider: 'openai',
|
|
model: 'text-embedding-3-large',
|
|
},
|
|
modelList: [{ provider: 'openai', model: 'text-embedding-3-large' }],
|
|
readonly: false,
|
|
showDeprecatedWarnIcon: true,
|
|
}), undefined)
|
|
})
|
|
|
|
it('should pass an undefined default model when the embedding model is incomplete', () => {
|
|
render(<EmbeddingModel embeddingModel="text-embedding-3-large" />)
|
|
|
|
expect(mockModelSelector).toHaveBeenCalledWith(expect.objectContaining({
|
|
defaultModel: undefined,
|
|
}), undefined)
|
|
})
|
|
})
|