diff --git a/packages/components/tree/__tests__/tree.test.ts b/packages/components/tree/__tests__/tree.test.ts index 2019b9f3b3..0c74ab6c47 100644 --- a/packages/components/tree/__tests__/tree.test.ts +++ b/packages/components/tree/__tests__/tree.test.ts @@ -536,6 +536,100 @@ describe('Tree.vue', () => { expect(treeVm.getCheckedNodes().length).toEqual(0) }) + test('setCheckedNodes with disabled node', async () => { + const nodes = [ + { + id: 1, + label: 'Level one 1', + children: [ + { + id: 4, + label: 'Level two 1-1', + children: [ + { + id: 9, + label: 'Level three 1-1-1', + }, + { + id: 10, + label: 'Level three 1-1-2', + }, + ], + }, + ], + }, + { + id: 2, + label: 'Level one 2', + children: [ + { + id: 5, + disabled: true, + label: 'Level two 2-1', + }, + { + id: 6, + label: 'Level two 2-2', + }, + ], + }, + { + id: 3, + label: 'Level one 3', + children: [ + { + id: 7, + label: 'Level two 3-1', + }, + { + id: 8, + label: 'Level two 3-2', + }, + ], + }, + ] + const wrapper = mount( + Object.assign({ + components: { + 'el-tree': Tree, + }, + template: ` + + `, + data() { + return { + data: nodes, + defaultProps: { + children: 'children', + label: 'label', + }, + } + }, + }) + ) + const treeWrapper = wrapper.findComponent(Tree) + const treeVm = treeWrapper.vm as InstanceType + expect(treeVm.getCheckedNodes().length).toEqual(0) + + function flattenTree(data) { + const result = [] + + function flatten(node) { + result.push(node) + if (node?.children?.length) { + node.children.forEach(flatten) + } + } + + data.forEach(flatten) + return result + } + const list = flattenTree(nodes).filter((item) => !item.disabled) + + treeVm.setCheckedNodes(list) + expect(treeVm.getCheckedNodes().length).toEqual(8) + }) + test('setCheckedKeys', async () => { const { wrapper } = getTreeVm( `:props="defaultProps" show-checkbox node-key="id"`