import { render, screen, fireEvent } from '@testing-library/react'; import { describe, it, expect } from 'vitest'; import { Checkbox } from './checkbox'; import React from 'react'; describe('Checkbox', () => { it('renders correctly', () => { render(); const checkbox = screen.getByRole('checkbox'); expect(checkbox).toBeInTheDocument(); }); it('toggles state on click', () => { render(); const checkbox = screen.getByRole('checkbox'); expect(checkbox).toHaveAttribute('data-state', 'unchecked'); fireEvent.click(checkbox); expect(checkbox).toHaveAttribute('data-state', 'checked'); fireEvent.click(checkbox); expect(checkbox).toHaveAttribute('data-state', 'unchecked'); }); it('is disabled when disabled prop is true', () => { render(); const checkbox = screen.getByRole('checkbox'); expect(checkbox).toBeDisabled(); }); it('has correct data-slot attributes', () => { const { container } = render(); expect(container.querySelector('[data-slot="checkbox"]')).toBeInTheDocument(); // Indicator only renders when checked expect(container.querySelector('[data-slot="checkbox-indicator"]')).toBeInTheDocument(); }); it('renders correctly with different sizes', () => { const { rerender } = render(); expect(screen.getByRole('checkbox')).toHaveClass('size-3.5'); rerender(); expect(screen.getByRole('checkbox')).toHaveClass('size-4'); rerender(); expect(screen.getByRole('checkbox')).toHaveClass('size-5'); }); });