1 | Documentor = require 'lib/Documentor'
|
2 | EventEmitter = require('events').EventEmitter
|
3 | should = require 'should'
|
4 | fs = require 'fs'
|
5 |
|
6 | describe 'Documentor', ->
|
7 |
|
8 | describe 'invalid constructor', ->
|
9 |
|
10 | it 'should throw an error if invalid runner provided', ->
|
11 |
|
12 | (-> documentor = new Documentor null ).should.throw 'Invalid runner'
|
13 |
|
14 | describe 'constructor', ->
|
15 |
|
16 | runner = new EventEmitter()
|
17 | documentor = new Documentor runner, 'bingo', '/tmp/bingo/bango.bongo'
|
18 |
|
19 | it 'should set default properties', ->
|
20 |
|
21 | documentor.runner.should.equal runner
|
22 | documentor.title.should.equal 'bingo'
|
23 |
|
24 | it 'should create file and directories recursively', ->
|
25 |
|
26 | stat = fs.statSync '/tmp/bingo/bango.bongo'
|
27 | stat.isFile().should.equal true
|
28 |
|
29 | describe 'documentTest', ->
|
30 |
|
31 | it 'should document a pass test', (done) ->
|
32 |
|
33 | test =
|
34 | source: 'console.log "bango.bongo"'
|
35 | title: 'Bingo Bongle'
|
36 |
|
37 | runner = new EventEmitter()
|
38 | documentor = new Documentor runner, 'bingo', '/tmp/bingo/bango.bongo'
|
39 | documentor.destination =
|
40 | write: (doc) ->
|
41 | doc.should.eql "### ✓ #{test.title}\n```javascript\n#{test.source}\n```\n\n"
|
42 | done()
|
43 |
|
44 | runner.emit 'complete', 0, 'stdout', 'stderr', test: test
|
45 |
|
46 | it 'should document a multiple pass tests', (done) ->
|
47 |
|
48 | counter = 0
|
49 | test1 =
|
50 | source: 'console.log "bango.bongo"'
|
51 | title: 'Bingo Bango'
|
52 | test2 =
|
53 | source: 'console.log "bango.bongo"'
|
54 | title: 'Bango Bongo'
|
55 |
|
56 | runner = new EventEmitter()
|
57 | documentor = new Documentor runner, 'bingo', '/tmp/bingo/bango.bongo'
|
58 | documentor.destination =
|
59 |
|
60 | write: (doc) ->
|
61 | if ++counter is 1
|
62 | doc.should.eql "### ✓ #{test1.title}\n```javascript\n#{test1.source}\n```\n\n"
|
63 | else
|
64 | doc.should.eql "### ✓ #{test2.title}\n```javascript\n#{test2.source}\n```\n\n"
|
65 | done()
|
66 |
|
67 | runner.emit 'complete', 0, 'stdout', 'stderr', test: test1
|
68 | runner.emit 'complete', 0, 'stdout', 'stderr', test: test2
|
69 |
|
70 | it 'should document a fail test', (done) ->
|
71 |
|
72 | test =
|
73 | source: 'console.error "A bingo error occurred"'
|
74 | title: 'Bingo Bongoo'
|
75 |
|
76 | runner = new EventEmitter()
|
77 | documentor = new Documentor runner, 'bingo', '/tmp/bingo/bango.bongo'
|
78 | documentor.destination =
|
79 | write: (doc) ->
|
80 | doc.should.eql "### ✘ #{test.title}\n```javascript\n#{test.source}\n```\nstdout\n\n"
|
81 | done()
|
82 |
|
83 | runner.emit 'complete', 1, 'stdout', 'stderr', test: test
|
84 |
|
85 | it 'should document a multiple fail tests', (done) ->
|
86 |
|
87 | counter = 0
|
88 | test1 =
|
89 | source: 'console.log "bango.bongo"'
|
90 | title: 'Bingo Bango'
|
91 | test2 =
|
92 | source: 'console.log "bango.bongo"'
|
93 | title: 'Bango Bongo'
|
94 |
|
95 | runner = new EventEmitter()
|
96 | documentor = new Documentor runner, 'bingo', '/tmp/bingo/bango.bongo'
|
97 | documentor.destination =
|
98 |
|
99 | write: (doc) ->
|
100 | if ++counter is 1
|
101 | doc.should.eql "### ✘ #{test1.title}\n```javascript\n#{test1.source}\n```\nstdout\n\n"
|
102 | else
|
103 | doc.should.eql "### ✘ #{test2.title}\n```javascript\n#{test2.source}\n```\nstdout\n\n"
|
104 | done()
|
105 |
|
106 | runner.emit 'complete', 1, 'stdout', 'stderr', test: test1
|
107 | runner.emit 'complete', 1, 'stdout', 'stderr', test: test2
|
108 |
|
109 | it 'should cover issue #46', (done) ->
|
110 |
|
111 | counter = 0
|
112 | test1 =
|
113 | source: "should.exist json.body"
|
114 | title: 'check 1'
|
115 | test2 =
|
116 | source: "json.body.user.mobile_number.should.equal '+447868493599'"
|
117 | title: 'check 2'
|
118 |
|
119 | runner = new EventEmitter()
|
120 | documentor = new Documentor runner, 'bingo', '/tmp/bingo/bango.bongo'
|
121 | documentor.destination =
|
122 |
|
123 | write: (doc) ->
|
124 | if ++counter is 1
|
125 | doc.should.eql "### ✓ #{test1.title}\n```javascript\n#{test1.source}\n```\n\n"
|
126 | else
|
127 | doc.should.eql "### ✘ #{test2.title}\n```javascript\n#{test2.source}\n```\nstdout\n\n"
|
128 | done()
|
129 |
|
130 | runner.emit 'complete', 0, 'stdout', 'stderr', test: test1
|
131 | runner.emit 'complete', 1, 'stdout', 'stderr', test: test2
|