Skip to content

Commit f6b8e89

Browse files
committed
test(test/reporters): Rework reporter tests
Reworked stubs to use sinon. Added logic to (hopefully) rethrow errors when stdout stubbed. Now uses event constants. Various mods for consistency. Now green across the board.
1 parent 57a9738 commit f6b8e89

File tree

15 files changed

+2528
-1793
lines changed

15 files changed

+2528
-1793
lines changed

test/reporters/base.spec.js

Lines changed: 136 additions & 122 deletions
Large diffs are not rendered by default.

test/reporters/doc.spec.js

Lines changed: 205 additions & 153 deletions
Original file line numberDiff line numberDiff line change
@@ -1,189 +1,241 @@
11
'use strict';
22

3+
var events = require('../../').Runner.constants;
4+
var helpers = require('./helpers');
35
var reporters = require('../../').reporters;
6+
47
var Doc = reporters.Doc;
8+
var createMockRunner = helpers.createMockRunner;
9+
var makeRunReporter = helpers.createRunReporterFunction;
510

6-
var createMockRunner = require('./helpers.js').createMockRunner;
7-
var makeRunReporter = require('./helpers.js').createRunReporterFunction;
11+
var EVENT_SUITE_BEGIN = events.EVENT_SUITE_BEGIN;
12+
var EVENT_SUITE_END = events.EVENT_SUITE_END;
13+
var EVENT_TEST_FAIL = events.EVENT_TEST_FAIL;
14+
var EVENT_TEST_PASS = events.EVENT_TEST_PASS;
815

