mirror of https://github.com/langgenius/dify.git
68 lines
2.1 KiB
TypeScript
68 lines
2.1 KiB
TypeScript
import { fireEvent, render, screen } from '@testing-library/react'
|
|
import FileImageRender from '../file-image-render'
|
|
|
|
describe('FileImageRender', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks()
|
|
})
|
|
|
|
it('should render an image with the given URL', () => {
|
|
render(<FileImageRender imageUrl="https://example.com/image.png" />)
|
|
|
|
const img = screen.getByRole('img')
|
|
expect(img).toHaveAttribute('src', 'https://example.com/image.png')
|
|
})
|
|
|
|
it('should use default alt text when alt is not provided', () => {
|
|
render(<FileImageRender imageUrl="https://example.com/image.png" />)
|
|
|
|
expect(screen.getByAltText('Preview')).toBeInTheDocument()
|
|
})
|
|
|
|
it('should use custom alt text when provided', () => {
|
|
render(<FileImageRender imageUrl="https://example.com/image.png" alt="Custom alt" />)
|
|
|
|
expect(screen.getByAltText('Custom alt')).toBeInTheDocument()
|
|
})
|
|
|
|
it('should apply custom className to container', () => {
|
|
const { container } = render(
|
|
<FileImageRender imageUrl="https://example.com/image.png" className="custom-class" />,
|
|
)
|
|
|
|
expect(container.firstChild).toHaveClass('custom-class')
|
|
})
|
|
|
|
it('should call onLoad when image loads', () => {
|
|
const onLoad = vi.fn()
|
|
render(<FileImageRender imageUrl="https://example.com/image.png" onLoad={onLoad} />)
|
|
|
|
fireEvent.load(screen.getByRole('img'))
|
|
|
|
expect(onLoad).toHaveBeenCalled()
|
|
})
|
|
|
|
it('should call onError when image fails to load', () => {
|
|
const onError = vi.fn()
|
|
render(<FileImageRender imageUrl="https://example.com/broken.png" onError={onError} />)
|
|
|
|
fireEvent.error(screen.getByRole('img'))
|
|
|
|
expect(onError).toHaveBeenCalled()
|
|
})
|
|
|
|
it('should add cursor-pointer to image when showDownloadAction is true', () => {
|
|
render(<FileImageRender imageUrl="https://example.com/image.png" showDownloadAction />)
|
|
|
|
const img = screen.getByRole('img')
|
|
expect(img).toHaveClass('cursor-pointer')
|
|
})
|
|
|
|
it('should not add cursor-pointer when showDownloadAction is false', () => {
|
|
render(<FileImageRender imageUrl="https://example.com/image.png" />)
|
|
|
|
const img = screen.getByRole('img')
|
|
expect(img).not.toHaveClass('cursor-pointer')
|
|
})
|
|
})
|