import React from 'react'; import { render, screen, fireEvent } from '@testing-library/react'; import '@testing-library/jest-dom'; import { DefaultPageDot } from '../DefaultPageDot'; describe('DefaultPageDot', () => { const mockOnClick = jest.fn(); beforeEach(() => { mockOnClick.mockClear(); }); it('renders active dot', () => { render(); const button = screen.getByRole('button'); expect(button).toBeInTheDocument(); }); it('renders inactive dot', () => { render(); const button = screen.getByRole('button'); expect(button).toBeInTheDocument(); }); it('calls onClick when clicked', () => { render(); const button = screen.getByRole('button'); fireEvent.click(button); expect(mockOnClick).toHaveBeenCalledTimes(1); }); it('renders multiple dots with different indices', () => { const { rerender } = render( ); expect(screen.getByRole('button')).toBeInTheDocument(); rerender(); expect(screen.getByRole('button')).toBeInTheDocument(); }); it('handles active state changes', () => { const { rerender } = render( ); const button = screen.getByRole('button'); expect(button).toBeInTheDocument(); rerender(); expect(button).toBeInTheDocument(); }); it('applies different styling for active vs inactive state', () => { const { container, rerender } = render( ); const inactiveButton = container.querySelector('button'); expect(inactiveButton).toBeInTheDocument(); rerender(); const activeButton = container.querySelector('button'); expect(activeButton).toBeInTheDocument(); }); it('renders as a button element', () => { render(); const button = screen.getByRole('button'); expect(button.tagName).toBe('BUTTON'); }); it('passes correct index to onClick handler', () => { const { rerender } = render( ); const button = screen.getByRole('button'); fireEvent.click(button); expect(mockOnClick).toHaveBeenCalledTimes(1); rerender(); fireEvent.click(button); expect(mockOnClick).toHaveBeenCalledTimes(2); }); it('is focusable for keyboard navigation', () => { render(); const button = screen.getByRole('button'); button.focus(); expect(document.activeElement).toBe(button); }); });