-
-
Notifications
You must be signed in to change notification settings - Fork 453
/
Field.test.tsx
78 lines (65 loc) · 2.15 KB
/
Field.test.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import { mount } from 'enzyme';
import { act } from 'react-dom/test-utils';
import * as React from 'react';
import Select from '../src';
import type { SelectProps } from '../src';
import { injectRunAllTimers } from './utils/common';
describe('Select.Field', () => {
injectRunAllTimers(jest);
beforeEach(() => {
jest.useFakeTimers();
});
afterEach(() => {
jest.useRealTimers();
});
const OPTION_1 = { bambooLabel: 'Light', bambooValue: 'light' };
const OPTION_2 = { bambooLabel: 'Little', bambooValue: 'little' };
function mountSelect(props?: Partial<SelectProps<any>>) {
return mount(
<Select
open
options={
[
{
bambooLabel: 'Bamboo',
bambooChildren: [OPTION_1, OPTION_2],
},
] as any
}
fieldNames={{
label: 'bambooLabel',
value: 'bambooValue',
options: 'bambooChildren',
}}
{...props}
/>,
);
}
it('fieldNames should work', () => {
const onChange = jest.fn();
const onSelect = jest.fn();
const wrapper = mountSelect({ onChange, onSelect });
act(() => {
jest.runAllTimers();
});
// Label match
expect(wrapper.find('.rc-select-item-group').text()).toEqual('Bamboo');
expect(wrapper.find('.rc-select-item-option').first().text()).toEqual('Light');
expect(wrapper.find('.rc-select-item-option').last().text()).toEqual('Little');
// Click
wrapper.find('.rc-select-item-option-content').last().simulate('click');
expect(onChange).toHaveBeenCalledWith('little', OPTION_2);
expect(onSelect).toHaveBeenCalledWith('little', OPTION_2);
});
it('multiple', () => {
const onChange = jest.fn();
const wrapper = mountSelect({ mode: 'multiple', onChange });
// First one
wrapper.find('.rc-select-item-option-content').first().simulate('click');
expect(onChange).toHaveBeenCalledWith(['light'], [OPTION_1]);
// Last one
onChange.mockReset();
wrapper.find('.rc-select-item-option-content').last().simulate('click');
expect(onChange).toHaveBeenCalledWith(['light', 'little'], [OPTION_1, OPTION_2]);
});
});