Skip to content

Commit a46ec6b

Browse files
committed
docs: Add max overflow test
1 parent 60fe493 commit a46ec6b

File tree

5 files changed

+63
-7
lines changed

5 files changed

+63
-7
lines changed

examples/blink.tsx

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ import Overflow from '../src';
33
import '../assets/index.less';
44
import './common.less';
55

6+
const overflowSharedStyle: React.CSSProperties = {
7+
background: 'rgba(0, 255, 0, 0.1)',
8+
};
9+
610
interface ItemType {
711
value: string | number;
812
label: string;
@@ -37,6 +41,7 @@ function renderRest(items: ItemType[]) {
3741
}
3842

3943
const data = createData(5);
44+
const data2 = createData(2);
4045

4146
const Demo = () => {
4247
return (
@@ -46,13 +51,22 @@ const Demo = () => {
4651
</p>
4752
<div
4853
style={{
49-
boxShadow: '0 0 1px green',
50-
maxWidth: 300,
54+
border: '10px solid green',
5155
marginTop: 32,
56+
display: 'inline-block',
5257
}}
5358
>
5459
<Overflow<ItemType>
5560
data={data}
61+
style={{ width: 300, ...overflowSharedStyle }}
62+
renderItem={renderItem}
63+
renderRest={renderRest}
64+
maxCount="responsive"
65+
/>
66+
67+
<Overflow<ItemType>
68+
data={data2}
69+
style={{ width: 180, ...overflowSharedStyle }}
5670
renderItem={renderItem}
5771
renderRest={renderRest}
5872
maxCount="responsive"

src/Overflow.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ function Overflow<ItemType = any>(
4242
} = props;
4343

4444
const createUseState = useBatchFrameState();
45-
// const disabled = maxCount !== RESPONSIVE;
4645

4746
const [containerWidth, setContainerWidth] = createUseState(0);
4847
const [itemWidths, setItemWidths] = createUseState(

tests/responsive.spec.tsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,47 @@ describe('Overflow.Responsive', () => {
3838

3939
wrapper.initSize(100, 20); // [0][1][2][3][4][+2](5)(6)
4040
expect(wrapper.findItems()).toHaveLength(6);
41+
[true, true, true, true, false, false].forEach((display, i) => {
42+
expect(wrapper.findItems().at(i).props().display).toBe(display);
43+
});
4144
expect(wrapper.findRest()).toHaveLength(1);
4245
expect(wrapper.findRest().text()).toEqual('+ 2 ...');
4346
});
47+
48+
it('remove to clean up', () => {
49+
const data = getData(6);
50+
51+
const wrapper = mount(
52+
<Overflow<ItemType>
53+
data={data}
54+
itemKey="key"
55+
renderItem={renderItem}
56+
maxCount="responsive"
57+
/>,
58+
);
59+
wrapper.initSize(100, 20);
60+
61+
// Remove one
62+
const newData = [...data];
63+
newData.splice(1, 1);
64+
wrapper.setProps({ data: newData });
65+
66+
expect(wrapper.findItems()).toHaveLength(5);
67+
expect(wrapper.findRest().text()).toEqual('+ 1 ...');
68+
});
69+
70+
it('none to overflow', () => {
71+
const wrapper = mount(
72+
<Overflow<ItemType>
73+
data={getData(5)}
74+
itemKey="key"
75+
renderItem={renderItem}
76+
maxCount="responsive"
77+
/>,
78+
);
79+
80+
wrapper.initSize(100, 20);
81+
expect(wrapper.findItems()).toHaveLength(5);
82+
expect(wrapper.findRest().props().display).toBeFalsy();
83+
});
4484
});

tests/setup.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const Adapter = require('enzyme-adapter-react-16');
33
const { act } = require('react-dom/test-utils');
44
require('regenerator-runtime/runtime');
55

6-
window.requestAnimationFrame = (func) => {
6+
window.requestAnimationFrame = func => {
77
window.setTimeout(func, 16);
88
};
99

@@ -12,7 +12,10 @@ Enzyme.configure({ adapter: new Adapter() });
1212
Object.assign(Enzyme.ReactWrapper.prototype, {
1313
triggerResize(clientWidth) {
1414
act(() => {
15-
this.find('ResizeObserver').first().props().onResize({}, { clientWidth });
15+
this.find('ResizeObserver')
16+
.first()
17+
.props()
18+
.onResize({}, { clientWidth });
1619
jest.runAllTimers();
1720
this.update();
1821
});
@@ -36,7 +39,7 @@ Object.assign(Enzyme.ReactWrapper.prototype, {
3639
},
3740
findItems() {
3841
return this.find('Item').filterWhere(
39-
(item) => item.props().className !== 'rc-overflow-item-rest',
42+
item => item.props().className !== 'rc-overflow-item-rest',
4043
);
4144
},
4245
findRest() {

tests/wrapper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { mount as enzymeMount, ReactWrapper } from 'enzyme';
22

33
export type MountParam = Parameters<typeof enzymeMount>;
44

5-
export interface WrapperType extends ReactWrapper {
5+
export interface WrapperType extends ReactWrapper<any, any> {
66
triggerResize: (offsetWidth: number) => WrapperType;
77
triggerItemResize: (index: number, offsetWidth: number) => WrapperType;
88
initSize: (width: number, itemWidth: number) => WrapperType;

0 commit comments

Comments
 (0)