Skip to content

Commit c0f3d56

Browse files
committed
test: part of test
1 parent e90494a commit c0f3d56

2 files changed

Lines changed: 49 additions & 36 deletions

File tree

tests/Select.checkable.spec.tsx

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { fireEvent, render } from '@testing-library/react';
33
import { mount } from 'enzyme';
44
import React from 'react';
55
import TreeSelect, { SHOW_ALL, SHOW_PARENT, TreeNode } from '../src';
6+
import { clearSelection, search, selectNode } from './util';
67

78
describe('TreeSelect.checkable', () => {
89
it('allow clear when controlled', () => {
@@ -209,7 +210,7 @@ describe('TreeSelect.checkable', () => {
209210
expect(wrapper.getSelection()).toHaveLength(0);
210211
});
211212

212-
it('clear selected value and input value', () => {
213+
it('clear selected value and input value', async () => {
213214
const treeData = [
214215
{
215216
key: '0',
@@ -218,7 +219,7 @@ describe('TreeSelect.checkable', () => {
218219
},
219220
];
220221

221-
const wrapper = mount(
222+
const { container } = render(
222223
<TreeSelect
223224
treeData={treeData}
224225
treeCheckable
@@ -382,7 +383,7 @@ describe('TreeSelect.checkable', () => {
382383
},
383384
];
384385

385-
const wrapper = mount(
386+
const { container } = render(
386387
<TreeSelect
387388
treeCheckable
388389
treeData={treeData}
@@ -393,8 +394,8 @@ describe('TreeSelect.checkable', () => {
393394
/>,
394395
);
395396

396-
wrapper.search('0-0');
397-
wrapper.selectNode(0);
397+
search(container, '0-0');
398+
selectNode(0);
398399
expect(onChange).toHaveBeenCalledWith(['0-1-0', '0-1-2'], expect.anything(), expect.anything());
399400
});
400401

@@ -420,7 +421,7 @@ describe('TreeSelect.checkable', () => {
420421
it('uncontrolled', () => {
421422
const onChange = jest.fn();
422423

423-
const wrapper = mount(
424+
const { container } = render(
424425
<TreeSelect
425426
treeCheckable
426427
treeData={treeData}
@@ -430,15 +431,14 @@ describe('TreeSelect.checkable', () => {
430431
/>,
431432
);
432433

433-
wrapper.search('0-0-1');
434-
wrapper.selectNode(1);
434+
search(container, '0-0-1');
435+
selectNode(1);
435436
expect(onChange).toHaveBeenCalledWith(['0-0-1'], expect.anything(), expect.anything());
436437

437438
expect(
438-
wrapper
439-
.find('.rc-tree-select-tree-checkbox')
440-
.at(0)
441-
.hasClass('rc-tree-select-tree-checkbox-indeterminate'),
439+
container
440+
.querySelectorAll('.rc-tree-select-tree-checkbox')[0]
441+
.classList.contains('rc-tree-select-tree-checkbox-indeterminate'),
442442
).toBeTruthy();
443443
});
444444

@@ -471,25 +471,29 @@ describe('TreeSelect.checkable', () => {
471471
}
472472
}
473473

474-
const wrapper = mount(<Test />);
474+
const { container } = render(<Test />);
475475

476-
wrapper.search('0-0-1');
477-
wrapper.selectNode(1);
476+
search(container, '0-0-1');
477+
selectNode(1);
478478
expect(onChange).toHaveBeenCalled();
479479

480480
expect(
481-
wrapper
482-
.find('.rc-tree-select-tree-checkbox')
483-
.at(0)
484-
.hasClass('rc-tree-select-tree-checkbox-indeterminate'),
481+
container
482+
.querySelectorAll('.rc-tree-select-tree-checkbox')[0]
483+
.classList.contains('rc-tree-select-tree-checkbox-indeterminate'),
485484
).toBe(true);
486485
});
487486
});
488487

489488
describe('labelInValue', () => {
490489
it('basic', () => {
491490
const wrapper = mount(
492-
<TreeSelect treeCheckable showCheckedStrategy="SHOW_PARENT" labelInValue value={[{ value: '0-0' }]}>
491+
<TreeSelect
492+
treeCheckable
493+
showCheckedStrategy="SHOW_PARENT"
494+
labelInValue
495+
value={[{ value: '0-0' }]}
496+
>
493497
<TreeNode key="0-0" value="0-0" title="0-0">
494498
<TreeNode key="0-0-0" value="0-0-0" title="0-0-0" />
495499
</TreeNode>
@@ -540,26 +544,26 @@ describe('TreeSelect.checkable', () => {
540544
it('extra.allCheckedNodes', () => {
541545
const onChange = jest.fn();
542546

543-
const wrapper = mount(
547+
const { container } = render(
544548
<TreeSelect open multiple treeCheckable onChange={onChange}>
545549
<TreeNode key="0-0" value="0-0" title="0-0" />
546550
</TreeSelect>,
547551
);
548552

549553
// Just click
550-
wrapper.selectNode();
554+
selectNode();
551555
expect(onChange.mock.calls[0][2].allCheckedNodes).toEqual([
552556
expect.objectContaining({
553557
pos: '0-0',
554558
}),
555559
]);
556560

557-
wrapper.clearSelection(0);
561+
clearSelection(container, 0);
558562
onChange.mockReset();
559563

560564
// By search
561-
wrapper.search('0');
562-
wrapper.selectNode();
565+
search(container, '0');
566+
selectNode();
563567
expect(onChange.mock.calls[0][2].allCheckedNodes).toEqual([
564568
expect.objectContaining({
565569
pos: '0-0',
@@ -608,7 +612,7 @@ describe('TreeSelect.checkable', () => {
608612

609613
const onChange = jest.fn();
610614

611-
const wrapper = mount(
615+
const { container } = render(
612616
<TreeSelect
613617
open
614618
defaultValue={[{ value: '0-1' }]}
@@ -620,8 +624,8 @@ describe('TreeSelect.checkable', () => {
620624
/>,
621625
);
622626

623-
wrapper.search('0-0-0');
624-
wrapper.selectNode(1);
627+
search(container, '0-0-0');
628+
selectNode(1);
625629

626630
expect(onChange.mock.calls[0][0]).toEqual([
627631
{ label: 'Node2', value: '0-1' },
@@ -639,15 +643,17 @@ describe('TreeSelect.checkable', () => {
639643
},
640644
];
641645

642-
const wrapper = mount(<TreeSelect defaultValue={['0-0']} treeData={treeData} treeCheckable />);
646+
const { container } = render(
647+
<TreeSelect defaultValue={['0-0']} treeData={treeData} treeCheckable />,
648+
);
643649

644-
expect(wrapper.getSelection().length).toBeTruthy();
645-
expect(wrapper.find('.rc-tree-select-selection-item-remove').length).toBeFalsy();
650+
expect(container.querySelectorAll('.rc-tree-select-selection-item').length).toBeTruthy();
651+
expect(container.querySelectorAll('.rc-tree-select-selection-item-remove').length).toBeFalsy();
646652
});
647653

648654
it('treeCheckStrictly can set halfChecked', () => {
649655
const onChange = jest.fn();
650-
const wrapper = mount(
656+
const { container } = render(
651657
<TreeSelect
652658
treeCheckStrictly
653659
treeCheckable
@@ -662,17 +668,19 @@ describe('TreeSelect.checkable', () => {
662668
);
663669

664670
function getTreeNode(index) {
665-
return wrapper.find('.rc-tree-select-tree-treenode').not('[aria-hidden]').at(index);
671+
const treeNodes = container.querySelectorAll('.rc-tree-select-tree-treenode');
672+
const visibleNodes = Array.from(treeNodes).filter(node => !node.hasAttribute('aria-hidden'));
673+
return visibleNodes[index];
666674
}
667675

668676
expect(
669-
getTreeNode(0).hasClass('rc-tree-select-tree-treenode-checkbox-indeterminate'),
677+
getTreeNode(0).classList.contains('rc-tree-select-tree-treenode-checkbox-indeterminate'),
670678
).toBeTruthy();
671679
expect(
672-
getTreeNode(1).hasClass('rc-tree-select-tree-treenode-checkbox-indeterminate'),
680+
getTreeNode(1).classList.contains('rc-tree-select-tree-treenode-checkbox-indeterminate'),
673681
).toBeFalsy();
674682

675-
wrapper.selectNode(1);
683+
selectNode(1);
676684
expect(onChange).toHaveBeenCalledWith(
677685
[
678686
{

tests/util.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,8 @@ export function search(element: HTMLElement, value: string) {
3636
jest.advanceTimersByTime(10000);
3737
});
3838
}
39+
40+
export function clearSelection(element: HTMLElement, index = 0) {
41+
const removeButton = element.querySelectorAll('.rc-tree-select-selection-item-remove')[index];
42+
fireEvent.click(removeButton);
43+
}

0 commit comments

Comments
 (0)