element3
Version:
A Component Library for Vue3
239 lines (211 loc) • 7 kB
JavaScript
import { TreeNode } from '../../entity/TreeNode'
describe('TreeNode.js', () => {
it('test init options', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(
112,
'root-1-2',
[
new TreeNode(1121, 'root-1-2-1'),
new TreeNode(1122, 'root-1-2-2'),
new TreeNode(1123, 'root-1-2-3')
],
{ isChecked: true, isExpanded: true }
)
]),
new TreeNode(12, 'root-2', [], { isExpanded: true, isChecked: true })
])
expect(treeNode.findOne(11).isExpanded).toBeTruthy()
expect(treeNode.findOne(11).isChecked).toBeTruthy()
expect(treeNode.findOne(11).isIndeterminate).toBeTruthy()
expect(treeNode.findOne(1122).isChecked).toBeTruthy()
expect(treeNode.findOne(1122).isIndeterminate).toBeFalsy()
expect(treeNode.isExpanded).toBeTruthy()
expect(treeNode.isChecked).toBeTruthy()
expect(treeNode.isIndeterminate).toBeFalsy()
})
it('test find node', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2')
])
const node12 = treeNode.findOne(12)
expect(node12.label).toBe('root-2')
const nodes = treeNode.findMany('root-1')
expect(nodes).toHaveLength(3)
})
it('append a node', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2')
])
treeNode.appendChild(new TreeNode(13, 'root-3'))
expect(treeNode.findOne(13)).toBeTruthy()
})
it('insert a node', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2')
])
treeNode.insertChild(1, new TreeNode(10, 'root-0'))
expect(treeNode.findOne(10)).toBeTruthy()
})
it('remove a node', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2')
])
const oldLen = treeNode.childNodes.length
treeNode.removeChild(1)
expect(treeNode.childNodes).toHaveLength(oldLen - 1)
})
it('get root', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2')
])
const node112 = treeNode.findOne(112)
expect(node112.root).toBe(treeNode)
})
it('set checked', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2')
])
const node111 = treeNode.findOne(111)
node111.setChecked(true)
expect(node111.isChecked).toBeTruthy()
expect(node111.parent.isIndeterminate).toBeTruthy()
expect(node111.root.isIndeterminate).toBeTruthy()
const node112 = treeNode.findOne(112)
node112.setChecked(true)
expect(node112.isChecked).toBeTruthy()
expect(node112.parent.isChecked).toBeTruthy()
expect(node112.parent.isIndeterminate).toBeFalsy()
expect(node112.root.isIndeterminate).toBeTruthy()
})
it('test expand', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2')
])
const node111 = treeNode.findOne(111)
node111.expand()
expect(node111.isExpanded).toBeTruthy()
expect(node111.root.isExpanded).toBeTruthy()
})
it('separation a node', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2')
])
const node11 = treeNode.findOne(11)
node11.separation()
expect(node11.parent).toBe(null)
expect(treeNode.findOne(11)).toBe(null)
expect(treeNode.childNodes).toHaveLength(1)
expect(node11.childNodes).toHaveLength(2)
})
it('move a node', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2')
])
const node11 = treeNode.findOne(11)
expect(node11.move(treeNode.findOne(12), 'bottom')).toBeTruthy()
expect(node11.move(treeNode.findOne(12), 'inner')).toBeTruthy()
expect(treeNode.childNodes).toHaveLength(1)
expect(treeNode.findOne(12).childNodes).toHaveLength(1)
})
it('async load data', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2', [], {
isAsync: true,
asyncLoadFn: (node, resolve) => {
expect(node.asyncState).toBe('loading')
setTimeout(() => {
expect(node === treeNode.findOne(12)).toBeTruthy()
resolve([
new TreeNode(121, '异步加载的节点'),
new TreeNode(122, '异步加载的节点')
])
expect(node.asyncState).toBe('loaded')
expect(node.childNodes).toHaveLength(2)
}, 1)
}
})
])
const node12 = treeNode.findOne(12)
expect(node12.isLeaf).toBeFalsy()
expect(node12.asyncState).toBe('notload')
node12.loadAsync()
})
it('collapse', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2')
])
const node11 = treeNode.findOne(11)
const node12 = treeNode.findOne(12)
node11.collapse()
expect(node11.isExpanded).toBeTruthy()
expect(node12.isExpanded).toBeFalsy()
node12.collapse()
expect(node11.isExpanded).toBeFalsy()
expect(node12.isExpanded).toBeTruthy()
})
it('filter', () => {
const treeNode = new TreeNode(1, 'root', [
new TreeNode(11, 'root-1', [
new TreeNode(111, 'root-1-1'),
new TreeNode(112, 'root-1-2')
]),
new TreeNode(12, 'root-2')
])
const node111 = treeNode.findOne(111)
const node112 = treeNode.findOne(112)
const node12 = treeNode.findOne(12)
treeNode.filter((node) => {
return node === node111
})
expect(node111.isVisable).toBeTruthy()
expect(node112.isVisable).toBeFalsy()
expect(node12.isVisable).toBeFalsy()
})
})