import { render, screen, fireEvent } from '@testing-library/react'; import { describe, it, expect, vi } from 'vitest'; import { Slider } from './slider'; describe('Slider Component', () => { it('renders slider', () => { render(); const slider = screen.getByRole('slider'); expect(slider).toBeInTheDocument(); }); it('handles value prop', () => { render(); const slider = screen.getByRole('slider') as HTMLInputElement; expect(slider.value).toBe('25'); }); it('handles controlled value', () => { const { rerender } = render(); let slider = screen.getByRole('slider') as HTMLInputElement; expect(slider.value).toBe('50'); rerender(); slider = screen.getByRole('slider') as HTMLInputElement; expect(slider.value).toBe('75'); }); it('calls onValueChange when value changes', () => { const handleChange = vi.fn(); render(); const slider = screen.getByRole('slider'); fireEvent.change(slider, { target: { value: '75' } }); expect(handleChange).toHaveBeenCalledWith([75]); }); it('handles min and max values', () => { render(); const slider = screen.getByRole('slider'); expect(slider).toHaveAttribute('min', '0'); expect(slider).toHaveAttribute('max', '100'); }); it('handles disabled state', () => { render(); const slider = screen.getByRole('slider'); expect(slider).toBeDisabled(); }); it('applies custom className', () => { const { container } = render( , ); const slider = container.querySelector('.custom-slider'); expect(slider).toBeInTheDocument(); }); });