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