UNPKG

@interaktiv/dia-scripts

Version:

CLI toolbox with common scripts for most sort of projects at DIA

75 lines (67 loc) 2.24 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _serializers = require("../__tests__/helpers/serializers"); jest.mock('../../config/webpack.config', () => ({ builtInConfig: true })); jest.mock('../../utils', () => (0, _extends2.default)({}, jest.requireActual('../../utils'), { resolveBin: (modName, { executable = modName } = {}) => executable, cleanDir: jest.fn(), assureDependency: jest.fn() })); expect.addSnapshotSerializer(_serializers.unquoteSerializer); let originalArgv, originalExit, crossSpawnSyncMock; describe('build webpack', () => { beforeEach(() => { ({ sync: crossSpawnSyncMock } = require('cross-spawn')); originalArgv = process.argv; originalExit = process.exit; process.exit = jest.fn(); }); afterEach(() => { process.argv = originalArgv; process.exit = originalExit; jest.resetModules(); }); it.each` title | params ${'calls webpack with default args'} | ${{ args: ['--bundle'] }} ${'calls webpack-dev-server with --dev-server flag'} | ${{ args: ['--bundle', '--dev-server'] }} ${'calls webpack-dev-server with --dev-proxy argument'} | ${{ args: ['--bundle', '--dev-proxy=127.0.0.1:8080'] }} ${'uses custom config with webpack.config.js file'} | ${{ args: ['--bundle'], hasFile: 'webpack.config.js' }} ${'forwards args'} | ${{ args: ['--bundle', '--output-filename=[name].js'] }} `('$title', ({ params }) => { const { args = [], hasFile = '' } = params; const utils = require('../../utils'); Object.assign(utils, { hasFile: file => file === hasFile }); process.argv = ['node', './index', ...args]; require('./index'); expect(crossSpawnSyncMock).toHaveBeenCalledTimes(1); const [firstCall] = crossSpawnSyncMock.mock.calls; const [script, jestArgs] = firstCall; expect([script, ...jestArgs].join(' ').replace(process.cwd(), '/blah-root')).toMatchSnapshot(); }); });