test(components): [tree] filter expand loaded node (#15175)

This commit is contained in:
btea
2023-12-17 12:49:06 +08:00
committed by GitHub
parent d408533ca8
commit 6416bb24a4

View File

@@ -3,6 +3,7 @@ import { nextTick } from 'vue'
import { mount } from '@vue/test-utils'
import { describe, expect, test, vi } from 'vitest'
import defineGetter from '@element-plus/test-utils/define-getter'
import sleep from '@element-plus/test-utils/sleep'
import Tree from '../src/tree.vue'
import Button from '../../button/src/button.vue'
import type Node from '../src/model/node'
@@ -326,6 +327,82 @@ describe('Tree.vue', () => {
await nextTick()
expect(treeWrapper.findAll('.el-tree-node.is-hidden').length).toEqual(3)
})
test('lazy load with filter expand loaded node', async () => {
const { wrapper } = getTreeVm(
`:props="defaultProps" lazy :load="loadNode" :filter-node-method="filterNode"`,
{
methods: {
loadNode(node, resolve) {
if (node.level === 0) {
return resolve([{ label: 'a', id: 'a', type: 'root' }])
}
if (node.data.type === 'root') {
return resolve([
{
label: 'node1',
id: 'node1',
type: 'node',
},
{
label: 'node2',
id: 'node2',
type: 'node',
},
])
}
if (node.data.type === 'node') {
return resolve([
{
label: `${node.data.label}-child1`,
id: `${node.data.label}-child1`,
type: 'item',
leaf: true,
},
{
label: `${node.data.label}-child2`,
id: `${node.data.label}-child2`,
type: 'item',
leaf: true,
},
])
}
resolve([])
},
filterNode(value, data) {
if (!value) return true
return data.label.includes(value)
},
},
}
)
let nodeWrappers = wrapper.findAll('.el-tree-node__content')
expect(nodeWrappers.length).toEqual(1)
nodeWrappers[0].trigger('click')
await sleep()
nodeWrappers = wrapper.findAll('.el-tree-node__content')
expect(nodeWrappers.length).toEqual(3)
nodeWrappers[1].trigger('click')
nodeWrappers[2].trigger('click')
await sleep()
nodeWrappers = wrapper.findAll('.el-tree-node__content')
expect(nodeWrappers.length).toEqual(7)
expect(wrapper.findAll('.is-expanded').length).toEqual(3)
// collapse node
const rootNode = nodeWrappers[0]
rootNode.trigger('click')
await sleep()
expect(rootNode.element.parentNode.getAttribute('aria-expanded')).toEqual(
'false'
)
// filter
wrapper.findComponent(Tree).vm.filter('1')
await sleep()
expect(rootNode.element.parentNode.getAttribute('aria-expanded')).toEqual(
'true'
)
})
test('autoExpandParent = true', async () => {
const { wrapper } = getTreeVm(