import React from 'react' import { render, screen, fireEvent } from '@testing-library/react' import '@testing-library/jest-dom' import { Slider } from './index' // Mock the styles jest.mock('./styles.scss', () => ({})) // Mock Radix UI Slider jest.mock('@radix-ui/react-slider', () => ({ Root: ({ children, onValueChange, ...props }: any) => (
onValueChange && onValueChange([parseInt(e.target.value)]) } > {children}
), Track: ({ children }: any) => (
{children}
), Range: () =>
, Thumb: () =>
, })) describe('@joi/core/Slider', () => { it('renders correctly with default props', () => { render() expect(screen.getByTestId('slider-root')).toBeInTheDocument() expect(screen.getByTestId('slider-track')).toBeInTheDocument() expect(screen.getByTestId('slider-range')).toBeInTheDocument() expect(screen.getByTestId('slider-thumb')).toBeInTheDocument() }) it('passes props correctly to SliderPrimitive.Root', () => { const props = { name: 'test-slider', min: 0, max: 100, value: [50], step: 1, disabled: true, } render() const sliderRoot = screen.getByTestId('slider-root') expect(sliderRoot).toHaveAttribute('name', 'test-slider') expect(sliderRoot).toHaveAttribute('min', '0') expect(sliderRoot).toHaveAttribute('max', '100') expect(sliderRoot).toHaveAttribute('value', '50') expect(sliderRoot).toHaveAttribute('step', '1') expect(sliderRoot).toHaveAttribute('disabled', '') }) it('calls onValueChange when value changes', () => { const onValueChange = jest.fn() render() const input = screen.getByTestId('slider-root').querySelector('input') fireEvent.change(input!, { target: { value: '75' } }) expect(onValueChange).toHaveBeenCalledWith([75]) }) })