Nuxt/packages/builder/test/builder.common.test.js

60 lines
1.8 KiB
JavaScript

import { BundleBuilder } from '@nuxt/webpack'
import Builder from '../src/builder'
import BuildContext from '../src/context/build'
import { createNuxt } from './__utils__'
jest.mock('@nuxt/webpack', () => ({
BundleBuilder: jest.fn(function () {
this.name = 'webpack_builder'
})
}))
jest.mock('../src/context/build', () => jest.fn(function () {
this.name = 'build_context'
}))
jest.mock('../src/ignore')
describe('builder: builder common', () => {
beforeEach(() => {
jest.clearAllMocks()
})
test('should get webpack builder by default', () => {
const builder = new Builder(createNuxt(), {})
const bundleBuilder = builder.getBundleBuilder()
expect(BuildContext).toBeCalledTimes(1)
expect(BuildContext).toBeCalledWith(builder)
expect(BundleBuilder).toBeCalledTimes(1)
expect(BundleBuilder).toBeCalledWith({ name: 'build_context' })
expect(bundleBuilder).toEqual({ name: 'webpack_builder' })
})
test('should get custom builder from given constructor', () => {
const builder = new Builder(createNuxt(), {})
const CustomBundleBuilder = jest.fn(function () {
this.name = 'custom_builder'
})
const bundleBuilder = builder.getBundleBuilder(CustomBundleBuilder)
expect(BuildContext).toBeCalledTimes(1)
expect(BuildContext).toBeCalledWith(builder)
expect(CustomBundleBuilder).toBeCalledTimes(1)
expect(CustomBundleBuilder).toBeCalledWith({ name: 'build_context' })
expect(bundleBuilder).toEqual({ name: 'custom_builder' })
})
test('should call bundleBuilder forGenerate', () => {
const bundleBuilder = {
forGenerate: jest.fn()
}
const builder = new Builder(createNuxt(), bundleBuilder)
builder.forGenerate()
expect(bundleBuilder.forGenerate).toBeCalledTimes(1)
})
})