diff options
Diffstat (limited to 'node_modules/koa-webpack/test')
| -rw-r--r-- | node_modules/koa-webpack/test/fixtures/input.js | 3 | ||||
| -rw-r--r-- | node_modules/koa-webpack/test/results.js | 159 | ||||
| -rw-r--r-- | node_modules/koa-webpack/test/test.js | 20 |
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'); |
