Skip to content

Commit a05aaaf

Browse files
committed
update
1 parent 63e2743 commit a05aaaf

1 file changed

Lines changed: 38 additions & 1 deletion

File tree

tests/basic.test.jsx

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ describe('Trigger.Basic', () => {
216216
act(() => jest.advanceTimersByTime(50));
217217

218218
fireEvent.mouseMove(document, { clientX: 50, clientY: 40 });
219-
act(() => jest.advanceTimersByTime(250));
219+
act(() => jest.advanceTimersByTime(50));
220220

221221
expect(isPopupHidden()).toBeFalsy();
222222

@@ -226,6 +226,43 @@ describe('Trigger.Basic', () => {
226226
expect(isPopupHidden()).toBeFalsy();
227227
});
228228

229+
it('tracks safe hover with mousemove instead of pointermove', () => {
230+
const { container } = render(
231+
<Trigger
232+
action={['hover']}
233+
mouseLeaveDelay={0.1}
234+
popup={<strong>trigger</strong>}
235+
>
236+
<div className="target">hover</div>
237+
</Trigger>,
238+
);
239+
240+
const target = container.querySelector('.target');
241+
242+
fireEvent.mouseEnter(target, { clientX: 50, clientY: 10 });
243+
act(() => jest.runAllTimers());
244+
245+
const popup = document.querySelector('.rc-trigger-popup');
246+
247+
mockRect(target, { left: 0, top: 0, width: 100, height: 20 });
248+
mockRect(popup, { left: 20, top: 60, width: 60, height: 30 });
249+
250+
fireEvent.mouseLeave(target, { clientX: 50, clientY: 20 });
251+
252+
target.getBoundingClientRect.mockClear();
253+
popup.getBoundingClientRect.mockClear();
254+
255+
fireEvent.pointerMove(document, { clientX: 50, clientY: 40 });
256+
257+
expect(target.getBoundingClientRect).not.toHaveBeenCalled();
258+
expect(popup.getBoundingClientRect).not.toHaveBeenCalled();
259+
260+
fireEvent.mouseMove(document, { clientX: 50, clientY: 40 });
261+
262+
expect(target.getBoundingClientRect).toHaveBeenCalledTimes(1);
263+
expect(popup.getBoundingClientRect).toHaveBeenCalledTimes(1);
264+
});
265+
229266
it('closes popup after mouse leaves safe hover area', () => {
230267
const { container } = render(
231268
<Trigger

0 commit comments

Comments
 (0)