UNPKG

timpla

Version:

An optimal website development experience for [server-side] web frameworks.

99 lines (90 loc) 3.66 kB
// tslint:disable: object-literal-sort-keys no-empty only-arrow-functions import * as internal from '../../gulpfile.ts/internal' import { TIMPLA_DEFAULTS } from '../../gulpfile.ts/lib/TIMPLA_DEFAULTS' import { webpackMultiConfig } from '../../gulpfile.ts/lib/webpackMultiConfig' import { clone } from '../helpers' jest.mock('../../gulpfile.ts/internal') jest.mock('path') const spyLazyImport: any = jest.spyOn(internal, 'lazyImport') const spySureLazyImport: any = jest.spyOn(internal, 'sureLazyImport') const spyGetFirstValidObject = jest.spyOn(internal, 'getFirstValidObject') const mockConstructs: any = { 'terser-webpack-plugin': function TerserWebpackPlugin() {}, 'hard-source-webpack-plugin': function HardSourceWebpackPlugin() {}, 'fork-ts-checker-webpack-plugin': function ForkTsCheckerWebpackPlugin() {}, 'speed-measure-webpack-plugin': function SpeedMeasureWebpackPlugin() { return { wrap: jest.fn().mockImplementation(a => ({ ...a, isSMPWrapped: true, })), } }, 'webpack-bundle-analyzer': { BundleAnalyzerPlugin: function BundleAnalyzerPlugin() {}, }, './tsUtils': { tsWbformatter: jest.fn(), }, } const getMockConstruct = (name: string) => { return mockConstructs[name] } const originalTP = { ...internal.TIMPLA_PROCESS } spyLazyImport.mockImplementation(getMockConstruct) spySureLazyImport.mockImplementation(getMockConstruct) spyGetFirstValidObject.mockReturnValue({}) beforeEach(() => { // Restore TP as it may have been changed Object.entries(originalTP).forEach(([a, b]) => { ;(internal.TIMPLA_PROCESS as any)[a] = b }) }) describe('webpackMultiConfig', () => { it('should return a valid default config when no options are supplied', () => { const hocConfig = webpackMultiConfig(TIMPLA_DEFAULTS) const result = hocConfig('development') expect(result).toMatchSnapshot() }) it('should disable eslint when development.eslint is set to false', () => { const conf = clone(TIMPLA_DEFAULTS) conf.development.eslint = false const hocConfig = webpackMultiConfig(conf) const result = hocConfig('development') expect(result).toMatchSnapshot() }) it('should disable tslint when development.tslint is set to false', () => { const conf = clone(TIMPLA_DEFAULTS) conf.development.tslint = false const hocConfig = webpackMultiConfig(conf) const result = hocConfig('development') expect(result).toMatchSnapshot() }) it('should disable hmr when development.webpackHotMiddlewareClient is set to false', () => { const conf = clone(TIMPLA_DEFAULTS) conf.development.webpackHotMiddlewareClient = false const hocConfig = webpackMultiConfig(conf) const result = hocConfig('development') expect(result).toMatchSnapshot() }) it('should disable webpackBundleAnalyzer when javascripts.webpackBundleAnalyzerOptions is set to false', () => { const conf = clone(TIMPLA_DEFAULTS) conf.javascripts.webpackBundleAnalyzerOptions = false const hocConfig = webpackMultiConfig(conf) const result = hocConfig('development') expect(result).toMatchSnapshot() }) it('should return a production config', () => { const conf = clone(TIMPLA_DEFAULTS) const hocConfig = webpackMultiConfig(conf) const result = hocConfig('production') expect(result).toMatchSnapshot() }) it('should use the speedMeasurePlugin when TP.MEASURE is set to true', () => { const conf = clone(TIMPLA_DEFAULTS) const hocConfig = webpackMultiConfig(conf) internal.TIMPLA_PROCESS.MEASURE = true const result = hocConfig('production') expect(result.isSMPWrapped).toBeTruthy() }) })