UNPKG

@talend/dynamic-cdn-webpack-plugin

Version:

Dynamically get your dependencies from a cdn rather than bundling them in your app

91 lines (80 loc) 3.12 kB
/* eslint-disable global-require */ /* eslint-disable no-underscore-dangle */ const { findPackages, findPackage } = require('./find'); jest.mock('fs'); jest.mock('read-pkg-up', () => ({ sync: () => { return { packageJson: { name: 'react', version: '16.14.0' }, }; }, })); describe('findPackages', () => { const MOCK_FILE_INFO = { '/node_modules/classnames/index.js': 'console.log("classnames");', '/node_modules/react/index.js': 'console.log("react");', '/node_modules/react/package.json': '{"name": "react", "version": "16.14.0"}', '/node_modules/@types/classnames/index.js': 'console.log("@types/classnames");', '/node_modules/@talend/react-components/index.js': 'console.log("@talend/react-components");', '/node_modules/@talend/react-components/node_modules/react/index.js': 'console.log("react");', '/node_modules/@talend/react-containers/index.js': 'console.log("@talend/react-containers");', }; beforeEach(() => { // Set up some mocked out file info before each test require('fs').__setMockFiles(MOCK_FILE_INFO); }); test('should find root and nested package', () => { // when const result = findPackages(undefined, 'react'); // then expect(result.length).toBe(2); expect(result[0]).toBe('/node_modules/react'); expect(result[1]).toBe('/node_modules/@talend/react-components/node_modules/react'); }); test('should find non scoped package', () => { // when const result = findPackages('', 'classnames'); // then expect(result.length).toBe(1); expect(result[0]).toBe('/node_modules/classnames'); }); test('should find scoped package', () => { // when const result = findPackages('@types', 'classnames'); // then expect(result.length).toBe(1); expect(result[0]).toBe('/node_modules/@types/classnames'); }); }); describe('findPackage', () => { test('should find package name only', () => { const result = findPackage({ name: 'react', version: '16.14.0' }); expect(result).toBe('/node_modules/react'); }); test('should find package from peerDependencies', () => { const result = findPackage({ name: 'react', version: '17.0.0', peerDependency: '>= 16.8.0', }); expect(result).toBe('/node_modules/react'); const notfound = findPackage({ name: 'react', version: '17.0.0' }); expect(notfound).toBe(undefined); }); test('should find package from cdnConfig object if present version is higher', () => { const results = findPackage({ name: 'react', version: '16.13.0' }); expect(results).toBe('/node_modules/react'); }); test('should not find package from cdnConfig object if version is lower', () => { const results = findPackage({ name: 'react', version: '16.15.0' }); expect(results).toBeUndefined(); }); test('should not find package from cdnConfig object if version is next major', () => { const results = findPackage({ name: 'react', version: '17.0.0' }); expect(results).toBeUndefined(); }); test('should not find package from cdnConfig object if version is previous major', () => { const results = findPackage({ name: 'react', version: '15.0.0' }); expect(results).toBeUndefined(); }); });