mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-21 13:06:58 +02:00
refactor: re-implement idx (safe getter) & add test
This commit is contained in:
parent
4bc010bfcc
commit
391a8b5500
2 changed files with 48 additions and 2 deletions
|
@ -97,4 +97,45 @@ describe('utils', () => {
|
|||
expect(utils.getGitLastUpdated(tempFilePath)).toBeNull();
|
||||
fs.unlinkSync(tempFilePath);
|
||||
});
|
||||
|
||||
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 variable = 'enabledLanguages';
|
||||
expect(utils.idx(a, [('b', 'c')])).toBeUndefined();
|
||||
expect(utils.idx(b, ['hello'])).toEqual('world');
|
||||
expect(utils.idx(b, 'hello')).toEqual('world');
|
||||
expect(utils.idx(env, 'typo')).toBeUndefined();
|
||||
expect(utils.idx(env, 'versioning')).toEqual({
|
||||
enabled: false,
|
||||
versions: [],
|
||||
});
|
||||
expect(utils.idx(env, ['translation', 'enabled'])).toEqual(true);
|
||||
expect(
|
||||
utils.idx(env, ['translation', variable]).map(lang => lang.tag)
|
||||
).toEqual(['en', 'ja']);
|
||||
expect(utils.idx(undefined)).toBeUndefined();
|
||||
expect(utils.idx(null)).toBeNull();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -29,8 +29,13 @@ function getPath(pathStr, cleanUrl = false) {
|
|||
: removeExtension(pathStr);
|
||||
}
|
||||
|
||||
function idx(target, path) {
|
||||
return path.reduce((obj, key) => obj && obj[key], target);
|
||||
function idx(target, keyPaths) {
|
||||
return (
|
||||
target &&
|
||||
(Array.isArray(keyPaths)
|
||||
? keyPaths.reduce((obj, key) => obj && obj[key], target)
|
||||
: target[keyPaths])
|
||||
);
|
||||
}
|
||||
|
||||
function getGitLastUpdated(filepath) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue