import React from 'react'; import {fireEvent, render} from '@testing-library/react-native'; import Slider from '../src/Slider'; describe('Slider', () => { it('Calls the given onValueChange when native event is emitted', () => { const onValueChange = jest.fn(); const {getByTestId} = render( , ); const slider = getByTestId('slider'); fireEvent(slider, 'change', {nativeEvent: {value: 2}}); expect(onValueChange).toHaveBeenCalledWith(2); }); it('Handles provided events when sliding starts is emitted', () => { const onSlidingStart = jest.fn(); const {getByTestId} = render( , ); const slider = getByTestId('slider'); fireEvent(slider, 'onRNCSliderSlidingStart', {nativeEvent: {value: 2}}); expect(onSlidingStart).toHaveBeenCalledWith(2); }); it('Handles provided events when sliding end is emitted', () => { const onSlidingComplete = jest.fn(); const {getByTestId} = render( , ); const slider = getByTestId('slider'); fireEvent(slider, 'onRNCSliderSlidingComplete', {nativeEvent: {value: 2}}); expect(onSlidingComplete).toHaveBeenCalledWith(2); }); it('Calls the accessibility handler when accessibility action is triggered', () => { const mockedAccessibilityHandler = jest.fn(); const {getByTestId} = render( , ); const slider = getByTestId('slider'); fireEvent(slider, 'onRNCSliderAccessibilityAction', { actionName: 'mocked-action', }); expect(mockedAccessibilityHandler).toHaveBeenCalledWith({ actionName: 'mocked-action', }); }); it('Emitts a warning in the dev console if lower and upper limits are switched', () => { const mockedWarn = jest.fn(); console.warn = mockedWarn; render(); expect(mockedWarn).toHaveBeenCalled(); }); it('Provides the onLayout with the measured width', () => { const {getByTestId} = render(); const slider = getByTestId('slider'); fireEvent(slider, 'onLayout', {nativeEvent: {layout: {width: 200}}}); expect(slider).toHaveStyle({width: 200}); }); it('Prevents the gesture control from being released externally', () => { const mockedRelease = jest.fn(); jest.mock('../src/index', () => ({ ...jest.requireActual('../src/index'), onResponderRelease: mockedRelease, })); const {getByTestId} = render(); fireEvent(getByTestId('slider'), 'onResponderTerminationRequest'); expect(mockedRelease).not.toHaveBeenCalled(); }); });