Skip to content

Commit ef69b73

Browse files
authored
Rework reporter tests (#3892)
Reworked stubs to use "sinon" package. Added logic to (hopefully) rethrow errors when stdout stubbed. Tests now use event constants. Noise reduction. Various mods for consistency. Now green across the board.
1 parent 109f05e commit ef69b73

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)