UNPKG

payload

Version:

Node, React, Headless CMS and Application Framework built on Next.js

175 lines (174 loc) • 7.43 kB
import { addPayloadComponentToImportMap } from './utilities/addPayloadComponentToImportMap.js'; import { getImportMapToBaseDirPath } from './utilities/getImportMapToBaseDirPath.js'; describe('addPayloadComponentToImportMap', ()=>{ let importMap; let imports; beforeEach(()=>{ importMap = {}; imports = {}; jest.restoreAllMocks(); }); function componentPathTest({ baseDir, importMapFilePath, payloadComponent, expectedPath, expectedSpecifier, expectedImportMapToBaseDirPath }) { const importMapToBaseDirPath = getImportMapToBaseDirPath({ baseDir, importMapPath: importMapFilePath }); expect(importMapToBaseDirPath).toBe(expectedImportMapToBaseDirPath); const { path, specifier } = addPayloadComponentToImportMap({ importMapToBaseDirPath, importMap, imports, payloadComponent }) ?? {}; expect(path).toBe(expectedPath); expect(specifier).toBe(expectedSpecifier); } it('relative path with import map partially in base dir', ()=>{ componentPathTest({ baseDir: '/myPackage/test/myTest', importMapFilePath: '/myPackage/app/(payload)/importMap.js', payloadComponent: './MyComponent.js#MyExport', expectedImportMapToBaseDirPath: '../../test/myTest/', expectedPath: '../../test/myTest/MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('relative path with import map partially in base dir 2', ()=>{ componentPathTest({ baseDir: '/myPackage/test/myTest', importMapFilePath: '/myPackage/test/prod/app/(payload)/importMap.js', payloadComponent: { path: './MyComponent.js#MyExport' }, expectedImportMapToBaseDirPath: '../../../myTest/', expectedPath: '../../../myTest/MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('relative path with import map partially in base dir 3', ()=>{ componentPathTest({ baseDir: '/myPackage/test/myTest', importMapFilePath: '/myPackage/test/prod/app/(payload)/importMap.js', payloadComponent: { path: '../otherTest/MyComponent.js', exportName: 'MyExport' }, expectedImportMapToBaseDirPath: '../../../myTest/', expectedPath: '../../../otherTest/MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('relative path with import map within base dir', ()=>{ componentPathTest({ baseDir: '/myPackage/test/myTest', importMapFilePath: '/myPackage/test/myTest/prod/app/(payload)/importMap.js', payloadComponent: './MyComponent.js#MyExport', expectedImportMapToBaseDirPath: '../../../', expectedPath: '../../../MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('relative path with import map not in base dir', ()=>{ componentPathTest({ baseDir: '/test/myTest', importMapFilePath: '/app/(payload)/importMap.js', payloadComponent: './MyComponent.js#MyExport', expectedImportMapToBaseDirPath: '../../test/myTest/', expectedPath: '../../test/myTest/MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('relative path with import map not in base dir 2', ()=>{ componentPathTest({ baseDir: '/test/myTest', importMapFilePath: '/app/(payload)/importMap.js', payloadComponent: '../myOtherTest/MyComponent.js#MyExport', expectedImportMapToBaseDirPath: '../../test/myTest/', expectedPath: '../../test/myOtherTest/MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('relative path with import map not in base dir, baseDir ending with slash', ()=>{ componentPathTest({ baseDir: '/test/myTest/', importMapFilePath: '/app/(payload)/importMap.js', payloadComponent: './MyComponent.js#MyExport', expectedImportMapToBaseDirPath: '../../test/myTest/', expectedPath: '../../test/myTest/MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('relative path with import map not in base dir, component starting with slash', ()=>{ componentPathTest({ baseDir: '/test/myTest', importMapFilePath: '/app/(payload)/importMap.js', payloadComponent: '/MyComponent.js#MyExport', expectedImportMapToBaseDirPath: '../../test/myTest/', expectedPath: '../../test/myTest/MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('aliased path', ()=>{ componentPathTest({ baseDir: '/test/myTest', importMapFilePath: '/app/(payload)/importMap.js', payloadComponent: '@components/MyComponent.js#MyExport', expectedImportMapToBaseDirPath: '../../test/myTest/', expectedPath: '@components/MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('aliased path in PayloadComponent object', ()=>{ componentPathTest({ baseDir: '/test/', importMapFilePath: '/app/(payload)/importMap.js', payloadComponent: { path: '@components/MyComponent.js' }, expectedImportMapToBaseDirPath: '../../test/', expectedPath: '@components/MyComponent.js', expectedSpecifier: 'default' }); }); it('relative path import starting with slash, going up', ()=>{ componentPathTest({ baseDir: '/test/myTest', importMapFilePath: '/test/myTest/app/importMap.js', payloadComponent: '/../MyComponent.js#MyExport', expectedImportMapToBaseDirPath: '../', expectedPath: '../../MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('relative path import starting with dot-slash, going up', ()=>{ componentPathTest({ baseDir: '/test/myTest', importMapFilePath: '/test/myTest/app/importMap.js', payloadComponent: './../MyComponent.js#MyExport', expectedImportMapToBaseDirPath: '../', expectedPath: '../../MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('importMap and baseDir in same directory', ()=>{ componentPathTest({ baseDir: '/test/myTest', importMapFilePath: '/test/myTest/importMap.js', payloadComponent: './MyComponent.js#MyExport', expectedImportMapToBaseDirPath: './', expectedPath: './MyComponent.js', expectedSpecifier: 'MyExport' }); }); it('baseDir within importMap dir', ()=>{ componentPathTest({ baseDir: '/test/myTest/components', importMapFilePath: '/test/myTest/importMap.js', payloadComponent: './MyComponent.js#MyExport', expectedImportMapToBaseDirPath: './components/', expectedPath: './components/MyComponent.js', expectedSpecifier: 'MyExport' }); }); }); //# sourceMappingURL=generateImportMap.spec.js.map