import { pathToImport } from '../paths'; const pages = [ 'CmsPage.tsx', // cms-page 'Product.tsx', // product 'category/index.tsx', // product 'index.tsx', // catchall 'account/[path].tsx', // account/anythingelse 'account/Login.tsx', // account/login 'account/orders/[id].tsx', // account/orders/12 'account/addresses/[id]/Edit.tsx', // account/orders/12/edit 'account/addresses/[id]/index.tsx', // account/orders/12 'cats/shane.tsx', 'cats/index.tsx', '[path].tsx', // catchall ]; const pages_without_fallback = pages.slice(0, -1); describe('paths to imports', () => { it('should parse', () => { expect(pathToImport(pages_without_fallback, '/cats/kittie')).toStrictEqual({ pathname: '/cats/kittie', chunkName: undefined, filepath: undefined, params: {}, }); expect(pathToImport(pages, '/cats/shane')).toStrictEqual({ pathname: '/cats/shane', chunkName: 'cats-shane_Page', filepath: { raw: 'cats/shane.tsx', segments: ['cats', 'shane'], params: [], }, params: {}, }); expect(pathToImport(pages, '/account/addresses/18')).toStrictEqual({ pathname: '/account/addresses/18', chunkName: 'account-addresses-id-index_Page', filepath: { raw: 'account/addresses/[id]/index.tsx', segments: ['account', 'addresses', '[id]', 'index'], params: ['id'], }, params: {}, }); expect(pathToImport(pages, '/product')).toStrictEqual({ pathname: '/product', chunkName: 'Product_Page', filepath: { raw: 'Product.tsx', segments: ['product'], params: [], }, params: {}, }); expect(pathToImport(pages, '/category')).toStrictEqual({ pathname: '/category', chunkName: 'category-index_Page', filepath: { raw: 'category/index.tsx', segments: ['category', 'index'], params: [], }, params: {}, }); expect(pathToImport(pages, '/')).toStrictEqual({ pathname: '/', chunkName: 'index_Page', filepath: { raw: 'index.tsx', segments: ['index'], params: [], }, params: {}, }); expect(pathToImport(pages, '/account/login')).toStrictEqual({ pathname: '/account/login', chunkName: 'account-Login_Page', filepath: { raw: 'account/Login.tsx', segments: ['account', 'login'], params: [], }, params: {}, }); expect(pathToImport(pages, '/account/catchall-anything')).toStrictEqual({ pathname: '/account/catchall-anything', chunkName: 'account-path_Page', filepath: { raw: 'account/[path].tsx', segments: ['account', '[path]'], params: ['path'], }, params: {}, }); expect(pathToImport(pages, '/account/orders/18')).toStrictEqual({ pathname: '/account/orders/18', chunkName: 'account-orders-id_Page', filepath: { raw: 'account/orders/[id].tsx', segments: ['account', 'orders', '[id]'], params: ['id'], }, params: {}, }); expect(pathToImport(pages, '/account/addresses/18/edit')).toStrictEqual({ pathname: '/account/addresses/18/edit', chunkName: 'account-addresses-id-Edit_Page', filepath: { raw: 'account/addresses/[id]/Edit.tsx', segments: ['account', 'addresses', '[id]', 'edit'], params: ['id'], }, params: {}, }); expect(pathToImport(pages, '/sofas')).toStrictEqual({ pathname: '/sofas', chunkName: 'path_Page', filepath: { raw: '[path].tsx', segments: ['[path]'], params: ['path'], }, params: {}, }); expect(pathToImport(pages, '/sofas/three-seaters/blue')).toStrictEqual({ pathname: '/sofas/three-seaters/blue', chunkName: 'path_Page', filepath: { raw: '[path].tsx', segments: ['[path]'], params: ['path'], }, params: {}, }); }); });