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