mirror of
https://github.com/langgenius/dify.git
synced 2026-04-18 04:16:28 +08:00
45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import { fireEvent, render, screen } from '@testing-library/react'
|
|
import SVGBtn from '..'
|
|
|
|
describe('SVGBtn', () => {
|
|
describe('Rendering', () => {
|
|
it('renders correctly', () => {
|
|
const setIsSVG = vi.fn()
|
|
render(<SVGBtn isSVG={false} setIsSVG={setIsSVG} />)
|
|
expect(screen.getByRole('button')).toBeInTheDocument()
|
|
})
|
|
})
|
|
|
|
describe('Interactions', () => {
|
|
it('calls setIsSVG with a toggle function when clicked', () => {
|
|
const setIsSVG = vi.fn()
|
|
render(<SVGBtn isSVG={false} setIsSVG={setIsSVG} />)
|
|
|
|
const button = screen.getByRole('button')
|
|
fireEvent.click(button)
|
|
|
|
expect(setIsSVG).toHaveBeenCalledTimes(1)
|
|
const toggleFunc = setIsSVG.mock.calls[0][0]
|
|
expect(typeof toggleFunc).toBe('function')
|
|
expect(toggleFunc(false)).toBe(true)
|
|
expect(toggleFunc(true)).toBe(false)
|
|
})
|
|
})
|
|
|
|
describe('Props', () => {
|
|
it('applies correct class when isSVG is false', () => {
|
|
const setIsSVG = vi.fn()
|
|
render(<SVGBtn isSVG={false} setIsSVG={setIsSVG} />)
|
|
const icon = screen.getByRole('button').firstChild as HTMLElement
|
|
expect(icon?.className).toMatch(/_svgIcon_\w+/)
|
|
})
|
|
|
|
it('applies correct class when isSVG is true', () => {
|
|
const setIsSVG = vi.fn()
|
|
render(<SVGBtn isSVG={true} setIsSVG={setIsSVG} />)
|
|
const icon = screen.getByRole('button').firstChild as HTMLElement
|
|
expect(icon?.className).toMatch(/_svgIconed_\w+/)
|
|
})
|
|
})
|
|
})
|