Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80522 views
1
// Import
2
var events = require('events')
3
var expect = require('chai').expect
4
var joe = require('joe')
5
var domain = require('./')
6
7
// =====================================
8
// Tests
9
10
joe.describe('domain-browser', function(describe,it){
11
it('should work on throws', function(done){
12
var d = domain.create()
13
d.on('error', function(err){
14
expect(err && err.message).to.eql('a thrown error')
15
done()
16
})
17
d.run(function(){
18
throw new Error('a thrown error')
19
})
20
})
21
22
it('should be able to add emitters', function(done){
23
var d = domain.create()
24
var emitter = new events.EventEmitter()
25
26
d.add(emitter)
27
d.on('error', function (err) {
28
expect(err && err.message).to.eql('an emitted error')
29
done()
30
})
31
32
emitter.emit('error', new Error('an emitted error'))
33
})
34
35
it('should be able to remove emitters', function (done){
36
var emitter = new events.EventEmitter()
37
var d = domain.create()
38
39
d.add(emitter)
40
var domainGotError = false
41
d.on('error', function (err) {
42
domainGotError = true
43
})
44
45
emitter.on('error', function (err) {
46
expect(err && err.message).to.eql('This error should not go to the domain')
47
48
// Make sure nothing race condition-y is happening
49
setTimeout(function () {
50
expect(domainGotError).to.eql(false)
51
done()
52
}, 0)
53
})
54
55
d.remove(emitter)
56
emitter.emit('error', new Error('This error should not go to the domain'))
57
})
58
59
it('bind should work', function(done){
60
var d = domain.create()
61
d.on('error', function(err){
62
expect(err && err.message).to.eql('a thrown error')
63
done()
64
})
65
d.bind(function(err, a, b){
66
expect(err && err.message).to.equal('a passed error')
67
expect(a).to.equal(2)
68
expect(b).to.equal(3)
69
throw new Error('a thrown error')
70
})(new Error('a passed error'), 2, 3)
71
})
72
73
it('intercept should work', function(done){
74
var d = domain.create()
75
var count = 0
76
d.on('error', function(err){
77
if ( count === 0 ) {
78
expect(err && err.message).to.eql('a thrown error')
79
} else if ( count === 1 ) {
80
expect(err && err.message).to.eql('a passed error')
81
done()
82
}
83
count++
84
})
85
86
d.intercept(function(a, b){
87
expect(a).to.equal(2)
88
expect(b).to.equal(3)
89
throw new Error('a thrown error')
90
})(null, 2, 3)
91
92
d.intercept(function(a, b){
93
throw new Error('should never reach here')
94
})(new Error('a passed error'), 2, 3)
95
})
96
97
})
98