Skip to content

Commit 294ab97

Browse files
committed
chore: refactor scroll test for drag-and-drop behavior
1 parent b77332d commit 294ab97

1 file changed

Lines changed: 20 additions & 13 deletions

File tree

tests/scroll.test.js

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -732,9 +732,7 @@ describe('List.Scroll', () => {
732732
jest.useRealTimers();
733733
});
734734

735-
it('should not scroll after drop table text', () => {
736-
737-
// Helper function to select text content of an element
735+
it('should not scroll after dropping selected list text', () => {
738736
const selectElementText = (element) => {
739737
const range = document.createRange();
740738
range.selectNodeContents(element);
@@ -769,8 +767,13 @@ describe('List.Scroll', () => {
769767
const listHolder = container.querySelector('.rc-virtual-list-holder');
770768
if (targetItem && listHolder) {
771769
selectElementText(targetItem);
770+
771+
fireEvent.scroll(listHolder, { target: { scrollTop: 100 } });
772+
expect(onScroll).toHaveBeenCalled();
773+
const scrollCallCountBeforeDrop = onScroll.mock.calls.length;
772774

773-
fireEvent.dragStart(targetItem, { bubbles: true });
775+
const dragStartEvent = new Event('dragstart', { bubbles: true, cancelable: true });
776+
targetItem.ownerDocument.dispatchEvent(dragStartEvent);
774777

775778
const rect = listHolder.getBoundingClientRect();
776779
fireEvent.dragOver(listHolder, {
@@ -783,21 +786,25 @@ describe('List.Scroll', () => {
783786
bubbles: true,
784787
});
785788

786-
fireEvent.dragEnd(targetItem, { bubbles: true });
787-
}
788-
expect(onScroll).not.toHaveBeenCalled();
789-
expect(onDragStart).toHaveBeenCalled();
790-
expect(onDragEnd).toHaveBeenCalled();
789+
const dragEndEvent = new Event('dragend', { bubbles: true, cancelable: true });
790+
targetItem.ownerDocument.dispatchEvent(dragEndEvent);
791791

792-
if (listHolder) {
793-
const rect = listHolder.getBoundingClientRect();
792+
const afterRect = listHolder.getBoundingClientRect();
794793
const mouseMoveEvent = new MouseEvent('mousemove', {
795794
bubbles: true,
796-
clientY: rect.top - 10,
795+
clientY: afterRect.top - 10,
797796
});
798797
listHolder.dispatchEvent(mouseMoveEvent);
798+
act(() => {
799+
jest.advanceTimersByTime(100);
800+
});
801+
expect(onScroll.mock.calls.length).toBe(scrollCallCountBeforeDrop);
799802
}
800-
expect(onScroll).not.toHaveBeenCalled();
803+
expect(onDragStart).toHaveBeenCalled();
804+
expect(onDragEnd).toHaveBeenCalled();
805+
806+
const sel = window.getSelection();
807+
sel && sel.removeAllRanges();
801808

802809
document.removeEventListener('dragstart', onDragStart);
803810
document.removeEventListener('dragend', onDragEnd);

0 commit comments

Comments
 (0)