mirror of
https://github.com/langgenius/dify.git
synced 2026-08-28 19:38:30 +08:00
103 lines
3.0 KiB
TypeScript
103 lines
3.0 KiB
TypeScript
import { render, screen } from '@testing-library/react'
|
|
import { describe, expect, it, vi } from 'vitest'
|
|
import CreateFromPipeline from '../index'
|
|
|
|
// Mock child components to isolate testing
|
|
vi.mock('../header', () => ({
|
|
default: () => <div data-testid="mock-header">Header</div>,
|
|
}))
|
|
|
|
vi.mock('../list', () => ({
|
|
default: () => <div data-testid="mock-list">List</div>,
|
|
}))
|
|
|
|
vi.mock('../footer', () => ({
|
|
default: () => <div data-testid="mock-footer">Footer</div>,
|
|
}))
|
|
|
|
vi.mock('../../../base/effect', () => ({
|
|
default: ({ className }: { className?: string }) => (
|
|
<div data-testid="mock-effect" className={className}>
|
|
Effect
|
|
</div>
|
|
),
|
|
}))
|
|
|
|
// CreateFromPipeline Component Tests
|
|
|
|
describe('CreateFromPipeline', () => {
|
|
describe('Rendering', () => {
|
|
it('should render without crashing', () => {
|
|
render(<CreateFromPipeline />)
|
|
expect(screen.getByTestId('mock-header')).toBeInTheDocument()
|
|
})
|
|
|
|
it('should render Header component', () => {
|
|
render(<CreateFromPipeline />)
|
|
expect(screen.getByTestId('mock-header')).toBeInTheDocument()
|
|
})
|
|
|
|
it('should render List component', () => {
|
|
render(<CreateFromPipeline />)
|
|
expect(screen.getByTestId('mock-list')).toBeInTheDocument()
|
|
})
|
|
|
|
it('should render Footer component', () => {
|
|
render(<CreateFromPipeline />)
|
|
expect(screen.getByTestId('mock-footer')).toBeInTheDocument()
|
|
})
|
|
|
|
it('should render Effect component', () => {
|
|
render(<CreateFromPipeline />)
|
|
expect(screen.getByTestId('mock-effect')).toBeInTheDocument()
|
|
})
|
|
})
|
|
|
|
describe('Layout', () => {
|
|
it('should have proper container classes', () => {
|
|
const { container } = render(<CreateFromPipeline />)
|
|
const mainDiv = container.firstChild as HTMLElement
|
|
expect(mainDiv).toHaveClass(
|
|
'relative',
|
|
'flex',
|
|
'flex-col',
|
|
'overflow-hidden',
|
|
'rounded-t-2xl',
|
|
)
|
|
})
|
|
|
|
it('should have correct height calculation', () => {
|
|
const { container } = render(<CreateFromPipeline />)
|
|
const mainDiv = container.firstChild as HTMLElement
|
|
expect(mainDiv).toHaveClass('h-[calc(100vh-56px)]')
|
|
})
|
|
|
|
it('should have border and background styling', () => {
|
|
const { container } = render(<CreateFromPipeline />)
|
|
const mainDiv = container.firstChild as HTMLElement
|
|
expect(mainDiv).toHaveClass(
|
|
'border-t',
|
|
'border-effects-highlight',
|
|
'bg-background-default-subtle',
|
|
)
|
|
})
|
|
|
|
it('should position Effect component correctly', () => {
|
|
render(<CreateFromPipeline />)
|
|
const effect = screen.getByTestId('mock-effect')
|
|
expect(effect).toHaveClass('left-8', 'top-[-34px]', 'opacity-20')
|
|
})
|
|
})
|
|
|
|
// Component Order Tests
|
|
describe('Component Order', () => {
|
|
it('should render components in correct order', () => {
|
|
const { container } = render(<CreateFromPipeline />)
|
|
const children = Array.from(container.firstChild?.childNodes || [])
|
|
|
|
// Effect, Header, List, Footer
|
|
expect(children.length).toBe(4)
|
|
})
|
|
})
|
|
})
|