From 6416bb24a406388c93f6ea7201085b2dd89c2b35 Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Sun, 17 Dec 2023 12:49:06 +0800 Subject: [PATCH] test(components): [tree] filter expand loaded node (#15175) --- .../components/tree/__tests__/tree.test.ts | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/packages/components/tree/__tests__/tree.test.ts b/packages/components/tree/__tests__/tree.test.ts index c79df9cfc5..2019b9f3b3 100644 --- a/packages/components/tree/__tests__/tree.test.ts +++ b/packages/components/tree/__tests__/tree.test.ts @@ -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(