@@ -18,8 +18,8 @@ describe('react-draggable', function () {
1818
1919 afterEach ( function ( ) {
2020 try {
21- ReactDOM . findDOMNode ( drag ) ;
22- drag . componentWillUnmount ( ) ;
21+ React . unmountComponentAtNode ( React . findDOMNode ( drag ) . parentNode ) ;
22+ // TestUtils.Simulate.mouseUp(ReactDOM.findDOMNode(drag) );
2323 } catch ( e ) { return ; }
2424 } ) ;
2525
@@ -325,6 +325,32 @@ describe('react-draggable', function () {
325325 TestUtils . Simulate . mouseUp ( ReactDOM . findDOMNode ( drag ) ) ;
326326 expect ( drag . state . dragging ) . toEqual ( false ) ;
327327 } ) ;
328+
329+ it ( 'should modulate position on scroll' , function ( done ) {
330+ // This test fails in karma under PhantomJS & Firefox, scroll event quirks
331+ var is_chrome = navigator . userAgent . toLowerCase ( ) . indexOf ( 'chrome' ) > - 1 ;
332+ if ( ! is_chrome ) return done ( ) ;
333+
334+ var dragCalled = false ;
335+
336+ function onDrag ( e , coreEvent ) {
337+ expect ( coreEvent . deltaY ) . toEqual ( 500 ) ;
338+ dragCalled = true ;
339+ }
340+ drag = TestUtils . renderIntoDocument ( < Draggable onDrag = { onDrag } > < div /> </ Draggable > ) ;
341+ var node = ReactDOM . findDOMNode ( drag ) ;
342+
343+ TestUtils . Simulate . mouseDown ( ReactDOM . findDOMNode ( drag ) ) ; // start drag so window listener is up
344+ expect ( drag . state . dragging ) . toEqual ( true ) ;
345+
346+ document . body . style . height = '10000px' ;
347+ window . scrollTo ( 0 , 500 ) ;
348+ setTimeout ( function ( ) {
349+ expect ( dragCalled ) . toEqual ( true ) ;
350+ expect ( drag . state . clientY ) . toEqual ( 500 ) ;
351+ done ( ) ;
352+ } , 0 ) ;
353+ } ) ;
328354 } ) ;
329355
330356 describe ( 'validation' , function ( ) {
0 commit comments