import { render, screen, fireEvent } from '@testing-library/react'; import { describe, it, expect, vi } from 'vitest'; import { Switch } from './switch'; import React from 'react'; describe('Switch', () => { it('renders correctly', () => { render(); const switchElement = screen.getByRole('switch'); expect(switchElement).toBeInTheDocument(); }); it('toggles state on click', () => { const onCheckedChange = vi.fn(); render(); const switchElement = screen.getByRole('switch'); fireEvent.click(switchElement); expect(onCheckedChange).toHaveBeenCalledWith(true); }); it('is disabled when disabled prop is true', () => { render(); const switchEl = screen.getByRole('switch'); expect(switchEl).toBeDisabled(); }); it('renders correctly with different sizes', () => { const { rerender } = render(); expect(screen.getByRole('switch')).toHaveClass('h-3.5', 'w-7'); rerender(); expect(screen.getByRole('switch')).toHaveClass('h-[1.15rem]', 'w-8'); rerender(); expect(screen.getByRole('switch')).toHaveClass('h-[1.375rem]', 'w-10'); }); it('reflects checked state', () => { render( {}} />); const switchElement = screen.getByRole('switch'); expect(switchElement).toHaveAttribute('data-state', 'checked'); }); });