dify/web/app/components/base/grid-mask/__tests__/index.spec.tsx
Stephen Zhou 1873b22e96
refactor: update to tailwind v4 (#34415)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: yyh <yuanyouhuilyz@gmail.com>
2026-04-02 07:06:11 +00:00

63 lines
2.7 KiB
TypeScript

import { render, screen } from '@testing-library/react'
import GridMask from '../index'
import Style from '../style.module.css'
function renderGridMask(props: Partial<React.ComponentProps<typeof GridMask>> = {}, children: React.ReactNode = <span>Child</span>) {
const { container } = render(<GridMask {...props}>{children}</GridMask>)
const wrapper = container.firstElementChild as HTMLElement
const canvasLayer = wrapper.children[0] as HTMLElement
const gradientLayer = wrapper.children[1] as HTMLElement
const contentLayer = wrapper.children[2] as HTMLElement
return { container, wrapper, canvasLayer, gradientLayer, contentLayer }
}
describe('GridMask', () => {
describe('Rendering', () => {
it('should render children in the content layer', () => {
renderGridMask({}, <button>Run</button>)
expect(screen.getByRole('button', { name: 'Run' })).toBeInTheDocument()
})
it('should render correctly without optional className props', () => {
const { wrapper, canvasLayer, gradientLayer, contentLayer } = renderGridMask({}, <span>Plain child</span>)
expect(wrapper).toHaveClass('bg-saas-background')
expect(canvasLayer).toHaveClass('absolute')
expect(gradientLayer).toHaveClass('absolute')
expect(contentLayer).toHaveTextContent('Plain child')
})
it('should render wrapper, canvas, gradient and content layers in order', () => {
const { wrapper, canvasLayer, gradientLayer, contentLayer } = renderGridMask({}, <span>Content</span>)
expect(wrapper).toBeInTheDocument()
expect(wrapper.children).toHaveLength(3)
expect(canvasLayer).toHaveClass('z-0')
expect(gradientLayer).toHaveClass('z-1')
expect(contentLayer).toHaveClass('z-2')
expect(contentLayer).toHaveTextContent('Content')
})
})
describe('Props', () => {
it('should apply wrapperClassName to wrapper element', () => {
const { wrapper } = renderGridMask({ wrapperClassName: 'custom-wrapper' }, <span>Child</span>)
expect(wrapper).toHaveClass('custom-wrapper')
expect(wrapper).toHaveClass('relative')
})
it('should apply canvasClassName and grid background class to canvas layer', () => {
const { canvasLayer } = renderGridMask({ canvasClassName: 'custom-canvas' }, <span>Child</span>)
expect(canvasLayer).toHaveClass('custom-canvas')
expect(canvasLayer).toHaveClass(Style.gridBg)
})
it('should apply gradientClassName to gradient layer', () => {
const { gradientLayer } = renderGridMask({ gradientClassName: 'custom-gradient' }, <span>Child</span>)
expect(gradientLayer).toHaveClass('custom-gradient')
expect(gradientLayer).toHaveClass('bg-grid-mask-background')
})
})
})