UNPKG

liferay-npm-bundler-preset-reactjs

Version:

liferay npm bundler preset react

128 lines (101 loc) 3.18 kB
/** * SPDX-FileCopyrightText: © 2020 Liferay, Inc. <https://liferay.com> * SPDX-License-Identifier: LGPL-3.0-or-later */ import path from 'path'; import {loadAliases} from '../alias'; import FilePath from '../file-path'; const fixturesDir = new FilePath(path.join(__dirname, '__fixtures__', 'alias')); describe('loadAliases', () => { it('works with typical configuration', () => { const aliases = loadAliases(fixturesDir.join('typical.json'), [ 'browser', ]); expect(aliases).toEqual({ 'fs': './fs-shim.js', './random.js': './random-shim.js', './log': './log-shim.js', './utils/printer.js': './printer-shim.js', }); }); it('loads multiple alias fields in order', () => { const aliases = loadAliases(fixturesDir.join('multiple.json'), [ 'browser', 'unpkg', ]); expect(aliases).toEqual({ './random.js': './random-shim.js', 'fs': './fs-shim2.js', './log': './log-shim.js', }); }); it('loads multiple alias fields in reverse order', () => { const aliases = loadAliases(fixturesDir.join('multiple.json'), [ 'unpkg', 'browser', ]); expect(aliases).toEqual({ './random.js': './random-shim.js', 'fs': './fs-shim.js', './log': './log-shim.js', }); }); it('normalizes / to ./', () => { const aliases = loadAliases(fixturesDir.join('normalize.json'), [ 'browser', ]); expect(aliases).toEqual({ './random.js': './random-shim.js', }); }); it('does not fail when an alias field is not found', () => { expect(() => loadAliases(fixturesDir.join('typical.json'), [ 'bad-field', 'browser', ]) ).not.toThrow(); }); it('does not fail when package.json file is not found', () => { expect(() => loadAliases(fixturesDir.join('missing-file.json'), ['browser']) ).not.toThrow(); }); it('returns empty json when package.json is not valid JSON', () => { expect( loadAliases(fixturesDir.join('invalid.json'), ['browser']) ).toMatchObject({}); }); it('caches calls correctly', () => { const pkgJsonFile = fixturesDir.join('multiple.json'); const alias1 = loadAliases(pkgJsonFile, ['browser']); const alias2 = loadAliases(pkgJsonFile, ['unpkg']); const alias3 = loadAliases(pkgJsonFile, ['browser', 'unpkg']); const alias4 = loadAliases(pkgJsonFile, ['browser']); const alias5 = loadAliases(pkgJsonFile, ['unpkg']); expect(alias2).not.toBe(alias1); expect(alias3).not.toBe(alias1); expect(alias3).not.toBe(alias2); expect(alias4).toEqual(alias1); expect(alias5).toEqual(alias2); }); it('does not contain spurious values for module "toString"', () => { const aliases = loadAliases(fixturesDir.join('typical.json'), [ 'browser', ]); expect(aliases['toString']).toBeUndefined(); }); it('works when the main field does not start with .', () => { const aliases = loadAliases(fixturesDir.join('main-without-dot.json'), [ 'browser', ]); expect(aliases['./index']).toEqual('./index-shim.js'); }); it('works when value does not start with .', () => { const aliases = loadAliases( fixturesDir.join('alias-without-dot.json'), ['browser'] ); expect(aliases['./index']).toEqual('./index-shim.js'); }); });