1import React from 'react'; 2import { StyleSheet, Text, View } from 'react-native'; 3 4import Colors from '../constants/Colors'; 5import StatusEmojis from '../constants/StatusEmojis'; 6import Statuses from '../constants/Statuses'; 7 8function getStatusEmoji(status) { 9 if (status in StatusEmojis) { 10 return StatusEmojis[status]; 11 } 12 return getStatusEmoji(Statuses.Disabled); 13} 14 15export default function SpecResult({ status = Statuses.Running, description, failedExpectations }) { 16 const renderExpectations = React.useMemo( 17 () => (e, i) => ( 18 <Text testID="test_suite_text_spec_exception" key={i}> 19 {e.get('message')} 20 </Text> 21 ), 22 [] 23 ); 24 25 const borderColor = Colors[status]; 26 27 const message = `${getStatusEmoji(status)} ${description} (${status})`; 28 return ( 29 <View 30 testID="test_suite_view_spec_container" 31 style={[ 32 styles.container, 33 { 34 borderColor, 35 }, 36 ]}> 37 <Text testID="test_suite_text_spec_description" style={styles.text}> 38 {message} 39 </Text> 40 {failedExpectations.map(renderExpectations)} 41 </View> 42 ); 43} 44 45const styles = StyleSheet.create({ 46 container: { 47 paddingLeft: 10, 48 marginVertical: 3, 49 borderLeftWidth: 3, 50 }, 51 text: { 52 fontSize: 16, 53 }, 54}); 55