1 |
|
2 | React = window.React or require 'react'
|
3 |
|
4 |
|
5 |
|
6 | { div, label, span } = React.DOM
|
7 | class SuiteHeaderClass
|
8 | render: () ->
|
9 | (div {className: 'suite-header'}, [
|
10 | label { className: 'name' }, @props.name
|
11 | label { className: 'topic' }, @props.topic
|
12 | ])
|
13 | SuiteHeader = React.createFactory SuiteHeaderClass
|
14 |
|
15 | class TestCaseListingClass
|
16 | render: () ->
|
17 | (div {className: "testcase"}, [
|
18 | (label { className: 'name' }, @props.name)
|
19 | (label { className: 'assertion' }, @props.assertion )
|
20 | (label { className: 'error' }, @props.error or '' )
|
21 | ])
|
22 | TestCaseListing = React.createFactory TestCaseListingClass
|
23 |
|
24 | { ul, li } = React.DOM
|
25 | class TestsListingClass
|
26 | render: () ->
|
27 | createCase = (testcase) ->
|
28 | c = if testcase.passed then 'pass' else 'fail'
|
29 | c = 'skip' if testcase.skip
|
30 | c = 'pending' if not testcase.passed?
|
31 | (li { className: c }, [TestCaseListing testcase])
|
32 |
|
33 | createSuite = (suite) ->
|
34 | (li {className: "testsuite"}, [
|
35 | (SuiteHeader suite)
|
36 | (ul {}, [ suite.cases.map createCase ])
|
37 | ])
|
38 |
|
39 | (ul {}, [
|
40 | @props.suites.map createSuite
|
41 | ])
|
42 | TestsListing = React.createFactory TestsListingClass
|
43 |
|
44 |
|
45 | countCases = (suites, predicate) ->
|
46 | count = 0
|
47 | for suite in suites
|
48 | for testcase in suite.cases
|
49 | count += 1 if predicate testcase, suite
|
50 | return count
|
51 |
|
52 | class TestStatusClass
|
53 | render: () ->
|
54 | total = countCases @props.suites, () -> return true
|
55 | passing = countCases @props.suites, (c) -> return c.passed? and c.passed
|
56 | failing = countCases @props.suites, (c) -> return c.passed? and not c.passed
|
57 | skipped = countCases @props.suites, (c, s) -> return c.skip? or s.skip?
|
58 |
|
59 |
|
60 |
|
61 | (ul {className: 'test-status'}, [
|
62 | (li {className: 'pass'}, passing)
|
63 | (li {className: 'fail'}, failing)
|
64 | (li {className: 'skip'}, skipped)
|
65 | (li {className: 'total'}, total)
|
66 | ])
|
67 |
|
68 | TestStatus = React.createFactory TestStatusClass
|
69 |
|
70 | module.exports =
|
71 | TestStatus: TestStatus
|
72 | TestsListing: TestsListing
|