react-native/RNTester/js/PickerExample.js
Rick Hanlon 34ee8250b5 Add filtering to e2e tests (#22828)
Summary:
This PR adds filtering for e2e test examples using the new examples filter introduced in https://github.com/facebook/react-native/pull/22777

To do that we:
- Add a `testID` to `RNTesterExampleFilter` to select an example
- Refactor a few examples to export multiple examples for filtering
- Update all tests to filter by example title
Pull Request resolved: https://github.com/facebook/react-native/pull/22828

Reviewed By: TheSavior

Differential Revision: D13562664

Pulled By: rickhanlonii

fbshipit-source-id: efb0ca8050c1ca5c10d96bd77d35dd1143c3a3b3
2018-12-31 04:33:49 -08:00

193 lines
4.4 KiB
JavaScript

/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
* @flow strict-local
*/
'use strict';
const React = require('react');
const ReactNative = require('react-native');
const StyleSheet = require('StyleSheet');
const {Picker, Text} = ReactNative;
const Item = Picker.Item;
type State = {
value: string | number,
};
class BasicPickerExample extends React.Component<{}, State> {
state = {
value: 'key1',
};
render() {
return (
<Picker
testID="basic-picker"
style={styles.picker}
selectedValue={this.state.value}
onValueChange={v => this.setState({value: v})}>
<Item label="hello" value="key0" />
<Item label="world" value="key1" />
</Picker>
);
}
}
class DisabledPickerExample extends React.Component<{}, State> {
state = {
value: 'key1',
};
render() {
return (
<Picker
style={styles.picker}
enabled={false}
selectedValue={this.state.value}>
<Item label="hello" value="key0" />
<Item label="world" value="key1" />
</Picker>
);
}
}
class DropdownPickerExample extends React.Component<{}, State> {
state = {
value: 'key1',
};
render() {
return (
<Picker
style={styles.picker}
selectedValue={this.state.value}
onValueChange={v => this.setState({value: v})}
mode="dropdown">
<Item label="hello" value="key0" />
<Item label="world" value="key1" />
</Picker>
);
}
}
class PromptPickerExample extends React.Component<{}, State> {
state = {
value: 'key1',
};
render() {
return (
<Picker
style={styles.picker}
selectedValue={this.state.value}
onValueChange={v => this.setState({value: v})}
prompt="Pick one, just one">
<Item label="hello" value="key0" />
<Item label="world" value="key1" />
</Picker>
);
}
}
type ColorState = {
color: string | number,
};
class ColorPickerExample extends React.Component<{}, ColorState> {
state = {
color: 'red',
};
render() {
return (
<>
<Picker
style={[styles.picker, {color: 'white', backgroundColor: '#333'}]}
selectedValue={this.state.color}
onValueChange={v => this.setState({color: v})}
mode="dropdown">
<Item label="red" color="red" value="red" />
<Item label="green" color="green" value="green" />
<Item label="blue" color="blue" value="blue" />
</Picker>
<Picker
style={styles.picker}
selectedValue={this.state.color}
onValueChange={v => this.setState({color: v})}
mode="dialog">
<Item label="red" color="red" value="red" />
<Item label="green" color="green" value="green" />
<Item label="blue" color="blue" value="blue" />
</Picker>
</>
);
}
}
const styles = StyleSheet.create({
picker: {
width: 100,
},
});
exports.title = '<Picker>';
exports.description =
'Provides multiple options to choose from, using either a dropdown menu or a dialog.';
exports.examples = [
{
title: 'Basic Picker',
render: function(): React.Element<typeof BasicPickerExample> {
return <BasicPickerExample />;
},
},
{
title: 'Disabled Picker',
render: function(): React.Element<typeof DisabledPickerExample> {
return <DisabledPickerExample />;
},
},
{
title: 'Dropdown Picker',
render: function(): React.Element<typeof DropdownPickerExample> {
return <DropdownPickerExample />;
},
},
{
title: 'Picker with prompt message',
render: function(): React.Element<typeof PromptPickerExample> {
return <PromptPickerExample />;
},
},
{
title: 'Picker with no listener',
render: function(): React.Element<typeof PromptPickerExample> {
return (
<>
<Picker style={styles.picker}>
<Item label="hello" value="key0" />
<Item label="world" value="key1" />
</Picker>
<Text>
Cannot change the value of this picker because it doesn't update
selectedValue.
</Text>
</>
);
},
},
{
title: 'Colorful pickers',
render: function(): React.Element<typeof ColorPickerExample> {
return <ColorPickerExample />;
},
},
];