UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

376 lines (334 loc) 9.77 kB
import { Tree } from ".."; const node1 = { id: "Menu1", component: { props: { id: "Menu1", groupId: "ScreenPicker.ScreenSelector", }, }, }; const node2 = { id: "Menu2", component: { props: { id: "Menu2", groupId: "ScreenPicker.ScreenSelector", }, }, }; const node3 = { id: "Menu3", component: { props: { id: "Menu3", groupId: "ScreenPicker.ScreenSelector", }, }, }; const node4 = { id: "Menu4", component: { props: { id: "Menu4", groupId: "ScreenPicker.ScreenSelector", }, }, }; const node5 = { id: "ScreenPicker.ScreenSelector", component: { props: { id: "ScreenPicker.ScreenSelector", groupId: "ScreenPicker", }, }, }; const node6 = { id: "ScreenPicker.ScreenContainer", component: { props: { id: "ScreenPicker.ScreenContainer", groupId: "ScreenPicker", }, }, }; const node7 = { id: "ScreenPicker", component: { props: { id: "ScreenPicker" } }, }; const node8 = { id: "Rails1.Item1", component: { props: { id: "Rails1.Item1", groupId: "Rails1", }, }, }; const node9 = { id: "Rails1.Item2", component: { props: { id: "Rails1.Item1", groupId: "Rails1", }, }, }; const node10 = { id: "Rails1", component: { props: { id: "Rails1", groupId: "ScreenPicker.ScreenContainer", }, }, }; const node11 = { id: "Grid1.Item1", component: { props: { id: "Grid1.Item1", groupId: "Grid1", }, }, }; const node12 = { id: "Grid1.Item2", component: { props: { id: "Grid1.Item2", groupId: "Grid1", }, }, }; const node13 = { id: "Grid1.Item3", component: { props: { id: "Grid1.Item3", groupId: "Grid1", }, }, }; const node14 = { id: "Grid1", component: { props: { id: "Grid1", groupId: "ScreenPicker.ScreenContainer", }, }, }; function treeLoaded() {} function checkParents(node) { if (node.children) { node.children.forEach((child) => { expect(child.parent.id).toEqual(node.id); checkParents(child); }); } } describe("removeNode", () => { const tree = new Tree(treeLoaded); tree.root.children.push(node7); tree.root.children[0].parent = tree.root; tree.root.children[0].children = [node5]; tree.root.children[0].children[0].parent = tree.root.children[0]; tree.root.children[0].children[0].children = [node1, node2, node3, node4]; tree.root.children[0].children[0].children[0].parent = tree.root.children[0].children[0]; tree.root.children[0].children[0].children[1].parent = tree.root.children[0].children[0]; tree.root.children[0].children[0].children[2].parent = tree.root.children[0].children[0]; tree.root.children[0].children[0].children[3].parent = tree.root.children[0].children[0]; it("checking structure before test", () => { expect(tree.root.children.length).toEqual(1); expect(tree.root.children[0].children.length).toEqual(1); expect(tree.root.children[0].children[0].children.length).toEqual(4); }); it(`should return 3 for tree.root.children[0].children[0].children.length after remove first leaf node`, () => { tree.removeNode(tree.root.children[0].children[0].children[0]); expect(tree.root.children.length).toEqual(1); expect(tree.root.children[0].children.length).toEqual(1); expect(tree.root.children[0].children[0].children.length).toEqual(3); }); it(`should return 0 for tree.root.children[0].children.length after remove node tree.root.children[0].children[0]`, () => { tree.removeNode(tree.root.children[0].children[0]); expect(tree.root.children.length).toEqual(1); expect(tree.root.children[0].children.length).toEqual(0); }); }); describe("addNode", () => { const tree = new Tree(treeLoaded); it(`should return size of 1 for root children and size of 4 for chilren(Menu1-Menu4) of first root child (ScreenPicker.ScreenSelector), when 4 nodes has been added with defined same groupId. root ↳ ScreenPicker.ScreenSelector ↳ Menu1 ↳ Menu2 ↳ Menu3 ↳ Menu4`, () => { tree.addNode(node1); tree.addNode(node2); tree.addNode(node3); tree.addNode(node4); expect(tree.root.children.length).toEqual(1); expect(tree.root.children[0].children.length).toEqual(4); }); it("should return node.id for each node.child.parent.id", () => { checkParents(tree.root); }); it(`should return size of 1 for root children and size of 1 for chilren of first root child (ScreenPicker) and 4 for nested child (ScreenPicker.ScreenSelector), when 1 node with group with defined groupId and id is the same as current first child of root. root ↳ ScreenPicker ↳ ScreenPicker.ScreenSelector ↳ Menu1 ↳ Menu2 ↳ Menu3 ↳ Menu4`, () => { tree.addNode(node5); expect(tree.root.children.length).toEqual(1); expect(tree.root.children[0].children.length).toEqual(1); expect(tree.root.children[0].children[0].children.length).toEqual(4); }); it("should return node.id for each node.child.parent.id", () => { checkParents(tree.root); }); it(`should return size of 1 for root children (ScreenPicker) and size of 2 for chilren (ScreenSelector and ScreenContainer) of first root child, when node with groupId the same as root first child will be added. root ↳ ScreenPicker ↳ ScreenPicker.ScreenSelector ↳ Menu1 ↳ Menu2 ↳ Menu3 ↳ Menu4 ↳ ScreenPicker.ScreenContainer`, () => { tree.addNode(node6); expect(tree.root.children.length).toEqual(1); expect(tree.root.children[0].children.length).toEqual(2); expect(tree.root.children[0].children[0].children.length).toEqual(4); expect(tree.root.children[0].children[1].children).toEqual(undefined); }); it("should return node.id for each node.child.parent.id", () => { checkParents(tree.root); }); it(`should return component from first child in root after adding node which already exists. root ↳ ScreenPicker >>>>> should have component ↳ ScreenPicker.ScreenSelector ↳ Menu1 ↳ Menu2 ↳ Menu3 ↳ Menu4 ↳ ScreenPicker.ScreenContainer`, () => { tree.addNode(node7); expect(tree.root.children[0].component).toEqual(node7.component); }); it("should return node.id for each node.child.parent.id", () => { checkParents(tree.root); }); it(`should return 3 for root children and 2 for last root child children size when 2 rails items (Rails1.Item1 and Rails1.Item2) are added with defined same groupID (Rails1). root ↳ ScreenPicker ↳ ScreenPicker.ScreenSelector ↳ Menu1 ↳ Menu2 ↳ Menu3 ↳ Menu4 ↳ ScreenPicker.ScreenContainer ↳ Rails1 ↳ Rails1.Item1 ↳ Rails1.Item2`, () => { tree.addNode(node8); tree.addNode(node9); expect(tree.root.children.length).toEqual(2); expect(tree.root.children[1].children.length).toEqual(2); }); it("should return node.id for each node.child.parent.id", () => { checkParents(tree.root); }); it(`should return 1 for root children (ScreenPicker) 2 for first child children (ScreenPicker.ScreenSelector and ScreenPicker.ScreenContainer) and 1 for last child (ScreenPicker.ScreenContainer) children (Rails1) of root first child (ScreenPicker). root ↳ ScreenPicker ↳ ScreenPicker.ScreenSelector ↳ Menu1 ↳ Menu2 ↳ Menu3 ↳ Menu4 ↳ ScreenPicker.ScreenContainer ↳ Rails1 ↳ Rails1.Item1 ↳ Rails1.Item2`, () => { tree.addNode(node10); expect(tree.root.children.length).toEqual(1); expect(tree.root.children[0].children.length).toEqual(2); expect(tree.root.children[0].children[1].children.length).toEqual(1); }); it("should return node.id for each node.child.parent.id", () => { checkParents(tree.root); }); it(`should return 3 for root children and 3 for last root child children size when 2 rails items (Grid1.Item1, Grid1.Item2, Grid1.Item3) are added with defined same groupID (Grid1). root ↳ ScreenPicker ↳ ScreenPicker.ScreenSelector ↳ Menu1 ↳ Menu2 ↳ Menu3 ↳ Menu4 ↳ ScreenPicker.ScreenContainer ↳ Rails1 ↳ Rails1.Item1 ↳ Rails1.Item2 ↳ Grid1 ↳ Grid1.Item1 ↳ Grid1.Item2 ↳ Grid1.Item3`, () => { tree.addNode(node11); tree.addNode(node12); tree.addNode(node13); expect(tree.root.children.length).toEqual(2); expect(tree.root.children[1].children.length).toEqual(3); }); it("should return node.id for each node.child.parent.id", () => { checkParents(tree.root); }); it(`should return 1 for root children (ScreenPicker) 2 for first child children (ScreenPicker.ScreenSelector and ScreenPicker.ScreenContainer) and 2 for last child (ScreenPicker.ScreenContainer) children (Rails1 and Grid1) of root first child (ScreenPicker). root ↳ ScreenPicker ↳ ScreenPicker.ScreenSelector ↳ Menu1 ↳ Menu2 ↳ Menu3 ↳ Menu4 ↳ ScreenPicker.ScreenContainer ↳ Rails1 ↳ Rails1.Item1 ↳ Rails1.Item2 ↳ Grid1 ↳ Grid1.Item1 ↳ Grid1.Item2 ↳ Grid1.Item3`, () => { tree.addNode(node14); expect(tree.root.children.length).toEqual(1); expect(tree.root.children[0].children.length).toEqual(2); expect(tree.root.children[0].children[1].children.length).toEqual(2); }); it("should return node.id for each node.child.parent.id", () => { checkParents(tree.root); }); });