Skip to content

Commit cb90111

Browse files
hiroppyevilebottnawi
authored andcommitted
test(server): refactor Server.test.js (#1920)
1 parent 3916661 commit cb90111

File tree

3 files changed

+100
-248
lines changed

3 files changed

+100
-248
lines changed

test/Server.test.js

Lines changed: 96 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -12,66 +12,65 @@ opn.mockImplementation(() => {
1212
catch: jest.fn(),
1313
};
1414
});
15+
jest.mock('sockjs/lib/transport');
16+
// eslint-disable-next-line import/newline-after-import
17+
const sockjs = require('sockjs/lib/transport');
1518
const Server = require('../lib/Server');
1619
const config = require('./fixtures/simple-config/webpack.config');
1720
const testServer = require('./helpers/test-server');
1821

1922
describe('Server', () => {
23+
describe('sockjs', () => {
24+
it('add decorateConnection', () => {
25+
expect(typeof sockjs.Session.prototype.decorateConnection).toEqual(
26+
'function'
27+
);
28+
});
29+
});
30+
2031
describe('addEntries', () => {
21-
it('add hot option', () => {
22-
return new Promise((res) => {
23-
// eslint-disable-next-line
24-
const Server = require('../lib/Server');
25-
const compiler = webpack(config);
26-
const server = new Server(compiler, {
27-
hot: true,
28-
});
32+
it('add hot option', (done) => {
33+
const compiler = webpack(config);
34+
const server = new Server(compiler, {
35+
hot: true,
36+
});
2937

30-
expect(
31-
server.middleware.context.compiler.options.entry.map((p) => {
32-
return relative('.', p).split(sep);
33-
})
34-
).toMatchSnapshot();
35-
expect(
36-
server.middleware.context.compiler.options.plugins
37-
).toMatchSnapshot();
38-
39-
compiler.hooks.done.tap('webpack-dev-server', () => {
40-
server.close(() => {
41-
res();
42-
});
43-
});
38+
expect(
39+
server.middleware.context.compiler.options.entry.map((p) => {
40+
return relative('.', p).split(sep);
41+
})
42+
).toMatchSnapshot();
43+
expect(
44+
server.middleware.context.compiler.options.plugins
45+
).toMatchSnapshot();
4446

45-
compiler.run(() => {});
47+
compiler.hooks.done.tap('webpack-dev-server', () => {
48+
server.close(done);
4649
});
50+
51+
compiler.run(() => {});
4752
});
4853

49-
it('add hotOnly option', () => {
50-
return new Promise((res) => {
51-
// eslint-disable-next-line
52-
const Server = require('../lib/Server');
53-
const compiler = webpack(config);
54-
const server = new Server(compiler, {
55-
hotOnly: true,
56-
});
54+
it('add hotOnly option', (done) => {
55+
const compiler = webpack(config);
56+
const server = new Server(compiler, {
57+
hotOnly: true,
58+
});
5759

58-
expect(
59-
server.middleware.context.compiler.options.entry.map((p) => {
60-
return relative('.', p).split(sep);
61-
})
62-
).toMatchSnapshot();
63-
expect(
64-
server.middleware.context.compiler.options.plugins
65-
).toMatchSnapshot();
66-
67-
compiler.hooks.done.tap('webpack-dev-server', () => {
68-
server.close(() => {
69-
res();
70-
});
71-
});
60+
expect(
61+
server.middleware.context.compiler.options.entry.map((p) => {
62+
return relative('.', p).split(sep);
63+
})
64+
).toMatchSnapshot();
65+
expect(
66+
server.middleware.context.compiler.options.plugins
67+
).toMatchSnapshot();
7268

73-
compiler.run(() => {});
69+
compiler.hooks.done.tap('webpack-dev-server', () => {
70+
server.close(done);
7471
});
72+
73+
compiler.run(() => {});
7574
});
7675
});
7776

@@ -85,10 +84,7 @@ describe('Server', () => {
8584
jest.unmock('express');
8685
});
8786

88-
it("should success even if mine.types doesn't exist", () => {
89-
// eslint-disable-next-line
90-
const Server = require('../lib/Server');
91-
87+
it("should success even if mine.types doesn't exist", (done) => {
9288
jest.mock('express', () => {
9389
const data = jest.requireActual('express');
9490
const { static: st } = data;
@@ -105,22 +101,18 @@ describe('Server', () => {
105101
});
106102
});
107103

108-
return new Promise((res) => {
109-
const compiler = webpack(config);
110-
const server = new Server(compiler);
111-
112-
compiler.hooks.done.tap('webpack-dev-server', (s) => {
113-
const output = server.getStats(s);
114-
expect(output.errors.length).toEqual(0);
104+
const compiler = webpack(config);
105+
const server = new Server(compiler);
115106

116-
server.close(() => {
117-
res();
118-
});
119-
});
107+
compiler.hooks.done.tap('webpack-dev-server', (s) => {
108+
const output = server.getStats(s);
109+
expect(output.errors.length).toEqual(0);
120110

121-
compiler.run(() => {});
122-
server.listen(8080, 'localhost');
111+
server.close(done);
123112
});
113+
114+
compiler.run(() => {});
115+
server.listen(8080, 'localhost');
124116
});
125117
});
126118

@@ -137,86 +129,60 @@ describe('Server', () => {
137129
},
138130
];
139131

140-
return new Promise((resolve, reject) => {
141-
(function iterate(stats, i) {
142-
if (i === allStats.length) {
143-
return resolve();
144-
}
145-
146-
// Iterate to cover each case.
147-
Promise.resolve()
148-
.then(
149-
() =>
150-
new Promise((res) => {
151-
const compiler = webpack(config);
152-
const server = new Server(compiler, { stats });
153-
154-
compiler.hooks.done.tap('webpack-dev-server', (s) => {
155-
expect(Object.keys(server.getStats(s))).toMatchSnapshot();
156-
157-
server.close(() => {
158-
res();
159-
});
160-
});
161-
162-
compiler.run(() => {});
163-
server.listen(8080, 'localhost');
164-
})
165-
)
166-
.then(() => {
167-
i += 1;
168-
iterate(allStats[i], i);
169-
})
170-
.catch((e) => {
171-
reject(e);
132+
return allStats.reduce((p, stats) => {
133+
return p.then(() => {
134+
return new Promise((resolve) => {
135+
const compiler = webpack(config);
136+
const server = new Server(compiler, { stats });
137+
138+
compiler.hooks.done.tap('webpack-dev-server', (s) => {
139+
expect(Object.keys(server.getStats(s))).toMatchSnapshot();
140+
141+
server.close(resolve);
172142
});
173-
})(allStats[0], 0);
174-
});
175-
});
176143

177-
it('should respect warningsFilter', () => {
178-
return new Promise((res) => {
179-
const compiler = webpack(config);
180-
const server = new Server(compiler, {
181-
stats: { warningsFilter: 'test' },
144+
compiler.run(() => {});
145+
server.listen(8080, 'localhost');
146+
});
182147
});
148+
}, Promise.resolve());
149+
});
183150

184-
compiler.hooks.done.tap('webpack-dev-server', (s) => {
185-
s.compilation.warnings = ['test', 'another warning'];
151+
it('should respect warningsFilter', (done) => {
152+
const compiler = webpack(config);
153+
const server = new Server(compiler, {
154+
stats: { warningsFilter: 'test' },
155+
});
186156

187-
const output = server.getStats(s);
157+
compiler.hooks.done.tap('webpack-dev-server', (s) => {
158+
s.compilation.warnings = ['test', 'another warning'];
188159

189-
expect(output.warnings.length).toBe(1);
190-
expect(output.warnings[0]).toBe('another warning');
160+
const output = server.getStats(s);
191161

192-
server.close(() => {
193-
res();
194-
});
195-
});
162+
expect(output.warnings.length).toBe(1);
163+
expect(output.warnings[0]).toBe('another warning');
196164

197-
compiler.run(() => {});
198-
server.listen(8080, 'localhost');
165+
server.close(done);
199166
});
200-
});
201167

202-
it('should open', () => {
203-
return new Promise((res) => {
204-
const compiler = webpack(config);
205-
const server = new Server(compiler, {
206-
open: true,
207-
});
168+
compiler.run(() => {});
169+
server.listen(8080, 'localhost');
170+
});
208171

209-
compiler.hooks.done.tap('webpack-dev-server', () => {
210-
expect(opn.mock.calls[0]).toEqual(['http://localhost:8080/', {}]);
211-
expect(opn.mock.invocationCallOrder[0]).toEqual(1);
212-
server.close(() => {
213-
res();
214-
});
215-
});
172+
it('should open', (done) => {
173+
const compiler = webpack(config);
174+
const server = new Server(compiler, {
175+
open: true,
176+
});
216177

217-
compiler.run(() => {});
218-
server.listen(8080, 'localhost');
178+
compiler.hooks.done.tap('webpack-dev-server', () => {
179+
expect(opn.mock.calls[0]).toEqual(['http://localhost:8080/', {}]);
180+
expect(opn.mock.invocationCallOrder[0]).toEqual(1);
181+
server.close(done);
219182
});
183+
184+
compiler.run(() => {});
185+
server.listen(8080, 'localhost');
220186
});
221187
});
222188

0 commit comments

Comments
 (0)