X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/c1889cf297d64d0b7290660bdb074a73f1394b97..3f809e0be2a712d1e576f1b2acf4aff73e0f16b0:/src/models/tree.test.ts diff --git a/src/models/tree.test.ts b/src/models/tree.test.ts index 5cbab658..54b11d47 100644 --- a/src/models/tree.test.ts +++ b/src/models/tree.test.ts @@ -4,6 +4,7 @@ import * as Tree from './tree'; import { initTreeNode } from './tree'; +import { pipe } from 'lodash/fp'; describe('Tree', () => { let tree: Tree.Tree; @@ -17,73 +18,77 @@ describe('Tree', () => { expect(Tree.getNode('Node 1')(newTree)).toEqual(initTreeNode({ id: 'Node 1', value: 'Value 1' })); }); - // it('adds new node reference to parent children', () => { - // const [newTree] = [tree] - // .map(Tree.setNode(mockTreeNode({ children: [], id: 'Node 1', parent: '', value: 'Value 1' }))) - // .map(Tree.setNode(mockTreeNode({ children: [], id: 'Node 2', parent: 'Node 1', value: 'Value 2' }))); + it('adds new node reference to parent children', () => { + const newTree = pipe( + Tree.setNode(initTreeNode({ id: 'Node 1', parent: '', value: 'Value 1' })), + Tree.setNode(initTreeNode({ id: 'Node 2', parent: 'Node 1', value: 'Value 2' })), + )(tree); - // expect(Tree.getNode('Node 1')(newTree)).toEqual({ children: ['Node 2'], id: 'Node 1', parent: '', value: 'Value 1' }); - // }); + expect(Tree.getNode('Node 1')(newTree)).toEqual({ + ...initTreeNode({ id: 'Node 1', parent: '', value: 'Value 1' }), + children: ['Node 2'] + }); + }); - // it('gets node ancestors', () => { - // const newTree = [ - // mockTreeNode({ children: [], id: 'Node 1', parent: '', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 2', parent: 'Node 1', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 3', parent: 'Node 2', value: 'Value 1' }), - // ].reduce((tree, node) => Tree.setNode(node)(tree), tree); - // expect(Tree.getNodeAncestorsIds('Node 3')(newTree)).toEqual(['Node 1', 'Node 2']); - // }); + it('gets node ancestors', () => { + const newTree = [ + initTreeNode({ id: 'Node 1', parent: '', value: 'Value 1' }), + initTreeNode({ id: 'Node 2', parent: 'Node 1', value: 'Value 1' }), + initTreeNode({ id: 'Node 3', parent: 'Node 2', value: 'Value 1' }), + ].reduce((tree, node) => Tree.setNode(node)(tree), tree); + expect(Tree.getNodeAncestorsIds('Node 3')(newTree)).toEqual(['Node 1', 'Node 2']); + }); - // it('gets node descendants', () => { - // const newTree = [ - // mockTreeNode({ children: [], id: 'Node 1', parent: '', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 2', parent: 'Node 1', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 2.1', parent: 'Node 2', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 3', parent: 'Node 1', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 3.1', parent: 'Node 3', value: 'Value 1' }), - // ].reduce((tree, node) => Tree.setNode(node)(tree), tree); - // expect(Tree.getNodeDescendantsIds('Node 1')(newTree)).toEqual(['Node 2', 'Node 3', 'Node 2.1', 'Node 3.1']); - // }); + it('gets node descendants', () => { + const newTree = [ + initTreeNode({ id: 'Node 1', parent: '', value: 'Value 1' }), + initTreeNode({ id: 'Node 2', parent: 'Node 1', value: 'Value 1' }), + initTreeNode({ id: 'Node 2.1', parent: 'Node 2', value: 'Value 1' }), + initTreeNode({ id: 'Node 3', parent: 'Node 1', value: 'Value 1' }), + initTreeNode({ id: 'Node 3.1', parent: 'Node 3', value: 'Value 1' }), + ].reduce((tree, node) => Tree.setNode(node)(tree), tree); + expect(Tree.getNodeDescendantsIds('Node 1')(newTree)).toEqual(['Node 2', 'Node 3', 'Node 2.1', 'Node 3.1']); + }); - // it('gets root descendants', () => { - // const newTree = [ - // mockTreeNode({ children: [], id: 'Node 1', parent: '', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 2', parent: 'Node 1', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 2.1', parent: 'Node 2', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 3', parent: 'Node 1', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 3.1', parent: 'Node 3', value: 'Value 1' }), - // ].reduce((tree, node) => Tree.setNode(node)(tree), tree); - // expect(Tree.getNodeDescendantsIds('')(newTree)).toEqual(['Node 1', 'Node 2', 'Node 3', 'Node 2.1', 'Node 3.1']); - // }); + it('gets root descendants', () => { + const newTree = [ + initTreeNode({ id: 'Node 1', parent: '', value: 'Value 1' }), + initTreeNode({ id: 'Node 2', parent: 'Node 1', value: 'Value 1' }), + initTreeNode({ id: 'Node 2.1', parent: 'Node 2', value: 'Value 1' }), + initTreeNode({ id: 'Node 3', parent: 'Node 1', value: 'Value 1' }), + initTreeNode({ id: 'Node 3.1', parent: 'Node 3', value: 'Value 1' }), + ].reduce((tree, node) => Tree.setNode(node)(tree), tree); + expect(Tree.getNodeDescendantsIds('')(newTree)).toEqual(['Node 1', 'Node 2', 'Node 3', 'Node 2.1', 'Node 3.1']); + }); - // it('gets node children', () => { - // const newTree = [ - // mockTreeNode({ children: [], id: 'Node 1', parent: '', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 2', parent: 'Node 1', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 2.1', parent: 'Node 2', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 3', parent: 'Node 1', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 3.1', parent: 'Node 3', value: 'Value 1' }), - // ].reduce((tree, node) => Tree.setNode(node)(tree), tree); - // expect(Tree.getNodeChildrenIds('Node 1')(newTree)).toEqual(['Node 2', 'Node 3']); - // }); + it('gets node children', () => { + const newTree = [ + initTreeNode({ id: 'Node 1', parent: '', value: 'Value 1' }), + initTreeNode({ id: 'Node 2', parent: 'Node 1', value: 'Value 1' }), + initTreeNode({ id: 'Node 2.1', parent: 'Node 2', value: 'Value 1' }), + initTreeNode({ id: 'Node 3', parent: 'Node 1', value: 'Value 1' }), + initTreeNode({ id: 'Node 3.1', parent: 'Node 3', value: 'Value 1' }), + ].reduce((tree, node) => Tree.setNode(node)(tree), tree); + expect(Tree.getNodeChildrenIds('Node 1')(newTree)).toEqual(['Node 2', 'Node 3']); + }); - // it('gets root children', () => { - // const newTree = [ - // mockTreeNode({ children: [], id: 'Node 1', parent: '', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 2', parent: 'Node 1', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 2.1', parent: 'Node 2', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 3', parent: '', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 3.1', parent: 'Node 3', value: 'Value 1' }), - // ].reduce((tree, node) => Tree.setNode(node)(tree), tree); - // expect(Tree.getNodeChildrenIds('')(newTree)).toEqual(['Node 1', 'Node 3']); - // }); + it('gets root children', () => { + const newTree = [ + initTreeNode({ id: 'Node 1', parent: '', value: 'Value 1' }), + initTreeNode({ id: 'Node 2', parent: 'Node 1', value: 'Value 1' }), + initTreeNode({ id: 'Node 2.1', parent: 'Node 2', value: 'Value 1' }), + initTreeNode({ id: 'Node 3', parent: '', value: 'Value 1' }), + initTreeNode({ id: 'Node 3.1', parent: 'Node 3', value: 'Value 1' }), + ].reduce((tree, node) => Tree.setNode(node)(tree), tree); + expect(Tree.getNodeChildrenIds('')(newTree)).toEqual(['Node 1', 'Node 3']); + }); - // it('maps tree', () => { - // const newTree = [ - // mockTreeNode({ children: [], id: 'Node 1', parent: '', value: 'Value 1' }), - // mockTreeNode({ children: [], id: 'Node 2', parent: 'Node 1', value: 'Value 2' }), - // ].reduce((tree, node) => Tree.setNode(node)(tree), tree); - // const mappedTree = Tree.mapTreeValues(value => parseInt(value.split(' ')[1], 10))(newTree); - // expect(Tree.getNode('Node 2')(mappedTree)).toEqual({ children: [], id: 'Node 2', parent: 'Node 1', value: 2 }); - // }); + it('maps tree', () => { + const newTree = [ + initTreeNode({ id: 'Node 1', parent: '', value: 'Value 1' }), + initTreeNode({ id: 'Node 2', parent: 'Node 1', value: 'Value 2' }), + ].reduce((tree, node) => Tree.setNode(node)(tree), tree); + const mappedTree = Tree.mapTreeValues(value => parseInt(value.split(' ')[1], 10))(newTree); + expect(Tree.getNode('Node 2')(mappedTree)).toEqual(initTreeNode({id: 'Node 2', parent: 'Node 1', value: 2 })); + }); });