Skip to content

Commit 97c6f81

Browse files
refactor: tests
1 parent 03cc661 commit 97c6f81

File tree

3 files changed

+543
-298
lines changed

3 files changed

+543
-298
lines changed

lib/Server.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -977,7 +977,7 @@ class Server {
977977
this.middleware.close(callback);
978978
});
979979
});
980-
} else {
980+
} else if (callback) {
981981
callback();
982982
}
983983
}

test/server/Server.test.js

Lines changed: 63 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ const baseDevConfig = {
1919
static: false,
2020
};
2121

22-
const createServer = (compiler, options) => new Server(options, compiler);
23-
2422
describe('Server', () => {
2523
describe('sockjs', () => {
2624
it('add decorateConnection', () => {
@@ -40,6 +38,7 @@ describe('Server', () => {
4038
(compilation) => {
4139
const mainDeps = compilation.entries.get('main').dependencies;
4240
const globalDeps = compilation.globalEntry.dependencies;
41+
4342
entries = globalDeps
4443
.concat(mainDeps)
4544
.map((dep) => relative('.', dep.request).split(sep));
@@ -54,73 +53,68 @@ describe('Server', () => {
5453

5554
it('add hot option', (done) => {
5655
const compiler = webpack(config);
57-
const server = createServer(
58-
compiler,
59-
Object.assign({}, baseDevConfig, {
60-
hot: true,
61-
})
62-
);
63-
64-
getEntries(server);
56+
const server = new Server({ ...baseDevConfig, hot: true }, compiler);
6557

6658
compiler.hooks.done.tap('webpack-dev-server', () => {
6759
expect(entries).toMatchSnapshot();
68-
server.close(done);
60+
61+
server.close(() => {
62+
done();
63+
});
6964
});
7065

71-
compiler.run(() => {});
66+
server.listen(port, 'localhost', (error) => {
67+
if (error) {
68+
throw error;
69+
}
70+
71+
getEntries(server);
72+
});
7273
});
7374

74-
// TODO: remove this after plugin support is published
75-
it('should create and run server with old parameters order', (done) => {
75+
it('add hot-only option', (done) => {
7676
const compiler = webpack(config);
77-
const server = new Server(compiler, baseDevConfig);
78-
79-
getEntries(server);
77+
const server = new Server({ ...baseDevConfig, hot: 'only' }, compiler);
8078

8179
compiler.hooks.done.tap('webpack-dev-server', () => {
82-
expect(entries).toMatchSnapshot('oldparam');
80+
expect(entries).toMatchSnapshot();
81+
8382
server.close(done);
8483
});
8584

86-
compiler.run(() => {});
85+
server.listen(port, 'localhost', (error) => {
86+
if (error) {
87+
throw error;
88+
}
89+
90+
getEntries(server);
91+
});
8792
});
8893

8994
// TODO: remove this after plugin support is published
90-
it('should create and run server with MultiCompiler with old parameters order', (done) => {
91-
const compiler = webpack([config, config]);
95+
it('should create and run server with old parameters order', (done) => {
96+
const compiler = webpack(config);
9297
const server = new Server(compiler, baseDevConfig);
9398

9499
compiler.hooks.done.tap('webpack-dev-server', () => {
100+
expect(entries).toMatchSnapshot('oldparam');
101+
95102
server.close(done);
96103
});
97104

98-
compiler.run(() => {});
99-
});
100-
101-
it('add hot-only option', (done) => {
102-
const compiler = webpack(config);
103-
const server = createServer(
104-
compiler,
105-
Object.assign({}, baseDevConfig, {
106-
hot: 'only',
107-
})
108-
);
109-
110-
getEntries(server);
105+
server.listen(port, 'localhost', (error) => {
106+
if (error) {
107+
throw error;
108+
}
111109

112-
compiler.hooks.done.tap('webpack-dev-server', () => {
113-
expect(entries).toMatchSnapshot();
114-
server.close(done);
110+
getEntries(server);
115111
});
116-
117-
compiler.run(() => {});
118112
});
119113
});
120114

121115
it('test server error reporting', () => {
122116
const compiler = webpack(config);
123-
const server = createServer(compiler, baseDevConfig);
117+
const server = new Server(baseDevConfig, compiler);
124118

125119
const emitError = () => server.server.emit('error', new Error('Error !!!'));
126120

@@ -149,7 +143,7 @@ describe('Server', () => {
149143
});
150144

151145
const compiler = webpack(config);
152-
const server = createServer(compiler, baseDevConfig);
146+
const server = new Server(baseDevConfig, compiler);
153147

154148
compiler.hooks.done.tap('webpack-dev-server', (s) => {
155149
const output = server.getStats(s);
@@ -158,7 +152,6 @@ describe('Server', () => {
158152
server.close(done);
159153
});
160154

161-
compiler.run(() => {});
162155
server.listen(port, 'localhost');
163156
});
164157
});
@@ -310,7 +303,9 @@ describe('Server', () => {
310303
const headers = {
311304
host: 'localhost',
312305
};
313-
server = createServer(compiler, options);
306+
307+
server = new Server(options, compiler);
308+
314309
if (!server.checkHostHeader(headers)) {
315310
throw new Error("Validation didn't fail");
316311
}
@@ -327,7 +322,7 @@ describe('Server', () => {
327322
host: '127.0.0.1',
328323
};
329324

330-
server = createServer(compiler, options);
325+
server = new Server(options, compiler);
331326

332327
if (!server.checkHostHeader(headers)) {
333328
throw new Error("Validation didn't fail");
@@ -346,7 +341,7 @@ describe('Server', () => {
346341
'[ad42::1de2:54c2:c2fa:1234]:8080',
347342
];
348343

349-
server = createServer(compiler, options);
344+
server = new Server(options, compiler);
350345

351346
tests.forEach((test) => {
352347
const headers = { host: test };
@@ -368,7 +363,7 @@ describe('Server', () => {
368363
host: 'test.hostname:80',
369364
};
370365

371-
server = createServer(compiler, options);
366+
server = new Server(options, compiler);
372367

373368
if (server.checkHostHeader(headers)) {
374369
throw new Error("Validation didn't fail");
@@ -385,7 +380,7 @@ describe('Server', () => {
385380
origin: 'https://test.host',
386381
};
387382

388-
server = createServer(compiler, options);
383+
server = new Server(options, compiler);
389384

390385
if (!server.checkOriginHeader(headers)) {
391386
throw new Error("Validation didn't fail");
@@ -404,7 +399,7 @@ describe('Server', () => {
404399
origin: 'https://test.host',
405400
};
406401

407-
server = createServer(compiler, options);
402+
server = new Server(options, compiler);
408403

409404
if (!server.checkOriginHeader(headers)) {
410405
throw new Error("Validation didn't fail");
@@ -416,34 +411,43 @@ describe('Server', () => {
416411
describe('Testing callback functions on calling invalidate without callback', () => {
417412
it('should use default `noop` callback', (done) => {
418413
const compiler = webpack(config);
419-
const server = createServer(compiler, baseDevConfig);
420-
421-
server.invalidate();
422-
expect(server.middleware.context.callbacks.length).toEqual(1);
414+
const server = new Server(baseDevConfig, compiler);
423415

424416
compiler.hooks.done.tap('webpack-dev-server', () => {
425417
server.close(done);
426418
});
427419

428-
compiler.run(() => {});
420+
server.listen(port, '127.0.0.1', (error) => {
421+
if (error) {
422+
throw error;
423+
}
424+
425+
server.invalidate();
426+
427+
expect(server.middleware.context.callbacks.length).toEqual(1);
428+
});
429429
});
430430
});
431431

432432
describe('Testing callback functions on calling invalidate with callback', () => {
433433
it('should use `callback` function', (done) => {
434434
const compiler = webpack(config);
435435
const callback = jest.fn();
436-
const server = createServer(compiler, baseDevConfig);
437-
438-
server.invalidate(callback);
439-
440-
expect(server.middleware.context.callbacks[0]).toBe(callback);
436+
const server = new Server(baseDevConfig, compiler);
441437

442438
compiler.hooks.done.tap('webpack-dev-server', () => {
443439
server.close(done);
444440
});
445441

446-
compiler.run(() => {});
442+
server.listen(port, '127.0.0.1', (error) => {
443+
if (error) {
444+
throw error;
445+
}
446+
447+
server.invalidate(callback);
448+
449+
expect(server.middleware.context.callbacks[0]).toBe(callback);
450+
});
447451
});
448452
});
449453
});

0 commit comments

Comments
 (0)