import { render, screen, fireEvent } from '@testing-library/react'; import { describe, it, expect, vi } from 'vitest'; import { Switch } from './switch'; describe('Switch Component', () => { it('renders switch', () => { render(); const switchElement = screen.getByRole('checkbox'); expect(switchElement).toBeInTheDocument(); expect(switchElement).not.toBeChecked(); }); it('renders switch element', () => { render(); const switchElement = screen.getByRole('checkbox'); expect(switchElement).toBeInTheDocument(); }); it('handles checked state', () => { render(); const switchElement = screen.getByRole('checkbox'); expect(switchElement).toBeChecked(); }); it('handles onChange callback', () => { const handleChange = vi.fn(); render(); const switchElement = screen.getByRole('checkbox'); fireEvent.click(switchElement); expect(handleChange).toHaveBeenCalledTimes(1); }); it('handles onCheckedChange callback', () => { const handleCheckedChange = vi.fn(); render(); const switchElement = screen.getByRole('checkbox'); fireEvent.click(switchElement); expect(handleCheckedChange).toHaveBeenCalledWith(true); }); it('handles disabled state', () => { render(); const switchElement = screen.getByRole('checkbox'); expect(switchElement).toBeDisabled(); }); it('toggles checked state on click', () => { render(); const switchElement = screen.getByRole('checkbox'); expect(switchElement).not.toBeChecked(); fireEvent.click(switchElement); expect(switchElement).toBeChecked(); fireEvent.click(switchElement); expect(switchElement).not.toBeChecked(); }); it('applies custom className', () => { render(); const switchElement = screen.getByRole('checkbox'); expect(switchElement.closest('label')).toHaveClass('custom-switch'); }); });