31 行
1005 B
TypeScript
31 行
1005 B
TypeScript
import { render, screen } from '@testing-library/react'
|
|
import { afterEach, describe, expect, it } from 'vitest'
|
|
|
|
import RouteBlockerOverlay, { useOverlayStore } from '@/components/RouteBlockerOverlay'
|
|
|
|
describe ('RouteBlockerOverlay', () => {
|
|
afterEach (() => {
|
|
useOverlayStore.setState ({ active: false })
|
|
document.body.style.overflow = ''
|
|
document.body.removeAttribute ('aria-busy')
|
|
})
|
|
|
|
it ('renders nothing while inactive', () => {
|
|
useOverlayStore.setState ({ active: false })
|
|
|
|
const { container } = render (<RouteBlockerOverlay/>)
|
|
|
|
expect (container).toBeEmptyDOMElement ()
|
|
})
|
|
|
|
it ('renders a blocking progressbar and marks the body busy while active', () => {
|
|
useOverlayStore.setState ({ active: true })
|
|
|
|
render (<RouteBlockerOverlay/>)
|
|
|
|
expect (screen.getByRole ('progressbar', { name: 'Loading' })).toBeInTheDocument ()
|
|
expect (document.body).toHaveAttribute ('aria-busy', 'true')
|
|
expect (document.body.style.overflow).toBe ('hidden')
|
|
})
|
|
})
|