-
Notifications
You must be signed in to change notification settings - Fork 296
Expand file tree
/
Copy pathSlider.test.tsx
More file actions
80 lines (70 loc) · 2.82 KB
/
Slider.test.tsx
File metadata and controls
80 lines (70 loc) · 2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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(
<Slider testID="slider" onValueChange={onValueChange} />,
);
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(
<Slider testID="slider" onSlidingStart={onSlidingStart} />,
);
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(
<Slider testID="slider" onSlidingComplete={onSlidingComplete} />,
);
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(
<Slider
testID="slider"
onAccessibilityAction={mockedAccessibilityHandler}
/>,
);
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(<Slider testID="slider" lowerLimit={10} upperLimit={2} />);
expect(mockedWarn).toHaveBeenCalled();
});
it('Provides the onLayout with the measured width', () => {
const {getByTestId} = render(<Slider testID="slider" />);
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(<Slider testID="slider" />);
fireEvent(getByTestId('slider'), 'onResponderTerminationRequest');
expect(mockedRelease).not.toHaveBeenCalled();
});
});