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 ( 19 <Text testID="test_suite_text_spec_exception" key={i}> 20 {e.get('message')} 21 </Text> 22 ), 23 [] 24 ); 25 26 const borderColor = Colors[status]; 27 28 const message = `${getStatusEmoji(status)} ${description} (${status})`; 29 return ( 30 <View 31 testID="test_suite_view_spec_container" 32 style={[ 33 styles.container, 34 { 35 borderColor, 36 }, 37 ]}> 38 <Text testID="test_suite_text_spec_description" style={styles.text}> 39 {message} 40 </Text> 41 {failedExpectations.map(renderExpectations)} 42 </View> 43 ); 44} 45 46const styles = StyleSheet.create({ 47 container: { 48 paddingLeft: 10, 49 marginVertical: 3, 50 borderLeftWidth: 3, 51 }, 52 text: { 53 fontSize: 16, 54 }, 55}); 56