Skip to content

Commit 1bed591

Browse files
authored
Add Incubator.Slider driver (#2629)
1 parent e754132 commit 1bed591

File tree

5 files changed

+46
-2
lines changed

5 files changed

+46
-2
lines changed

jestSetup/jest-setup.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ jest.mock('react-native-gesture-handler',
7272

7373
PanMock.type = 'pan';
7474
PanMock.onStart = getDefaultMockedHandler('onStart');
75+
PanMock.onBegin = getDefaultMockedHandler('onBegin');
7576
PanMock.onUpdate = getDefaultMockedHandler('onUpdate');
7677
PanMock.onEnd = getDefaultMockedHandler('onEnd');
7778
PanMock.onFinalize = getDefaultMockedHandler('onFinalize');

src/incubator/Slider/Slider.driver.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import {SliderProps} from './index';
2+
import {ComponentDriver} from '../../testkit';
3+
4+
export class SliderDriver extends ComponentDriver<SliderProps> {
5+
isDisabled = async () => (await this.getElementProps()).accessibilityState?.disabled === true;
6+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import React from 'react';
2+
import Slider, {SliderProps} from '../index';
3+
import {SliderDriver} from '../Slider.driver';
4+
5+
describe('Slider', () => {
6+
afterEach(() => {
7+
SliderDriver.clear();
8+
});
9+
10+
const sliderDriver = (testID: string, props: Partial<SliderProps>) => {
11+
const defaultProps: Partial<SliderProps> = {
12+
testID,
13+
onValueChange: jest.fn(),
14+
disabled: false
15+
};
16+
const component = (<Slider {...defaultProps} {...props}/>);
17+
return new SliderDriver({
18+
component,
19+
testID
20+
});
21+
};
22+
23+
it('Should be disabled', async () => {
24+
const testId = 'slider-comp';
25+
const driver = await sliderDriver(testId, {disabled: true});
26+
27+
expect(await driver.isDisabled()).toBe(true);
28+
});
29+
30+
it('Should be disabled', async () => {
31+
const testId = 'slider-comp';
32+
const driver = await sliderDriver(testId, {disabled: false});
33+
34+
expect(await driver.isDisabled()).toBe(false);
35+
});
36+
});

src/incubator/Slider/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import _ from 'lodash';
22
import React, {useImperativeHandle, useCallback, useMemo, useEffect, ReactElement} from 'react';
3-
import {StyleSheet, AccessibilityRole, StyleProp, ViewStyle, GestureResponderEvent, LayoutChangeEvent, ViewProps} from 'react-native';
3+
import {StyleSheet, AccessibilityRole, StyleProp, ViewStyle, GestureResponderEvent, LayoutChangeEvent, ViewProps, AccessibilityProps} from 'react-native';
44
import {useSharedValue, useAnimatedStyle, runOnJS, useAnimatedReaction, withTiming} from 'react-native-reanimated';
55
import {forwardRef, ForwardRefInjectedProps, Constants} from '../../commons/new';
66
import {extractAccessibilityProps} from '../../commons/modifiers';
@@ -16,7 +16,7 @@ import {
1616
import Thumb from './Thumb';
1717
import Track from './Track';
1818

19-
export type SliderProps = {
19+
export interface SliderProps extends AccessibilityProps {
2020
/**
2121
* Initial value
2222
*/

src/testkit/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ export {RadioButtonDriver} from '../components/radioButton/RadioButton.driver';
1212
export {RadioGroupDriver} from '../components/radioGroup/RadioGroup.driver';
1313
export {SortableListItemDriver} from '../components/sortableList/SortableListItem.driver';
1414
export {SliderDriver} from '../components/slider/slider.driver';
15+
export {SliderDriver as IncubatorSliderDriver} from '../incubator/Slider/Slider.driver';

0 commit comments

Comments
 (0)