Skip to content

Commit 4aa7d54

Browse files
committed
test(server): use test-server.js
1 parent 3916661 commit 4aa7d54

File tree

3 files changed

+99
-250
lines changed

3 files changed

+99
-250
lines changed

test/Server.test.js

Lines changed: 95 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
'use strict';
22

33
const { relative, sep } = require('path');
4-
const webpack = require('webpack');
54
const request = require('supertest');
65
// Mock opn before loading Server
76
jest.mock('opn');
@@ -12,66 +11,62 @@ opn.mockImplementation(() => {
1211
catch: jest.fn(),
1312
};
1413
});
15-
const Server = require('../lib/Server');
14+
jest.mock('sockjs/lib/transport');
15+
// eslint-disable-next-line import/newline-after-import
16+
const sockjs = require('sockjs/lib/transport');
1617
const config = require('./fixtures/simple-config/webpack.config');
1718
const testServer = require('./helpers/test-server');
1819

1920
describe('Server', () => {
21+
describe('sockjs', () => {
22+
it('add decorateConnection', () => {
23+
expect(typeof sockjs.Session.prototype.decorateConnection).toEqual(
24+
'function'
25+
);
26+
});
27+
});
28+
2029
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-
});
30+
it('add hot option', (done) => {
31+
const { compiler, server } = testServer.startFullSetup(config, {
32+
hot: true,
33+
});
2934

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-
});
35+
expect(
36+
server.middleware.context.compiler.options.entry.map((p) => {
37+
return relative('.', p).split(sep);
38+
})
39+
).toMatchSnapshot();
40+
expect(
41+
server.middleware.context.compiler.options.plugins
42+
).toMatchSnapshot();
4443

45-
compiler.run(() => {});
44+
compiler.hooks.done.tap('webpack-dev-server', () => {
45+
testServer.close(done);
4646
});
47+
48+
compiler.run(() => {});
4749
});
4850

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-
});
51+
it('add hotOnly option', (done) => {
52+
const { compiler, server } = testServer.startFullSetup(config, {
53+
hotOnly: true,
54+
});
5755

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-
});
56+
expect(
57+
server.middleware.context.compiler.options.entry.map((p) => {
58+
return relative('.', p).split(sep);
59+
})
60+
).toMatchSnapshot();
61+
expect(
62+
server.middleware.context.compiler.options.plugins
63+
).toMatchSnapshot();
7264

73-
compiler.run(() => {});
65+
compiler.hooks.done.tap('webpack-dev-server', () => {
66+
testServer.close(done);
7467
});
68+
69+
compiler.run(() => {});
7570
});
7671
});
7772

@@ -85,10 +80,7 @@ describe('Server', () => {
8580
jest.unmock('express');
8681
});
8782

88-
it("should success even if mine.types doesn't exist", () => {
89-
// eslint-disable-next-line
90-
const Server = require('../lib/Server');
91-
83+
it("should success even if mine.types doesn't exist", (done) => {
9284
jest.mock('express', () => {
9385
const data = jest.requireActual('express');
9486
const { static: st } = data;
@@ -105,22 +97,17 @@ describe('Server', () => {
10597
});
10698
});
10799

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);
100+
const { compiler, server } = testServer.startFullSetup(config, {});
115101

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

121-
compiler.run(() => {});
122-
server.listen(8080, 'localhost');
106+
testServer.close(done);
123107
});
108+
109+
compiler.run(() => {});
110+
server.listen(8080, 'localhost');
124111
});
125112
});
126113

@@ -137,86 +124,62 @@ describe('Server', () => {
137124
},
138125
];
139126

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);
127+
return allStats.reduce((p, stats) => {
128+
return p.then(() => {
129+
return new Promise((resolve) => {
130+
const { compiler, server } = testServer.startFullSetup(config, {
131+
stats,
172132
});
173-
})(allStats[0], 0);
174-
});
175-
});
176133

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' },
134+
compiler.hooks.done.tap('webpack-dev-server', (s) => {
135+
expect(Object.keys(server.getStats(s))).toMatchSnapshot();
136+
137+
testServer.close(resolve);
138+
});
139+
140+
compiler.run(() => {});
141+
server.listen(8080, 'localhost');
142+
});
182143
});
144+
}, Promise.resolve());
145+
});
183146

184-
compiler.hooks.done.tap('webpack-dev-server', (s) => {
185-
s.compilation.warnings = ['test', 'another warning'];
147+
it('should respect warningsFilter', (done) => {
148+
const { compiler, server } = testServer.startFullSetup(config, {
149+
stats: { warningsFilter: 'test' },
150+
});
186151

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

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

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

197-
compiler.run(() => {});
198-
server.listen(8080, 'localhost');
160+
testServer.close(done);
199161
});
200-
});
201162

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

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-
});
167+
it('should open', (done) => {
168+
const { compiler, server } = testServer.startFullSetup(config, {
169+
open: true,
170+
});
216171

217-
compiler.run(() => {});
218-
server.listen(8080, 'localhost');
172+
compiler.hooks.done.tap('webpack-dev-server', () => {
173+
expect(opn.mock.calls[0]).toEqual([
174+
'http://localhost:8080/webpack-dev-server/',
175+
{},
176+
]);
177+
expect(opn.mock.invocationCallOrder[0]).toEqual(1);
178+
testServer.close(done);
219179
});
180+
181+
compiler.run(() => {});
182+
server.listen(8080, 'localhost');
220183
});
221184
});
222185

0 commit comments

Comments
 (0)