update error handling logic, add empty check for validateTree

This commit is contained in:
Unknown
2018-11-19 14:40:55 +00:00
parent e7036277f9
commit 3d42942a5c
3 changed files with 63 additions and 60 deletions

View File

@@ -26,23 +26,26 @@ const isDuplicate = (node, set) => { return (set.has(node.key)); };
/*
* Traverse a tag tree and check its duplicates
*/
function validateTree(node, parent, set, duplicates) {
function validateTree (node, parent, set, duplicates) {
if (!Array.isArray(node) || !node.length) {
return
}
// If it's a leaf, check that it's not duplicate
if (isLeaf(node)) {
if (isDuplicate(node, set)) {
duplicates.push({
id: node.key,
error: makeError('Tags', node.key, 'tag was found more than once in hierarchy. Ignoring duplicate.')
});
delete parent.children[node.key];
})
delete parent.children[node.key]
} else {
set.add(node.key);
set.add(node.key)
}
} else {
// If it's not a leaf, simply keep going
Object.values(node.children).forEach((childNode) => {
validateTree(childNode, node, set, duplicates);
});
validateTree(childNode, node, set, duplicates)
})
}
}