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');
});
});