mirror of
https://github.com/zhigang1992/react-native-firebase.git
synced 2026-06-11 08:13:18 +08:00
73 lines
1.5 KiB
JavaScript
73 lines
1.5 KiB
JavaScript
import React, { Component } from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import { connect } from 'react-redux';
|
|
// import Toast from 'react-native-simple-toast';
|
|
|
|
import RunStatus from '../../lib/RunStatus';
|
|
import { runTest } from '../tests/index';
|
|
|
|
import Icon from './Icon';
|
|
|
|
class TestControlButton extends Component {
|
|
constructor(props, context) {
|
|
super(props, context);
|
|
|
|
this.handleOnPress = this.handleOnPress.bind(this);
|
|
}
|
|
|
|
testIsPending() {
|
|
const { test: { id }, pendingTestIds } = this.props;
|
|
return !!pendingTestIds[id];
|
|
}
|
|
|
|
handleOnPress() {
|
|
const { test: { id, description } } = this.props;
|
|
|
|
runTest(id);
|
|
// Toast.show(`Running ${description}.`);
|
|
}
|
|
|
|
render() {
|
|
const { test: { status } } = this.props;
|
|
|
|
if (status !== RunStatus.STARTED && !this.testIsPending()) {
|
|
return (
|
|
<Icon
|
|
color={'#ffffff'}
|
|
size={28}
|
|
name="play circle filled"
|
|
onPress={this.handleOnPress}
|
|
/>
|
|
);
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
}
|
|
|
|
TestControlButton.propTypes = {
|
|
test: PropTypes.shape({
|
|
id: PropTypes.number.isRequired,
|
|
status: PropTypes.string,
|
|
description: PropTypes.string.isRequired,
|
|
}).isRequired,
|
|
|
|
pendingTestIds: PropTypes.objectOf(PropTypes.bool).isRequired,
|
|
};
|
|
|
|
TestControlButton.defaultProps = {
|
|
|
|
};
|
|
|
|
function mapStateToProps({ tests, pendingTestIds }, { testId }) {
|
|
const test = tests[testId];
|
|
|
|
return {
|
|
test,
|
|
pendingTestIds,
|
|
};
|
|
}
|
|
|
|
module.exports = connect(mapStateToProps)(TestControlButton);
|