UNPKG

zarm-web

Version:
231 lines (209 loc) 8.46 kB
import React from 'react'; import { render, mount } from 'enzyme'; import toJson from 'enzyme-to-json'; import Tree from '../index'; const treeData = [ { keys: '0', title: '根结点1', children: [ { keys: '0-0', title: '父结点 0-0', children: [ { keys: '0-0-0', title: '父结点 0-0-0', children: [ { keys: '0-0-0-0', title: '子结点 0-0-0-0', checkDisabled: true }, { keys: '0-0-0-1', title: '子结点 0-0-0-1' }, ], }, ], }, { keys: '0-1', title: '父结点 0-1', children: [ { keys: '0-1-0', title: '子结点 0-1-0', checkDisabled: true }, { keys: '0-1-1', title: '子结点 0-1-1' }, { keys: '0-1-2', title: '子结点 0-1-2' }, ], }, { keys: '0-2', title: '父结点 0-2', children: [ { keys: '0-2-0', title: '父结点 0-2-0' }, { keys: '0-2-1', title: '父结点 0-2-1', children: [ { keys: '0-2-1-0', title: '子结点 0-2-1-0', children: [ { keys: '0-2-1-0-0', title: '子结点 0-2-1-0-0' }, { keys: '0-2-1-0-1', title: '子结点 0-2-1-0-1' }, ], }, { keys: '0-2-1-1', title: '子结点 0-2-1-1' }, ], }, { keys: '0-2-2', title: '子结点 0-2-2' }, ], }, ], }, ]; const checkedKeys = ['0-0-0-0', '0-2-1-1', '0-1-0']; const checkedKeys2 = ['0-0-0', '0-1']; const expandedKeys = ['0-0-0']; const expandedKeys2 = ['0-1']; const { TreeNode } = Tree; describe('Tree', () => { it('renders basic Tree correctly', () => { const wrapper = render( <Tree treeData={treeData} />, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with defaultExpandAll correctly', () => { const wrapper = render( <Tree treeData={treeData} defaultExpandAll />, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with defaultExpandAll canCheck correctly', () => { const wrapper = render( <Tree treeData={treeData} canCheck defaultExpandAll />, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with defaultExpandAll correctly', () => { const wrapper = render( <Tree treeData={treeData} defaultExpandAll />, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with defaultExpandAll, canCheck correctly', () => { const wrapper = render( <Tree treeData={treeData} defaultExpandAll canCheck />, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with defaultExpandAll, canCheck, checkedKeys correctly', () => { const wrapper = render( <Tree treeData={treeData} defaultExpandAll canCheck checkedKeys={checkedKeys} />, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with expandedKeys correctly', () => { const wrapper = render( <Tree treeData={treeData} expandedKeys={expandedKeys} />, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with expandedKeys, canCheck correctly', () => { const wrapper = render( <Tree treeData={treeData} expandedKeys={expandedKeys} canCheck />, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with expandedKeys, defaultExpandAll, canCheck correctly', () => { const wrapper = render( <Tree treeData={treeData} expandedKeys={expandedKeys} canCheck defaultExpandAll />, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with expandedKeys, defaultExpandAll, canCheck, checkedKeys correctly', () => { const wrapper = render( <Tree treeData={treeData} expandedKeys={expandedKeys} canCheck defaultExpandAll checkedKeys={checkedKeys} />, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with TreeNode children', () => { const wrapper = render( <Tree treeData={treeData} expandedKeys={expandedKeys} canCheck defaultExpandAll checkedKeys={checkedKeys} />, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with TreeNodes children', () => { const wrapper = render( <Tree expandedKeys={expandedKeys2} canCheck defaultExpandAll checkedKeys={checkedKeys2}> <TreeNode title="parent 1" keys="0"> <TreeNode title="parent 1-0" keys="0-0" checkDisabled> <TreeNode title="leaf" keys="0-0-0" checkDisabled /> <TreeNode title="leaf" keys="0-0-1" /> </TreeNode> <TreeNode title="parent 1-1" keys="0-1"> <TreeNode title={<span style={{ color: '#1890ff' }}>sss</span>} keys="0-1-0" /> </TreeNode> </TreeNode> </Tree>, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('renders basic Tree with not completely TreeNodes children', () => { const wrapper = render( <Tree expandedKeys={expandedKeys2} canCheck defaultExpandAll checkedKeys={checkedKeys2}> <TreeNode title="parent 1" keys="0"> <div><p>invalid element here invalid element here</p></div> <TreeNode title="parent 1-0" keys="0-0" checkDisabled> <TreeNode title="leaf" keys="0-0-0" checkDisabled /> <div>invalid element here invalid element here</div> <TreeNode title="leaf" keys="0-0-1" /> </TreeNode> <TreeNode title="parent 1-1" keys="0-1"> <TreeNode title={<span style={{ color: '#1890ff' }}>sss</span>} keys="0-1-0" /> <span style={{ color: '#1890ff' }}>invalid element here invalid element here</span> </TreeNode> </TreeNode> <div>invalid element here invalid element here <p>invalid element here invalid element here <span> invalid element here invalid element here </span> </p> </div> <i>invalid element here invalid element here</i> <span>invalid element here invalid element here</span> </Tree>, ); expect(toJson(wrapper)).toMatchSnapshot(); }); it('behave correctly when change treeNode checked status', () => { const onCheck = jest.fn(); const wrapper = mount( <Tree treeData={treeData} expandedKeys={expandedKeys} canCheck defaultExpandAll checkedKeys={checkedKeys} onCheck={onCheck} />, ); expect(wrapper.state('checkedKeys')).toEqual(expect.arrayContaining(['0-2-1-1', '0-0-0-0', '0-1-0'])); expect(wrapper.state('halfCheckedKeys')).toEqual(expect.arrayContaining(['0', '0-2-1', '0-2'])); wrapper.find('li[data-keys="0-0-0-1"] .zw-checkbox__input').at(0).simulate('change'); expect(onCheck).toBeCalled(); expect(wrapper.state('checkedKeys')).toEqual(expect.arrayContaining(['0-2-1-1', '0-0-0-0', '0-1-0', '0-0-0-1', '0-0-0', '0-0'])); expect(wrapper.state('halfCheckedKeys')).toEqual(expect.arrayContaining(['0', '0-2-1', '0-2'])); wrapper.find('li[data-keys="0-1"] .zw-checkbox__input').at(0).simulate('change'); expect(onCheck).toBeCalled(); expect(wrapper.state('checkedKeys')).toEqual(expect.arrayContaining(['0-0-0-0', '0-2-1-1', '0-1-0', '0-1', '0-1-1', '0-1-2'])); expect(wrapper.state('halfCheckedKeys')).toEqual(expect.arrayContaining(['0', '0-2-1', '0-2'])); }); it('behave correctly when expand treeNode', () => { const onExpand = jest.fn(); const wrapper = mount( <Tree treeData={treeData} expandedKeys={expandedKeys} canCheck checkedKeys={checkedKeys} onExpand={onExpand} />, ); expect(wrapper.state('expandedKeys')).toEqual(expect.arrayContaining(['0', '0-0-0', '0-0'])); wrapper.find('li[data-keys="0-0-0"] .ui-tree-switcher').at(0).simulate('click'); expect(onExpand).toBeCalled(); wrapper.find('li[data-keys="0-1"] .ui-tree-switcher').at(0).simulate('click'); expect(onExpand).toBeCalled(); }); });