Skip to content

Commit 6b889e7

Browse files
authored
test: fix align count test (#373)
* test: fix align count test * test: fix motion related test * test: fix test case
1 parent 6223b32 commit 6b889e7

File tree

2 files changed

+39
-28
lines changed

2 files changed

+39
-28
lines changed

tests/basic.test.jsx

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ describe('Trigger.Basic', () => {
162162
});
163163

164164
describe('afterPopupVisibleChange can be triggered', () => {
165-
it('uncontrolled', () => {
165+
it('uncontrolled', async () => {
166166
let triggered = 0;
167167
const { container } = render(
168168
<Trigger
@@ -178,22 +178,23 @@ describe('Trigger.Basic', () => {
178178
);
179179

180180
trigger(container, '.target');
181+
182+
await awaitFakeTimer();
183+
181184
expect(triggered).toBe(1);
182185
});
183186

184-
it('controlled', () => {
185-
const demoRef = createRef();
187+
it('controlled', async () => {
186188
let triggered = 0;
187189

188-
class Demo extends React.Component {
189-
state = {
190-
visible: false,
191-
};
190+
const Demo = () => {
191+
const [visible, setVisible] = React.useState(false);
192192

193-
render() {
194-
return (
193+
return (
194+
<>
195+
<button onClick={() => setVisible((v) => !v)} />
195196
<Trigger
196-
popupVisible={this.state.visible}
197+
popupVisible={visible}
197198
popupAlign={placementAlignMap.left}
198199
afterPopupVisibleChange={() => {
199200
triggered += 1;
@@ -202,21 +203,18 @@ describe('Trigger.Basic', () => {
202203
>
203204
<div className="target">click</div>
204205
</Trigger>
205-
);
206-
}
207-
}
206+
</>
207+
);
208+
};
208209

209-
render(<Demo ref={demoRef} />);
210-
act(() => {
211-
demoRef.current.setState({ visible: true });
212-
jest.runAllTimers();
213-
});
210+
const { container } = render(<Demo />);
211+
212+
fireEvent.click(container.querySelector('button'));
213+
await awaitFakeTimer();
214214
expect(triggered).toBe(1);
215215

216-
act(() => {
217-
demoRef.current.setState({ visible: false });
218-
jest.runAllTimers();
219-
});
216+
fireEvent.click(container.querySelector('button'));
217+
await awaitFakeTimer();
220218
expect(triggered).toBe(2);
221219
});
222220
});
@@ -850,8 +848,10 @@ describe('Trigger.Basic', () => {
850848
expect(errorSpy).not.toHaveBeenCalled();
851849
errorSpy.mockRestore();
852850
});
851+
853852
it('should trigger align when popupAlign had updated', async () => {
854853
const onPopupAlign = jest.fn();
854+
855855
const App = () => {
856856
const [placementAlign, setPlacementAlign] = React.useState(
857857
placementAlignMap.leftTop,
@@ -892,16 +892,21 @@ describe('Trigger.Basic', () => {
892892
);
893893
};
894894
render(<App />);
895+
896+
// CSSMotion will trigger `onPrepare` even when motion not support
897+
// Which means align will trigger twice on `prepare` & `visibleChanged`
895898
await awaitFakeTimer();
896-
expect(onPopupAlign).toHaveBeenCalledTimes(1);
899+
expect(onPopupAlign).toHaveBeenCalledTimes(2);
897900
fireEvent.click(document.querySelector('#btn'));
901+
898902
await awaitFakeTimer();
899-
expect(onPopupAlign).toHaveBeenCalledTimes(2);
903+
expect(onPopupAlign).toHaveBeenCalledTimes(3);
904+
900905
fireEvent.click(document.querySelector('#close'));
901906
await awaitFakeTimer();
902907
fireEvent.click(document.querySelector('#btn'));
903908
await awaitFakeTimer();
904-
expect(onPopupAlign).toHaveBeenCalledTimes(2);
909+
expect(onPopupAlign).toHaveBeenCalledTimes(3);
905910
});
906911

907912
it('popupVisible switch `undefined` and `false` should work', async () => {

tests/flip.test.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,15 @@ import Trigger from '../src';
66
import { getVisibleArea } from '../src/util';
77

88
const flush = async () => {
9-
await act(async () => {
10-
await Promise.resolve();
11-
});
9+
for (let i = 0; i < 10; i += 1) {
10+
act(() => {
11+
jest.runAllTimers();
12+
});
13+
14+
await act(async () => {
15+
await Promise.resolve();
16+
});
17+
}
1218
};
1319

1420
const builtinPlacements = {

0 commit comments

Comments
 (0)