test: compile webpack config for dev and prod

This commit is contained in:
endiliey 2018-08-11 15:19:53 +08:00
parent a4f0ed7c94
commit f07e7791fa
5 changed files with 72 additions and 48 deletions

3
.prettierignore Normal file
View file

@ -0,0 +1,3 @@
generated
__fixtures__
dist

29
test/webpack/base.test.js Normal file
View file

@ -0,0 +1,29 @@
import createDevConfig from '@lib/webpack/dev';
import compile from './compile';
import loadSetup from '../loadSetup';
describe('webpack dev config', () => {
const timeOut = 20000; // 20 seconds
test(
'simple',
async () => {
console.log = jest.fn();
const props = await loadSetup('simple');
const config = createDevConfig(props).toConfig();
return expect(compile(config)).resolves.toBe('Compiled successfully');
},
timeOut
);
test(
'custom',
async () => {
console.log = jest.fn();
const props = await loadSetup('custom');
const config = createDevConfig(props).toConfig();
return expect(compile(config)).resolves.toBe('Compiled successfully');
},
timeOut
);
});

12
test/webpack/compile.js Normal file
View file

@ -0,0 +1,12 @@
import webpack from 'webpack';
export default function compile(config) {
return new Promise((resolve, reject) => {
webpack(config, (err, stats) => {
if (err || stats.hasErrors()) {
reject(new Error(`Failed to compile with errors`));
}
resolve('Compiled successfully');
});
});
}

View file

@ -1,48 +0,0 @@
import webpack from 'webpack';
import createDevConfig from '@lib/webpack/dev';
import createProdConfig from '@lib/webpack/prod';
import loadSetup from '../loadSetup';
// webpack compiler helper function
function compile(config) {
return new Promise((resolve, reject) => {
webpack(config, (err, stats) => {
if (err || stats.hasErrors()) {
reject(new Error(`Failed to compile with errors`));
}
resolve('Compiled successfully');
});
});
}
describe('webpack', () => {
const timeOut = 10000; // 10 seconds
test('dev simple', async () => {
console.log = jest.fn();
const props = await loadSetup('simple');
const config = createDevConfig(props).toConfig();
return expect(compile(config)).resolves.toBe('Compiled successfully');
}, timeOut);
test('dev custom', async () => {
console.log = jest.fn();
const props = await loadSetup('custom');
const config = createDevConfig(props).toConfig();
return expect(compile(config)).resolves.toBe('Compiled successfully');
}, timeOut);
test('prod simple', async () => {
console.log = jest.fn();
const props = await loadSetup('simple');
const config = createProdConfig(props).toConfig();
return expect(compile(config)).resolves.toBe('Compiled successfully');
}, timeOut);
test('prod custom', async () => {
console.log = jest.fn();
const props = await loadSetup('custom');
const config = createProdConfig(props).toConfig();
return expect(compile(config)).resolves.toBe('Compiled successfully');
}, timeOut);
});

28
test/webpack/prod.test.js Normal file
View file

@ -0,0 +1,28 @@
import createProdConfig from '@lib/webpack/prod';
import compile from './compile';
import loadSetup from '../loadSetup';
describe('webpack production config', () => {
const timeOut = 20000; // 20 seconds
test(
'simple',
async () => {
console.log = jest.fn();
const props = await loadSetup('simple');
const config = createProdConfig(props).toConfig();
return expect(compile(config)).resolves.toBe('Compiled successfully');
},
timeOut
);
test(
'custom',
async () => {
console.log = jest.fn();
const props = await loadSetup('custom');
const config = createProdConfig(props).toConfig();
return expect(compile(config)).resolves.toBe('Compiled successfully');
},
timeOut
);
});