916
describe('Doc reporter', function() {
1017
var runner;
1118
var options = {};
1219
var runReporter = makeRunReporter(Doc);
1320

1421
afterEach(function() {
15-
runner = undefined;
22+
runner = null;
1623
});
1724

18-
describe('on suite', function() {
19-
describe('if suite root does not exist', function() {
20-
var expectedTitle = 'expectedTitle';
21-
var unescapedTitle = '<div>' + expectedTitle + '</div>';
22-
var suite = {
23-
root: false,
24-
title: expectedTitle
25+
describe('event handlers', function() {
26+
describe("on 'suite' event", function() {
27+
describe('when suite root does not exist', function() {
28+
var expectedTitle = 'expectedTitle';
29+
var unescapedTitle = '<div>' + expectedTitle + '</div>';
30+
var suite = {
31+
root: false,
32+
title: expectedTitle
33+
};
34+
35+
it('should log html with indents and expected title', function() {
36+
runner = createMockRunner(
37+
'suite',
38+
EVENT_SUITE_BEGIN,
39+
null,
40+
null,
41+
suite
42+
);
43+
var stdout = runReporter(this, runner, options);
44+
var expectedArray = [
45+
' <section class="suite">\n',
46+
' <h1>' + expectedTitle + '</h1>\n',
47+
' <dl>\n'
48+
];
49+
expect(stdout, 'to equal', expectedArray);
50+
});
51+
52+
it('should escape title where necessary', function() {
53+
var suite = {
54+
root: false,
55+
title: unescapedTitle
56+
};
57+
expectedTitle =
58+
'&#x3C;div&#x3E;' + expectedTitle + '&#x3C;/div&#x3E;';
59+
60+
runner = createMockRunner(
61+
'suite',
62+
EVENT_SUITE_BEGIN,
63+
null,
64+
null,
65+
suite
66+
);
67+
var stdout = runReporter(this, runner, options);
68+
var expectedArray = [
69+
' <section class="suite">\n',
70+
' <h1>' + expectedTitle + '</h1>\n',
71+
' <dl>\n'
72+
];
73+
expect(stdout, 'to equal', expectedArray);
74+
});
75+
});
76+
77+
describe('when suite root exists', function() {
78+
var suite = {
79+
root: true
80+
};
81+
82+
it('should not log any html', function() {
83+
runner = createMockRunner(
84+
'suite',
85+
EVENT_SUITE_BEGIN,
86+
null,
87+
null,
88+
suite
89+
);
90+
var stdout = runReporter(this, runner, options);
91+
expect(stdout, 'to be empty');
92+
});
93+
});
94+
});
95+
96+
describe("on 'suite end' event", function() {
97+
describe('when suite root does not exist', function() {
98+
var suite = {
99+
root: false
100+
};
101+
102+
it('should log expected html with indents', function() {
103+
runner = createMockRunner(
104+
'suite end',
105+
EVENT_SUITE_END,
106+
null,
107+
null,
108+
suite
109+
);
110+
var stdout = runReporter(this, runner, options);
111+
var expectedArray = [' </dl>\n', '</section>\n'];
112+
expect(stdout, 'to equal', expectedArray);
113+
});
114+
});
115+
116+
describe('when suite root exists', function() {
117+
var suite = {
118+
root: true
119+
};
120+
121+
it('should not log any html', function() {
122+
runner = createMockRunner(
123+
'suite end',
124+
EVENT_SUITE_END,
125+
null,
126+
null,
127+
suite
128+
);
129+
var stdout = runReporter(this, runner, options);
130+
expect(stdout, 'to be empty');
131+
});
132+
});
133+
});
134+
135+
describe("on 'pass' event", function() {
136+
var expectedTitle = 'some tite';
137+
var expectedBody = 'some body';
138+
var test = {
139+
title: expectedTitle,
140+
body: expectedBody,
141+
slow: function() {
142+
return '';
143+
}
25144
};
26-
it('should log html with indents and expected title', function() {
27-
runner = createMockRunner('suite', 'suite', null, null, suite);
145+
146+
it('should log html with indents, expected title, and body', function() {
147+
runner = createMockRunner('pass', EVENT_TEST_PASS, null, null, test);
28148
var stdout = runReporter(this, runner, options);
29149
var expectedArray = [
30-
' <section class="suite">\n',
31-
' <h1>' + expectedTitle + '</h1>\n',
32-
' <dl>\n'
150+
' <dt>' + expectedTitle + '</dt>\n',
151+
' <dd><pre><code>' + expectedBody + '</code></pre></dd>\n'
33152
];
34153
expect(stdout, 'to equal', expectedArray);
35154
});
36-
it('should escape title where necessary', function() {
37-
var suite = {
38-
root: false,
39-
title: unescapedTitle
40-
};
41-
expectedTitle = '&#x3C;div&#x3E;' + expectedTitle + '&#x3C;/div&#x3E;';
42-
runner = createMockRunner('suite', 'suite', null, null, suite);
155+
156+
it('should escape title and body where necessary', function() {
157+
var unescapedTitle = '<div>' + expectedTitle + '</div>';
158+
var unescapedBody = '<div>' + expectedBody + '</div>';
159+
test.title = unescapedTitle;
160+
test.body = unescapedBody;
161+
162+
var expectedEscapedTitle =
163+
'&#x3C;div&#x3E;' + expectedTitle + '&#x3C;/div&#x3E;';
164+
var expectedEscapedBody =
165+
'&#x3C;div&#x3E;' + expectedBody + '&#x3C;/div&#x3E;';
166+
runner = createMockRunner('pass', EVENT_TEST_PASS, null, null, test);
43167
var stdout = runReporter(this, runner, options);
44168
var expectedArray = [
45-
' <section class="suite">\n',
46-
' <h1>' + expectedTitle + '</h1>\n',
47-
' <dl>\n'
169+
' <dt>' + expectedEscapedTitle + '</dt>\n',
170+
' <dd><pre><code>' + expectedEscapedBody + '</code></pre></dd>\n'
48171
];
49172
expect(stdout, 'to equal', expectedArray);
50173
});
51174
});
52-
describe('if suite root does exist', function() {
53-
var suite = {
54-
root: true
55-
};
56-
it('should not log any html', function() {
57-
runner = createMockRunner('suite', 'suite', null, null, suite);
58-
var stdout = runReporter(this, runner, options);
59-
expect(stdout, 'to be empty');
60-
});
61-
});
62-
});
63175

64-
describe('on suite end', function() {
65-
describe('if suite root does not exist', function() {
66-
var suite = {
67-
root: false
176+
describe("on 'fail' event", function() {
177+
var expectedTitle = 'some tite';
178+
var expectedBody = 'some body';
179+
var expectedError = 'some error';
180+
var test = {
181+
title: expectedTitle,
182+
body: expectedBody,
183+
slow: function() {
184+
return '';
185+
}
68186
};
69-
it('should log expected html with indents', function() {
70-
runner = createMockRunner('suite end', 'suite end', null, null, suite);
187+
188+
it('should log html with indents, expected title, body, and error', function() {
189+
runner = createMockRunner(
190+
'fail two args',
191+
EVENT_TEST_FAIL,
192+
null,
193+
null,
194+
test,
195+
expectedError
196+
);
71197
var stdout = runReporter(this, runner, options);
72-
var expectedArray = [' </dl>\n', '</section>\n'];
198+
var expectedArray = [
199+
' <dt class="error">' + expectedTitle + '</dt>\n',
200+
' <dd class="error"><pre><code>' +
201+
expectedBody +
202+
'</code></pre></dd>\n',
203+
' <dd class="error">' + expectedError + '</dd>\n'
204+
];
73205
expect(stdout, 'to equal', expectedArray);
74206
});
75-
});
76-
describe('if suite root does exist', function() {
77-
var suite = {
78-
root: true
79-
};
80-
it('should not log any html', function() {
81-
runner = createMockRunner('suite end', 'suite end', null, null, suite);
82-
var stdout = runReporter(this, runner, options);
83-
expect(stdout, 'to be empty');
84-
});
85-
});
86-
});
87207

88-
describe('on pass', function() {
89-
var expectedTitle = 'some tite';
90-
var expectedBody = 'some body';
91-
var test = {
92-
title: expectedTitle,
93-
body: expectedBody,
94-
slow: function() {
95-
return '';
96-
}
97-
};
98-
it('should log html with indents and expected title and body', function() {
99-
runner = createMockRunner('pass', 'pass', null, null, test);
100-
var stdout = runReporter(this, runner, options);
101-
var expectedArray = [
102-
' <dt>' + expectedTitle + '</dt>\n',
103-
' <dd><pre><code>' + expectedBody + '</code></pre></dd>\n'
104-
];
105-
expect(stdout, 'to equal', expectedArray);
106-
});
107-
it('should escape title and body where necessary', function() {
108-
var unescapedTitle = '<div>' + expectedTitle + '</div>';
109-
var unescapedBody = '<div>' + expectedBody + '</div>';
110-
test.title = unescapedTitle;
111-
test.body = unescapedBody;
112-
113-
var expectedEscapedTitle =
114-
'&#x3C;div&#x3E;' + expectedTitle + '&#x3C;/div&#x3E;';
115-
var expectedEscapedBody =
116-
'&#x3C;div&#x3E;' + expectedBody + '&#x3C;/div&#x3E;';
117-
runner = createMockRunner('pass', 'pass', null, null, test);
118-
var stdout = runReporter(this, runner, options);
119-
var expectedArray = [
120-
' <dt>' + expectedEscapedTitle + '</dt>\n',
121-
' <dd><pre><code>' + expectedEscapedBody + '</code></pre></dd>\n'
122-
];
123-
expect(stdout, 'to equal', expectedArray);
124-
});
125-
});
208+
it('should escape title, body, and error where necessary', function() {
209+
var unescapedTitle = '<div>' + expectedTitle + '</div>';
210+
var unescapedBody = '<div>' + expectedBody + '</div>';
211+
var unescapedError = '<div>' + expectedError + '</div>';
212+
test.title = unescapedTitle;
213+
test.body = unescapedBody;
126214

127-
describe('on fail', function() {
128-
var expectedTitle = 'some tite';
129-
var expectedBody = 'some body';
130-
var expectedError = 'some error';
131-
var test = {
132-
title: expectedTitle,
133-
body: expectedBody,
134-
slow: function() {
135-
return '';
136-
}
137-
};
138-
it('should log html with indents and expected title, body and error', function() {
139-
runner = createMockRunner(
140-
'fail two args',
141-
'fail',
142-
null,
143-
null,
144-
test,
145-
expectedError
146-
);
147-
var stdout = runReporter(this, runner, options);
148-
var expectedArray = [
149-
' <dt class="error">' + expectedTitle + '</dt>\n',
150-
' <dd class="error"><pre><code>' +
151-
expectedBody +
152-
'</code></pre></dd>\n',
153-
' <dd class="error">' + expectedError + '</dd>\n'
154-
];
155-
expect(stdout, 'to equal', expectedArray);
156-
});
157-
it('should escape title, body and error where necessary', function() {
158-
var unescapedTitle = '<div>' + expectedTitle + '</div>';
159-
var unescapedBody = '<div>' + expectedBody + '</div>';
160-
var unescapedError = '<div>' + expectedError + '</div>';
161-
test.title = unescapedTitle;
162-
test.body = unescapedBody;
163-
164-
var expectedEscapedTitle =
165-
'&#x3C;div&#x3E;' + expectedTitle + '&#x3C;/div&#x3E;';
166-
var expectedEscapedBody =
167-
'&#x3C;div&#x3E;' + expectedBody + '&#x3C;/div&#x3E;';
168-
var expectedEscapedError =
169-
'&#x3C;div&#x3E;' + expectedError + '&#x3C;/div&#x3E;';
170-
runner = createMockRunner(
171-
'fail two args',
172-
'fail',
173-
null,
174-
null,
175-
test,
176-
unescapedError
177-
);
178-
var stdout = runReporter(this, runner, options);
179-
var expectedArray = [
180-
' <dt class="error">' + expectedEscapedTitle + '</dt>\n',
181-
' <dd class="error"><pre><code>' +
182-
expectedEscapedBody +
183-
'</code></pre></dd>\n',
184-
' <dd class="error">' + expectedEscapedError + '</dd>\n'
185-
];
186-
expect(stdout, 'to equal', expectedArray);
215+
var expectedEscapedTitle =
216+
'&#x3C;div&#x3E;' + expectedTitle + '&#x3C;/div&#x3E;';
217+
var expectedEscapedBody =
218+
'&#x3C;div&#x3E;' + expectedBody + '&#x3C;/div&#x3E;';
219+
var expectedEscapedError =
220+
'&#x3C;div&#x3E;' + expectedError + '&#x3C;/div&#x3E;';
221+
runner = createMockRunner(
222+
'fail two args',
223+
EVENT_TEST_FAIL,
224+
null,
225+
null,
226+
test,
227+
unescapedError
228+
);
229+
var stdout = runReporter(this, runner, options);
230+
var expectedArray = [
231+
' <dt class="error">' + expectedEscapedTitle + '</dt>\n',
232+
' <dd class="error"><pre><code>' +
233+
expectedEscapedBody +
234+
'</code></pre></dd>\n',
235+
' <dd class="error">' + expectedEscapedError + '</dd>\n'
236+
];
237+
expect(stdout, 'to equal', expectedArray);
238+
});
187239
});
188240
});
189241
});

0 commit comments

Comments
 (0)