@@ -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