aboutsummaryrefslogtreecommitdiff
path: root/node_modules/koa-webpack/test
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/koa-webpack/test
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/koa-webpack/test')
-rw-r--r--node_modules/koa-webpack/test/fixtures/input.js3
-rw-r--r--node_modules/koa-webpack/test/results.js159
-rw-r--r--node_modules/koa-webpack/test/test.js20
3 files changed, 182 insertions, 0 deletions
diff --git a/node_modules/koa-webpack/test/fixtures/input.js b/node_modules/koa-webpack/test/fixtures/input.js
new file mode 100644
index 00000000..625c2d15
--- /dev/null
+++ b/node_modules/koa-webpack/test/fixtures/input.js
@@ -0,0 +1,3 @@
+'use strict';
+
+console.log('Hello world'); // eslint-disable-line
diff --git a/node_modules/koa-webpack/test/results.js b/node_modules/koa-webpack/test/results.js
new file mode 100644
index 00000000..563d4256
--- /dev/null
+++ b/node_modules/koa-webpack/test/results.js
@@ -0,0 +1,159 @@
+'use strict';
+
+const assert = require('assert');
+const path = require('path');
+const killable = require('killable');
+const merge = require('merge-options');
+const Koa = require('koa');
+const compose = require('koa-compose');
+const request = require('supertest');
+const Webpack = require('webpack');
+const koaWebpack = require('../index');
+
+const DEFAULT_OPTIONS = {
+ mode: 'development',
+ config: {
+ entry: [path.resolve(__dirname, 'fixtures', 'input.js')],
+ output: {
+ path: path.resolve(__dirname, 'fixtures'),
+ filename: 'output.js'
+ }
+ },
+ dev: {
+ publicPath: '/',
+ logLevel: 'silent'
+ },
+ hot: {
+ logLevel: 'silent'
+ }
+};
+
+function buildOptions(opts) {
+ const options = merge({}, DEFAULT_OPTIONS, opts);
+ return merge(options, {
+ config: null,
+ compiler: Webpack(options.config)
+ });
+}
+
+function defaultApp(middleware) {
+ return middleware;
+}
+
+function setup(options, setupMiddleware = defaultApp) {
+ const app = new Koa();
+ const middleware = koaWebpack(buildOptions(options));
+ app.use(setupMiddleware(middleware));
+ const server = app.listen();
+ const req = request(server);
+ killable(server);
+ return { middleware, req, server };
+}
+
+describe('koa-webpack', () => {
+ it('should provide access to middleware and client', (done) => {
+ const { middleware, server, req } = setup({ dev: { lazy: false } });
+
+ req.get('/output.js')
+ .then(() => {
+ assert(middleware.dev);
+ assert(middleware.client);
+
+ server.kill();
+ middleware.close(done);
+ });
+ }).timeout(5e3);
+
+ it('should disable hot-client', (done) => {
+ const { middleware, server, req } = setup({ dev: { lazy: false }, hot: false });
+
+ req.get('/output.js')
+ .then(() => {
+ assert(middleware.dev);
+ assert.equal(middleware.client, null);
+
+ server.kill();
+ middleware.close(done);
+ });
+ }).timeout(5e3);
+
+ it('sends the result in watch mode', (done) => {
+ const { middleware, req, server } = setup({ dev: { lazy: false } });
+ req.get('/output.js')
+ .expect(200)
+ .expect((response) => {
+ assert.ok(/Hello world/.test(response.text), "Expected result to contain 'Hello world'");
+ })
+ .then(() => {
+ server.kill();
+ middleware.close(done);
+ });
+ }).timeout(5e3);
+
+ it('sends the result to a MultiCompiler in watch mode', (done) => {
+ const { middleware, req, server } = setup({
+ dev: { lazy: false },
+ config: [
+ {
+ entry: [path.resolve(__dirname, 'fixtures', 'input.js')],
+ output: {
+ path: path.resolve(__dirname, 'fixtures'),
+ filename: 'output.js'
+ }
+ },
+ {
+ entry: [path.resolve(__dirname, 'fixtures', 'input.js')],
+ output: {
+ path: path.resolve(__dirname, 'fixtures'),
+ filename: 'output2.js'
+ }
+ }
+ ]
+ });
+ req.get('/output.js')
+ .expect(200)
+ .expect((response) => {
+ assert.ok(/Hello world/.test(response.text), "Expected result to contain 'Hello world'");
+ })
+ .then(() => req.get('/output2.js')
+ .expect(200)
+ .expect((response) => {
+ assert.ok(/Hello world/.test(response.text), "Expected result to contain 'Hello world'");
+ })
+ .then(() => {
+ server.kill();
+ middleware.close(done);
+ }));
+ }).timeout(5e3);
+
+ it('builds and sends the result in lazy mode', (done) => {
+ const { middleware, req, server } = setup({ dev: { lazy: true } });
+ req.get('/output.js')
+ .expect(200)
+ .expect((response) => {
+ assert.ok(/Hello world/.test(response.text), "Expected result to contain 'Hello world'");
+ })
+ .then(() => {
+ server.kill();
+ middleware.close(done);
+ });
+ }).timeout(5e3);
+
+ it('continues on if the file is not part of webpack', (done) => {
+ const mware = webpack =>
+ compose([
+ webpack,
+ async (ctx) => {
+ ctx.body = 'foo'; // eslint-disable-line
+ }
+ ]);
+
+ const { middleware, req, server } = setup({}, mware);
+ req.get('/some-other-file.js')
+ .expect(200, 'foo')
+ .then(() => {
+ server.kill();
+ middleware.close(done);
+ });
+ }).timeout(5e3);
+});
diff --git a/node_modules/koa-webpack/test/test.js b/node_modules/koa-webpack/test/test.js
new file mode 100644
index 00000000..c33adf72
--- /dev/null
+++ b/node_modules/koa-webpack/test/test.js
@@ -0,0 +1,20 @@
+'use strict';
+
+/* eslint global-require: off */
+require('loud-rejection/register');
+
+if (parseInt(process.version.substring(1), 10) < 8) {
+ require('@babel/polyfill');
+ require('@babel/register')({
+ ignore: [/node_modules\/(?!koa)/],
+ presets: [
+ ['@babel/preset-env', {
+ targets: {
+ node: '6.11'
+ }
+ }]
+ ]
+ });
+}
+
+require('./results');