import { describe, expect, test } from 'vitest'
import { render, screen } from '@testing-library/react'
import { Tooltip, setTooltipEnterDelay } from './tooltip'
describe('Tooltip', () => {
test('renders children correctly', () => {
render(
,
)
expect(screen.getByText('Hover me')).toBeTruthy()
})
test('uses default enterNextDelay of 1000ms', () => {
render(
,
)
// Since we're wrapping MUI Tooltip and not altering its behavior much,
// and MUI applies most props internally, we can't easily test the
// enterNextDelay prop directly. Instead, we verify the component renders.
expect(screen.getByText('Hover me')).toBeTruthy()
})
test('accepts custom enterNextDelay', () => {
render(
,
)
// Similar to above test, we mainly ensure the component renders correctly
expect(screen.getByText('Hover me')).toBeTruthy()
})
test('passes additional props to MUI Tooltip', () => {
render(
,
)
// Verify that our wrapper properly passes through props
const tooltipWrapper = screen
.getByText('Hover me')
.closest('[data-testid="custom-tooltip"]')
expect(tooltipWrapper).toBeTruthy()
})
test('setTooltipEnterDelay function sets the delay', () => {
const delay = 700
setTooltipEnterDelay(delay)
// We can't test the internal implementation, but we can ensure that
// the function can be called without errors.
expect(() => setTooltipEnterDelay(delay)).not.toThrow()
})
test('setTooltipEnterDelay updates the default enter delay', () => {
const newDelay = 2000
setTooltipEnterDelay(newDelay)
render(
,
)
// After setting a new delay, the component should use that as the default
// We can verify by checking the props passed to the rendered component
const tooltipElement = screen.getByText('Hover me').parentElement
expect(tooltipElement).toBeTruthy()
// Reset the delay for other tests
setTooltipEnterDelay(1000)
})
})