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