test(web): add comprehensive unit and integration tests for plugins and tools modules (#32220)

Co-authored-by: CodingOnStar <hanxujiang@dify.com>
This commit is contained in:
Coding On Star
2026-02-12 10:04:56 +08:00
committed by GitHub
parent 10f85074e8
commit d6b025e91e
195 changed files with 12219 additions and 7840 deletions

View File

@ -1,8 +1,8 @@
import type { PluginDeclaration } from '../../../types'
import type { PluginDeclaration } from '../../../../types'
import { fireEvent, render, screen, waitFor } from '@testing-library/react'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { PluginCategoryEnum, TaskStatus } from '../../../types'
import Install from './install'
import { PluginCategoryEnum, TaskStatus } from '../../../../types'
import Install from '../install'
// Factory function for test data
const createMockManifest = (overrides: Partial<PluginDeclaration> = {}): PluginDeclaration => ({
@ -50,7 +50,7 @@ vi.mock('@/service/plugins', () => ({
const mockCheck = vi.fn()
const mockStop = vi.fn()
vi.mock('../../base/check-task-status', () => ({
vi.mock('../../../base/check-task-status', () => ({
default: () => ({
check: mockCheck,
stop: mockStop,
@ -64,22 +64,7 @@ vi.mock('@/context/app-context', () => ({
}),
}))
vi.mock('react-i18next', async (importOriginal) => {
const actual = await importOriginal<typeof import('react-i18next')>()
const { createReactI18nextMock } = await import('@/test/i18n-mock')
return {
...actual,
...createReactI18nextMock(),
Trans: ({ i18nKey, components }: { i18nKey: string, components?: Record<string, React.ReactNode> }) => (
<span data-testid="trans">
{i18nKey}
{components?.trustSource}
</span>
),
}
})
vi.mock('../../../card', () => ({
vi.mock('../../../../card', () => ({
default: ({ payload, titleLeft }: {
payload: Record<string, unknown>
titleLeft?: React.ReactNode
@ -91,7 +76,7 @@ vi.mock('../../../card', () => ({
),
}))
vi.mock('../../base/version', () => ({
vi.mock('../../../base/version', () => ({
default: ({ hasInstalled, installedVersion, toInstallVersion }: {
hasInstalled: boolean
installedVersion?: string
@ -105,7 +90,7 @@ vi.mock('../../base/version', () => ({
),
}))
vi.mock('../../utils', () => ({
vi.mock('../../../utils', () => ({
pluginManifestToCardPluginProps: (manifest: PluginDeclaration) => ({
name: manifest.name,
author: manifest.author,
@ -148,7 +133,7 @@ describe('Install', () => {
it('should render trust source message', () => {
render(<Install {...defaultProps} />)
expect(screen.getByTestId('trans')).toBeInTheDocument()
expect(screen.getByText('installModal.fromTrustSource')).toBeInTheDocument()
})
it('should render plugin card', () => {

View File

@ -1,9 +1,9 @@
import type { Dependency, PluginDeclaration } from '../../../types'
import type { Dependency, PluginDeclaration } from '../../../../types'
import { render, screen, waitFor } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { PluginCategoryEnum } from '../../../types'
import Uploading from './uploading'
import { PluginCategoryEnum } from '../../../../types'
import Uploading from '../uploading'
// Factory function for test data
const createMockManifest = (overrides: Partial<PluginDeclaration> = {}): PluginDeclaration => ({
@ -48,7 +48,7 @@ vi.mock('@/service/plugins', () => ({
uploadFile: (...args: unknown[]) => mockUploadFile(...args),
}))
vi.mock('../../../card', () => ({
vi.mock('../../../../card', () => ({
default: ({ payload, isLoading, loadingFileName }: {
payload: { name: string }
isLoading?: boolean