import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { CompassNavHome } from '../CompassNavHome'; import styles from '@patternfly/react-styles/css/components/Compass/compass'; test('Renders with default aria-label', () => { render(); expect(screen.getByRole('button', { name: 'Home' })).toBeVisible(); }); test('Renders with custom aria-label when provided', () => { render(); expect(screen.getByRole('button', { name: 'Custom home' })).toBeVisible(); }); test('Renders with default tooltip content', async () => { const user = userEvent.setup(); render(); const button = screen.getByRole('button'); await user.hover(button); await screen.findByRole('tooltip'); expect(screen.getByRole('tooltip')).toHaveTextContent('Home'); }); test('Renders with custom tooltip content when provided', async () => { const user = userEvent.setup(); render(); const button = screen.getByRole('button'); await user.hover(button); await screen.findByRole('tooltip'); expect(screen.getByRole('tooltip')).toHaveTextContent('Custom tooltip'); }); test('Renders with custom class name when className prop is provided', () => { const { container } = render(); expect(container.firstChild).toHaveClass('custom-class'); }); test(`Renders with default class`, () => { const { container } = render(); expect(container.firstChild).toHaveClass(styles.compassNav + '-home', { exact: true }); }); test('Calls onClick handler when button is clicked', async () => { const user = userEvent.setup(); const onClick = jest.fn(); render(); await user.click(screen.getByRole('button', { name: 'Home' })); expect(onClick).toHaveBeenCalledTimes(1); }); test('Renders button with plain variant and circle shape', () => { render(); const button = screen.getByRole('button', { name: 'Home' }); expect(button).toHaveClass('pf-m-plain'); expect(button).toHaveClass('pf-m-circle'); }); test('Matches the snapshot', () => { const { asFragment } = render(); expect(asFragment()).toMatchSnapshot(); }); test('Matches the snapshot with custom props', () => { const { asFragment } = render( ); expect(asFragment()).toMatchSnapshot(); });