var BrotliPlugin = require('../index.js'); var webpack = require('webpack'); var iltorb = require('iltorb'); var rmRf = require('rimraf'); var OUTPUT_DIR = __dirname + '/tmp/'; function createCompiler(options) { var defaultOptions = { bail: true, cache: false, entry: __dirname + '/fixtures/entry.js', output: { path: OUTPUT_DIR, filename: '[name].js', chunkFilename: '[id].[name].js' }, plugins: [ new BrotliPlugin() ] }; if (!Array.isArray(options)) { options = Object.assign({}, defaultOptions, options); } return webpack(options); } function compile(compiler) { return new Promise(function (resolve, reject) { compiler.run(function (err, stats) { if (err) return reject(err); resolve(stats); }); }); } describe('when applied with default settings', function () { beforeEach(function (done) { rmRf(OUTPUT_DIR, done) }); afterEach(function (done) { rmRf(OUTPUT_DIR, done) }); it('compresses and decopresses', function () { var compiler = createCompiler(); new BrotliPlugin().apply(compiler); return compile(compiler).then(function (stats) { expect(stats.compilation.assets).toHaveProperty(['main.js']); expect(stats.compilation.assets).toHaveProperty(['main.js.br']); var source = stats.compilation.assets['main.js'].source(); expect(source).toContain('console.log'); var decopressed = iltorb.decompressSync(stats.compilation.assets['main.js.br'].source()).toString(); expect(decopressed).toMatch(source); }); }); });