import path from 'path'; import { fileToPath, fileToComponentName, idx, getSubFolder, } from '@lib/load/utils'; describe('load utils', () => { test('fileToComponentName', () => { const asserts = { 'index.md': 'MDIndex', 'hello/index.md': 'MDHelloIndex', 'foo.md': 'MDFoo', 'foo-bar.md': 'MDFooBar', 'index.js': 'JSIndex', 'foobar.js': 'JSFoobar', 'docusaurus/index.js': 'JSDocusaurusIndex', '234.md': 'MD234', '2018-07-08-test.md': 'MD20180708Test', '%asd.md': 'MDAsd', }; Object.keys(asserts).forEach(file => { expect(fileToComponentName(file)).toBe(asserts[file]); }); }); test('fileToPath', () => { const asserts = { 'index.md': '/', 'hello/index.md': '/hello/', 'foo.md': '/foo', 'foo/bar.md': '/foo/bar', 'index.js': '/', 'hello/index.js': '/hello/', 'foo.js': '/foo', 'foo/bar.js': '/foo/bar', }; Object.keys(asserts).forEach(file => { expect(fileToPath(file)).toBe(asserts[file]); }); }); test('idx', () => { const a = {}; const b = {hello: 'world'}; const env = { translation: { enabled: true, enabledLanguages: [ { enabled: true, name: 'English', tag: 'en', }, { enabled: true, name: '日本語', tag: 'ja', }, ], }, versioning: { enabled: false, versions: [], }, }; const test = {arr: [1, 2, 3]}; const variable = 'enabledLanguages'; expect(idx(a, [('b', 'c')])).toBeUndefined(); expect(idx(b, ['hello'])).toEqual('world'); expect(idx(b, 'hello')).toEqual('world'); expect(idx(env, 'typo')).toBeUndefined(); expect(idx(env, 'versioning')).toEqual({ enabled: false, versions: [], }); expect(idx(env, ['translation', 'enabled'])).toEqual(true); expect(idx(env, ['translation', variable]).map(lang => lang.tag)).toEqual([ 'en', 'ja', ]); expect(idx(test, ['arr', 0])).toEqual(1); expect(idx(undefined)).toBeUndefined(); expect(idx(null)).toBeNull(); }); test('getSubFolder', () => { const testA = path.join('folder', 'en', 'test.md'); const testB = path.join('folder', 'ja', 'test.md'); const testC = path.join('folder', 'ja', 'en', 'test.md'); const testD = path.join('docs', 'ro', 'test.md'); const testE = path.join('docs', 'test.md'); expect(getSubFolder(testA, 'folder')).toBe('en'); expect(getSubFolder(testB, 'folder')).toBe('ja'); expect(getSubFolder(testC, 'folder')).toBe('ja'); expect(getSubFolder(testD, 'docs')).toBe('ro'); expect(getSubFolder(testE, 'docs')).toBeNull(); }); });