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

@ -0,0 +1,46 @@
import { render, screen } from '@testing-library/react'
import * as React from 'react'
import { beforeEach, describe, expect, it, vi } from 'vitest'
vi.mock('@/app/components/base/app-icon', () => ({
default: ({ size }: { size: string }) => <div data-testid="app-icon" data-size={size} />,
}))
vi.mock('@/utils/classnames', () => ({
cn: (...args: unknown[]) => args.filter(Boolean).join(' '),
}))
describe('AppTrigger', () => {
let AppTrigger: (typeof import('../app-trigger'))['default']
beforeEach(async () => {
vi.clearAllMocks()
const mod = await import('../app-trigger')
AppTrigger = mod.default
})
it('should render placeholder when no app is selected', () => {
render(<AppTrigger open={false} />)
expect(screen.queryByTestId('app-icon')).not.toBeInTheDocument()
})
it('should render app details when appDetail is provided', () => {
const appDetail = {
name: 'My App',
icon_type: 'emoji',
icon: '🤖',
icon_background: '#fff',
}
render(<AppTrigger open={false} appDetail={appDetail as never} />)
expect(screen.getByTestId('app-icon')).toBeInTheDocument()
expect(screen.getByText('My App')).toBeInTheDocument()
})
it('should render when open', () => {
const { container } = render(<AppTrigger open={true} />)
expect(container.firstChild).toBeInTheDocument()
})
})

View File

@ -6,12 +6,12 @@ import * as React from 'react'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { InputVarType } from '@/app/components/workflow/types'
import { AppModeEnum } from '@/types/app'
import AppInputsForm from './app-inputs-form'
import AppInputsPanel from './app-inputs-panel'
import AppPicker from './app-picker'
import AppTrigger from './app-trigger'
import AppInputsForm from '../app-inputs-form'
import AppInputsPanel from '../app-inputs-panel'
import AppPicker from '../app-picker'
import AppTrigger from '../app-trigger'
import AppSelector from './index'
import AppSelector from '../index'
// ==================== Mock Setup ====================