Skip to content

Commit 8da8445

Browse files
Test the main of Slider implementation
1 parent 0264c6d commit 8da8445

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

package/__test__/Slider.test.tsx

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import React from 'react';
2+
import {fireEvent, render} from '@testing-library/react-native';
3+
import Slider from '../src/Slider';
4+
5+
describe('Slider', () => {
6+
it('Calls the given onValueChange when native event is emitted', () => {
7+
const onValueChange = jest.fn();
8+
const {getByTestId} = render(
9+
<Slider testID="slider" onValueChange={onValueChange} />,
10+
);
11+
const slider = getByTestId('slider');
12+
fireEvent(slider, 'change', {nativeEvent: {value: 2}});
13+
expect(onValueChange).toHaveBeenCalledWith(2);
14+
});
15+
16+
it('Handles provided events when sliding starts is emitted', () => {
17+
const onSlidingStart = jest.fn();
18+
const {getByTestId} = render(
19+
<Slider testID="slider" onSlidingStart={onSlidingStart} />,
20+
);
21+
const slider = getByTestId('slider');
22+
23+
fireEvent(slider, 'onRNCSliderSlidingStart', {nativeEvent: {value: 2}});
24+
expect(onSlidingStart).toHaveBeenCalledWith(2);
25+
});
26+
27+
it('Handles provided events when sliding end is emitted', () => {
28+
const onSlidingComplete = jest.fn();
29+
const {getByTestId} = render(
30+
<Slider testID="slider" onSlidingComplete={onSlidingComplete} />,
31+
);
32+
const slider = getByTestId('slider');
33+
34+
fireEvent(slider, 'onRNCSliderSlidingComplete', {nativeEvent: {value: 2}});
35+
expect(onSlidingComplete).toHaveBeenCalledWith(2);
36+
});
37+
38+
it('Calls the accessibility handler when accessibility action is triggered', () => {
39+
const mockedAccessibilityHandler = jest.fn();
40+
const {getByTestId} = render(
41+
<Slider
42+
testID="slider"
43+
onAccessibilityAction={mockedAccessibilityHandler}
44+
/>,
45+
);
46+
const slider = getByTestId('slider');
47+
48+
fireEvent(slider, 'onRNCSliderAccessibilityAction', {
49+
actionName: 'mocked-action',
50+
});
51+
expect(mockedAccessibilityHandler).toHaveBeenCalledWith({
52+
actionName: 'mocked-action',
53+
});
54+
});
55+
56+
it('Emitts a warning in the dev console if lower and upper limits are switched', () => {
57+
const mockedWarn = jest.fn();
58+
console.warn = mockedWarn;
59+
render(<Slider testID="slider" lowerLimit={10} upperLimit={2} />);
60+
expect(mockedWarn).toHaveBeenCalled();
61+
});
62+
63+
it('Provides the onLayout with the measured width', () => {
64+
const {getByTestId} = render(<Slider testID="slider" />);
65+
const slider = getByTestId('slider');
66+
fireEvent(slider, 'onLayout', {nativeEvent: {layout: {width: 200}}});
67+
expect(slider).toHaveStyle({width: 200});
68+
});
69+
70+
it('Prevents the gesture control from being released externally', () => {
71+
const mockedRelease = jest.fn();
72+
jest.mock('../src/index', () => ({
73+
...jest.requireActual('../src/index'),
74+
onResponderRelease: mockedRelease,
75+
}));
76+
const {getByTestId} = render(<Slider testID="slider" />);
77+
fireEvent(getByTestId('slider'), 'onResponderTerminationRequest');
78+
expect(mockedRelease).not.toHaveBeenCalled();
79+
});
80+
});

0 commit comments

Comments
 (0)