X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/4b259f71b418af769c0edad5d36ad519c9a22864..6bdb4758d981aa05c19700761d3ace0db7af324a:/src/store/tree-picker/tree-picker-reducer.test.ts diff --git a/src/store/tree-picker/tree-picker-reducer.test.ts b/src/store/tree-picker/tree-picker-reducer.test.ts index 443da370..3a0b60e1 100644 --- a/src/store/tree-picker/tree-picker-reducer.test.ts +++ b/src/store/tree-picker/tree-picker-reducer.test.ts @@ -2,100 +2,104 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { createTree, getNodeValue, getNodeChildren } from "../../models/tree"; -import { TreePickerNode, createTreePickerNode } from "./tree-picker"; +import { createTree, getNodeChildrenIds, getNode, TreeNodeStatus } from '~/models/tree'; +import { pipe } from 'lodash/fp'; import { treePickerReducer } from "./tree-picker-reducer"; import { treePickerActions } from "./tree-picker-actions"; -import { TreeItemStatus } from "../../components/tree/tree"; - +import { TreePicker } from './tree-picker'; +import { initTreeNode } from '~/models/tree'; describe('TreePickerReducer', () => { it('LOAD_TREE_PICKER_NODE - initial state', () => { - const tree = createTree(); - const newTree = treePickerReducer(tree, treePickerActions.LOAD_TREE_PICKER_NODE({ id: '1' })); - expect(newTree).toEqual(tree); + const tree = createTree<{}>(); + const newState = treePickerReducer({}, treePickerActions.LOAD_TREE_PICKER_NODE({ id: '1', pickerId: "projects" })); + expect(newState).toEqual({ 'projects': tree }); }); it('LOAD_TREE_PICKER_NODE', () => { - const tree = createTree(); - const node = createTreePickerNode({ id: '1', value: '1' }); - const [newTree] = [tree] - .map(tree => treePickerReducer(tree, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node] }))) - .map(tree => treePickerReducer(tree, treePickerActions.LOAD_TREE_PICKER_NODE({ id: '1' }))); - expect(getNodeValue('1')(newTree)).toEqual({ - ...createTreePickerNode({ id: '1', value: '1' }), - status: TreeItemStatus.PENDING + const node = initTreeNode({ id: '1', value: '1' }); + const newState = pipe( + (state: TreePicker) => treePickerReducer(state, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node], pickerId: "projects" })), + state => treePickerReducer(state, treePickerActions.LOAD_TREE_PICKER_NODE({ id: '1', pickerId: "projects" })) + )({ projects: createTree<{}>() }); + + expect(getNode('1')(newState.projects)).toEqual({ + ...initTreeNode({ id: '1', value: '1' }), + status: TreeNodeStatus.PENDING }); }); it('LOAD_TREE_PICKER_NODE_SUCCESS - initial state', () => { - const tree = createTree(); - const subNode = createTreePickerNode({ id: '1.1', value: '1.1' }); - const newTree = treePickerReducer(tree, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [subNode] })); - expect(getNodeChildren('')(newTree)).toEqual(['1.1']); + const subNode = initTreeNode({ id: '1.1', value: '1.1' }); + const newState = treePickerReducer({}, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [subNode], pickerId: "projects" })); + expect(getNodeChildrenIds('')(newState.projects)).toEqual(['1.1']); }); it('LOAD_TREE_PICKER_NODE_SUCCESS', () => { - const tree = createTree(); - const node = createTreePickerNode({ id: '1', value: '1' }); - const subNode = createTreePickerNode({ id: '1.1', value: '1.1' }); - const [newTree] = [tree] - .map(tree => treePickerReducer(tree, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node] }))) - .map(tree => treePickerReducer(tree, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '1', nodes: [subNode] }))); - expect(getNodeChildren('1')(newTree)).toEqual(['1.1']); - expect(getNodeValue('1')(newTree)).toEqual({ - ...createTreePickerNode({ id: '1', value: '1' }), - status: TreeItemStatus.LOADED + const node = initTreeNode({ id: '1', value: '1' }); + const subNode = initTreeNode({ id: '1.1', value: '1.1' }); + const newState = pipe( + (state: TreePicker) => treePickerReducer(state, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node], pickerId: "projects" })), + state => treePickerReducer(state, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '1', nodes: [subNode], pickerId: "projects" })) + )({ projects: createTree<{}>() }); + expect(getNodeChildrenIds('1')(newState.projects)).toEqual(['1.1']); + expect(getNode('1')(newState.projects)).toEqual({ + ...initTreeNode({ id: '1', value: '1' }), + children: ['1.1'], + status: TreeNodeStatus.LOADED }); }); - it('TOGGLE_TREE_PICKER_NODE_COLLAPSE - collapsed', () => { - const tree = createTree(); - const node = createTreePickerNode({ id: '1', value: '1' }); - const [newTree] = [tree] - .map(tree => treePickerReducer(tree, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node] }))) - .map(tree => treePickerReducer(tree, treePickerActions.TOGGLE_TREE_PICKER_NODE_COLLAPSE({ id: '1' }))); - expect(getNodeValue('1')(newTree)).toEqual({ - ...createTreePickerNode({ id: '1', value: '1' }), - collapsed: true + it('TOGGLE_TREE_PICKER_NODE_COLLAPSE - expanded', () => { + const node = initTreeNode({ id: '1', value: '1' }); + const newState = pipe( + (state: TreePicker) => treePickerReducer(state, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node], pickerId: "projects" })), + state => treePickerReducer(state, treePickerActions.TOGGLE_TREE_PICKER_NODE_COLLAPSE({ id: '1', pickerId: "projects" })) + )({ projects: createTree<{}>() }); + expect(getNode('1')(newState.projects)).toEqual({ + ...initTreeNode({ id: '1', value: '1' }), + expanded: true }); }); it('TOGGLE_TREE_PICKER_NODE_COLLAPSE - expanded', () => { - const tree = createTree(); - const node = createTreePickerNode({ id: '1', value: '1' }); - const [newTree] = [tree] - .map(tree => treePickerReducer(tree, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node] }))) - .map(tree => treePickerReducer(tree, treePickerActions.TOGGLE_TREE_PICKER_NODE_COLLAPSE({ id: '1' }))) - .map(tree => treePickerReducer(tree, treePickerActions.TOGGLE_TREE_PICKER_NODE_COLLAPSE({ id: '1' }))); - expect(getNodeValue('1')(newTree)).toEqual({ - ...createTreePickerNode({ id: '1', value: '1' }), - collapsed: false + const node = initTreeNode({ id: '1', value: '1' }); + const newState = pipe( + (state: TreePicker) => treePickerReducer(state, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node], pickerId: "projects" })), + state => treePickerReducer(state, treePickerActions.TOGGLE_TREE_PICKER_NODE_COLLAPSE({ id: '1', pickerId: "projects" })), + state => treePickerReducer(state, treePickerActions.TOGGLE_TREE_PICKER_NODE_COLLAPSE({ id: '1', pickerId: "projects" })), + )({ projects: createTree<{}>() }); + expect(getNode('1')(newState.projects)).toEqual({ + ...initTreeNode({ id: '1', value: '1' }), + expanded: false }); }); - it('TOGGLE_TREE_PICKER_NODE_SELECT - selected', () => { - const tree = createTree(); - const node = createTreePickerNode({ id: '1', value: '1' }); - const [newTree] = [tree] - .map(tree => treePickerReducer(tree, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node] }))) - .map(tree => treePickerReducer(tree, treePickerActions.TOGGLE_TREE_PICKER_NODE_SELECT({ id: '1' }))); - expect(getNodeValue('1')(newTree)).toEqual({ - ...createTreePickerNode({ id: '1', value: '1' }), - selected: true + it('ACTIVATE_TREE_PICKER_NODE', () => { + const node = initTreeNode({ id: '1', value: '1' }); + const newState = pipe( + (state: TreePicker) => treePickerReducer(state, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node], pickerId: "projects" })), + state => treePickerReducer(state, treePickerActions.ACTIVATE_TREE_PICKER_NODE({ id: '1', pickerId: "projects" })), + )({ projects: createTree<{}>() }); + expect(getNode('1')(newState.projects)).toEqual({ + ...initTreeNode({ id: '1', value: '1' }), + active: true }); }); - it('TOGGLE_TREE_PICKER_NODE_SELECT - not selected', () => { - const tree = createTree(); - const node = createTreePickerNode({ id: '1', value: '1' }); - const [newTree] = [tree] - .map(tree => treePickerReducer(tree, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node] }))) - .map(tree => treePickerReducer(tree, treePickerActions.TOGGLE_TREE_PICKER_NODE_SELECT({ id: '1' }))) - .map(tree => treePickerReducer(tree, treePickerActions.TOGGLE_TREE_PICKER_NODE_SELECT({ id: '1' }))); - expect(getNodeValue('1')(newTree)).toEqual({ - ...createTreePickerNode({ id: '1', value: '1' }), - selected: false + it('TOGGLE_TREE_PICKER_NODE_SELECTION', () => { + const node = initTreeNode({ id: '1', value: '1' }); + const subNode = initTreeNode({ id: '1.1', value: '1.1' }); + const newState = pipe( + (state: TreePicker) => treePickerReducer(state, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '', nodes: [node], pickerId: "projects" })), + state => treePickerReducer(state, treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({ id: '1', nodes: [subNode], pickerId: "projects" })), + state => treePickerReducer(state, treePickerActions.TOGGLE_TREE_PICKER_NODE_SELECTION({ id: '1.1', pickerId: "projects" })), + )({ projects: createTree<{}>() }); + expect(getNode('1')(newState.projects)).toEqual({ + ...initTreeNode({ id: '1', value: '1' }), + selected: true, + children: ['1.1'], + status: TreeNodeStatus.LOADED, }); }); });