Skip to content

Commit 66b5c64

Browse files
committed
fix test case
1 parent 4c0916c commit 66b5c64

File tree

4 files changed

+27
-16
lines changed

4 files changed

+27
-16
lines changed

docs/examples/showSizeChanger.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import Select from 'rc-select';
44
import '../../assets/index.less';
55

66
export default () => {
7-
const pageSizeOnChange = (value) => {
7+
const onPageSizeOnChange = (value) => {
88
console.log(value);
99
};
1010

@@ -32,9 +32,8 @@ export default () => {
3232
{ value: '25', label: '25 条每页' },
3333
{ value: '100', label: '100 条每页' },
3434
],
35-
className: 'my-select',
36-
showSearch: true,
37-
onChange: pageSizeOnChange,
35+
showSearch: false,
36+
onChange: onPageSizeOnChange,
3837
}}
3938
/>
4039
</>

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
"@rc-component/father-plugin": "^1.0.0",
5151
"@testing-library/jest-dom": "^6.1.5",
5252
"@testing-library/react": "^15.0.4",
53+
"@testing-library/user-event": "^14.5.2",
5354
"@types/jest": "^29.2.2",
5455
"@types/react": "^18.0.0",
5556
"@types/react-dom": "^18.0.0",

src/Options.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,11 @@ const Options: React.FC<OptionsProps> = (props) => {
6060
? buildOptionText
6161
: (value: string) => `${value} ${locale.items_per_page}`;
6262

63-
const changeSizeHandle = (value: number) => {
63+
const changeSizeHandle = (value: number, option) => {
6464
changeSize?.(Number(value));
65+
if (typeof showSizeChanger === 'object') {
66+
showSizeChanger.onChange?.(value, option);
67+
}
6568
};
6669

6770
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
@@ -145,7 +148,6 @@ const Options: React.FC<OptionsProps> = (props) => {
145148
optionLabelProp={showSizeChangerOptions ? 'label' : 'children'}
146149
popupMatchSelectWidth={false}
147150
value={(pageSize || pageSizeOptions[0]).toString()}
148-
onChange={changeSizeHandle}
149151
getPopupContainer={(triggerNode) => triggerNode.parentNode}
150152
aria-label={locale.page_size}
151153
defaultOpen={false}
@@ -155,6 +157,7 @@ const Options: React.FC<OptionsProps> = (props) => {
155157
showSizeChangerClassName,
156158
)}
157159
options={showSizeChangerOptions}
160+
onChange={changeSizeHandle}
158161
>
159162
{options}
160163
</Select>

tests/showSizeChanger.test.tsx

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import React from 'react';
22
import { render, fireEvent } from '@testing-library/react';
3+
import userEvent from '@testing-library/user-event';
34
import Select from 'rc-select';
45
import Pagination from '../src';
56

6-
const onChange = jest.fn();
7-
87
const options = [
98
{ value: '10', label: '10 条每页' },
109
{ value: '25', label: '25 条每页' },
@@ -15,14 +14,14 @@ const options = [
1514

1615
describe('Pagination with showSizeChanger', () => {
1716
it('should onChange called when pageSize change', () => {
17+
const onChange = jest.fn();
1818
const { container, getByRole } = render(
1919
<Pagination
2020
defaultCurrent={1}
2121
total={500}
2222
selectComponentClass={Select}
2323
showSizeChanger={{
2424
options,
25-
showSearch: false,
2625
onChange,
2726
}}
2827
/>,
@@ -33,27 +32,32 @@ describe('Pagination with showSizeChanger', () => {
3332
expect(container.querySelectorAll('.rc-select-item')[2]).toHaveTextContent(
3433
'50 条每页',
3534
);
36-
const pageSize1 = container.querySelectorAll('.rc-select-item')[0];
37-
expect(pageSize1).toBeInTheDocument();
35+
const pageSize1 = container.querySelectorAll('.rc-select-item')[1];
3836
fireEvent.click(pageSize1);
37+
expect(onChange).toHaveBeenCalledWith('25', {
38+
label: '25 条每页',
39+
value: '25',
40+
});
3941
});
4042

41-
it('should onChange called when pageSize change with search', () => {
43+
it('should onChange called when pageSize change with search', async () => {
44+
const onChange = jest.fn();
4245
const { container } = render(
4346
<Pagination
4447
defaultCurrent={1}
4548
total={500}
4649
selectComponentClass={Select}
4750
showSizeChanger={{
4851
options,
49-
showSearch: false,
52+
showSearch: true,
5053
onChange,
5154
}}
5255
/>,
5356
);
54-
fireEvent.change(container.querySelector('input'), {
55-
target: { value: '25' },
56-
});
57+
expect(container.querySelector('input').hasAttribute('readOnly')).toBe(
58+
false,
59+
);
60+
await userEvent.type(container.querySelector('input'), '25');
5761
expect(
5862
container.querySelectorAll('.rc-select-item-option-content'),
5963
).toHaveLength(1);
@@ -63,5 +67,9 @@ describe('Pagination with showSizeChanger', () => {
6367
const pageSize1 = container.querySelector('.rc-select-item-option-content');
6468
expect(pageSize1).toBeInTheDocument();
6569
fireEvent.click(pageSize1);
70+
expect(onChange).toHaveBeenCalledWith('25', {
71+
label: '25 条每页',
72+
value: '25',
73+
});
6674
});
6775
});

0 commit comments

Comments
 (0)