import React from 'react'; import { render, screen } from '@testing-library/react'; import { calcRangeKeys } from '../utils/dictUtil'; import renderSwitcherIcon from '../utils/iconUtil'; describe('Tree util', () => { describe('calcRangeKeys', () => { const treeData = [ { key: '0-0', children: [{ key: '0-0-0' }, { key: '0-0-1' }] }, { key: '0-1', children: [{ key: '0-1-0' }, { key: '0-1-1' }] }, { key: '0-2', children: [ { key: '0-2-0', children: [{ key: '0-2-0-0' }, { key: '0-2-0-1' }, { key: '0-2-0-2' }] }, ], }, ]; it('calc range keys', () => { const rangeKeys = calcRangeKeys({ treeData, expandedKeys: ['0-0', '0-2', '0-2-0'], startKey: '0-2-0-1', endKey: '0-0-0', }); const target = ['0-0-0', '0-0-1', '0-1', '0-2', '0-2-0', '0-2-0-0', '0-2-0-1']; expect(rangeKeys.sort()).toEqual(target.sort()); }); it('return startKey when startKey === endKey', () => { const keys = calcRangeKeys({ treeData, expandedKeys: ['0-0', '0-2', '0-2-0'], startKey: '0-0-0', endKey: '0-0-0', }); expect(keys).toEqual(['0-0-0']); }); it('return empty array without startKey and endKey', () => { const keys = calcRangeKeys({ treeData, expandedKeys: ['0-0', '0-2', '0-2-0'], }); expect(keys).toEqual([]); }); }); describe('renderSwitcherIcon', () => { const prefixCls = 'tree'; it('returns a loading icon when loading', () => { const { container } = render( <>{renderSwitcherIcon(prefixCls, undefined, true, { loading: true })}>, ); expect(container.getElementsByClassName(`${prefixCls}-switcher-loading-icon`)).toHaveLength( 1, ); }); it('returns nothing when node is a leaf without showLine', () => { const { container } = render( <>{renderSwitcherIcon(prefixCls, undefined, false, { loading: false, isLeaf: true })}>, ); expect(container).toBeEmptyDOMElement(); }); it('returns a custom leaf icon when provided', () => { const testId = 'custom-icon'; const customLeafIcon =
; const { container } = render( <> {renderSwitcherIcon( prefixCls, undefined, { showLeafIcon: customLeafIcon }, { loading: false, isLeaf: true }, )} >, ); expect(screen.getByTestId(testId)).toBeVisible(); expect( container.getElementsByClassName(`${prefixCls}-switcher-line-custom-icon`), ).toHaveLength(1); }); it.each([ [`${prefixCls}-switcher-line-icon`, true], [`${prefixCls}-switcher-leaf-line`, false], ])('returns %p element when showLeafIcon is %p', (expectedClassName, showLeafIcon) => { const { container } = render( <> {renderSwitcherIcon( prefixCls, undefined, { showLeafIcon }, { loading: false, isLeaf: true }, )} >, ); expect(container.getElementsByClassName(expectedClassName)).toHaveLength(1); }); }); });