import React, {Component} from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
Platform,
ScrollView,
Image,
} from 'react-native';
import Assert from './assert.js'
export default class Reporter extends Component {
props : {
context : TestContext
};
render() {
return (
{this.renderTests()}
)
}
renderTests() {
return this.props.context.tests.map((t, i) => {
let pass = true
let foundAssertions = false
if(Array.isArray(t.result)) {
t.result = t.result.map((r) => {
if(r.type.name === 'Assert') {
foundAssertions = true
let comp = r.props.comparer ? r.props.comparer(r.props.expect, r.props.actual) : (r.props.actual === r.props.expect)
pass = pass && comp
}
return React.cloneElement(r, {desc : r.key})
})
}
t.status = foundAssertions ? (pass ? 'pass' : 'fail') : 'pass'
return (
{t.desc}
{t.status ? 'pass' : 'fail'}
{t.result}
)
})
}
getBadge(status: 'running' | 'pass' | 'fail') {
if(status === 'running')
return styles.badgeWaiting
else if(status === 'pass')
return styles.badgePass
else
return styles.badgeFail
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
marginTop : 40,
},
badge : {
margin : 16,
padding : 4,
borderRadius : 4,
borderWidth : 2,
textAlign : 'center'
},
badgePass: {
borderColor : '#00a825',
color : '#00a825'
},
badgeWaiting: {
borderColor : '#e3c423',
color : '#e3c423'
},
badgeFail: {
borderColor : '#ff0d0d',
color : '#ff0d0d'
}
});