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) }) })