/
test-TestCase.js
104 lines (83 loc) · 1.8 KB
/
test-TestCase.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
var assert = require('assert');
var TestCase = require('../../lib/TestCase');
(function testRunEmitsPassAndFail() {
var test = new TestCase({tests: {
a: function() {
assert.equal(1, 1);
},
b: function() {
assert.equal(2, 1);
},
}});
var fail = [];
var pass = [];
test
.on('pass', function(name) {
assert.equal(name, 'a');
pass.push(name);
})
.on('fail', function(name, err) {
assert.ok(err instanceof Error);
assert.equal(name, 'b');
fail.push(name);
});
test.run();
assert.equal(pass.length, 1);
assert.equal(fail.length, 1);
})();
(function testBeforeAndAfter() {
var events = [];
var test = new TestCase({tests: {
before: function() {
events.push('before');
},
after: function() {
events.push('after');
},
a: function() {
events.push('a');
},
}});
test.run();
assert.deepEqual(events, ['before', 'a', 'after']);
})();
(function testBeforeAndAfterContext() {
var aCalled = false;
var test = new TestCase({tests: {
before: function() {
this.foo = 'bar';
},
after: function() {
assert.deepEqual(this, {foo: false});
},
a: function() {
assert.deepEqual(this, {foo: 'bar'});
this.foo = false;
aCalled = true;
},
}});
test.run();
assert.ok(aCalled);
})();
(function testErrorInOneTestDoesNotAffectOthers() {
var test = new TestCase({tests: {
a: function() {
assert.equal(2, 1);
},
b: function() {
assert.equal(1, 1);
},
}});
var fail = [];
var pass = [];
test
.on('pass', function(name) {
pass.push(name);
})
.on('fail', function(name, err) {
fail.push(name);
});
test.run();
assert.deepEqual(pass, ['b']);
assert.deepEqual(fail, ['a']);
})();