@@ -763,25 +763,50 @@ angular.mock.animate = angular.module('ngAnimateMock', ['ng'])
763763 return reflowFn ;
764764 } ) ;
765765
766- $provide . decorator ( '$animate' , [ '$delegate' , '$timeout' , '$browser' , '$$rAF' , '$$forceReflow' ,
767- function ( $delegate , $timeout , $browser , $$rAF , $$forceReflow ) {
766+ $provide . factory ( '$$animateAsyncRun' , function ( ) {
767+ var queue = [ ] ;
768+ var queueFn = function ( ) {
769+ return function ( fn ) {
770+ queue . push ( fn ) ;
771+ } ;
772+ } ;
773+ queueFn . flush = function ( ) {
774+ if ( queue . length === 0 ) return false ;
775+
776+ for ( var i = 0 ; i < queue . length ; i ++ ) {
777+ queue [ i ] ( ) ;
778+ }
779+ queue = [ ] ;
780+
781+ return true ;
782+ } ;
783+ return queueFn ;
784+ } ) ;
785+
786+ $provide . decorator ( '$animate' , [ '$delegate' , '$timeout' , '$browser' , '$$rAF' , '$$forceReflow' , '$$animateAsyncRun' ,
787+ function ( $delegate , $timeout , $browser , $$rAF , $$forceReflow , $$animateAsyncRun ) {
768788
769789 var animate = {
770790 queue : [ ] ,
771791 cancel : $delegate . cancel ,
792+ on : $delegate . on ,
793+ off : $delegate . off ,
794+ pin : $delegate . pin ,
772795 get reflows ( ) {
773796 return $$forceReflow . totalReflows ;
774797 } ,
775798 enabled : $delegate . enabled ,
776- triggerCallbackEvents : function ( ) {
777- $$rAF . flush ( ) ;
778- } ,
779- triggerCallbackPromise : function ( ) {
780- $timeout . flush ( 0 ) ;
781- } ,
782- triggerCallbacks : function ( ) {
783- this . triggerCallbackEvents ( ) ;
784- this . triggerCallbackPromise ( ) ;
799+ flush : function ( ) {
800+ var rafsFlushed = false ;
801+ if ( $$rAF . queue . length ) {
802+ $$rAF . flush ( ) ;
803+ rafsFlushed = true ;
804+ }
805+
806+ var animatorsFlushed = $$animateAsyncRun . flush ( ) ;
807+ if ( ! rafsFlushed && ! animatorsFlushed ) {
808+ throw new Error ( 'No pending animations ready to be closed or flushed' ) ;
809+ }
785810 }
786811 } ;
787812
@@ -1733,28 +1758,28 @@ angular.mock.$TimeoutDecorator = ['$delegate', '$browser', function($delegate, $
17331758} ] ;
17341759
17351760angular . mock . $RAFDecorator = [ '$delegate' , function ( $delegate ) {
1736- var queue = [ ] ;
17371761 var rafFn = function ( fn ) {
1738- var index = queue . length ;
1739- queue . push ( fn ) ;
1762+ var index = rafFn . queue . length ;
1763+ rafFn . queue . push ( fn ) ;
17401764 return function ( ) {
1741- queue . splice ( index , 1 ) ;
1765+ rafFn . queue . splice ( index , 1 ) ;
17421766 } ;
17431767 } ;
17441768
1769+ rafFn . queue = [ ] ;
17451770 rafFn . supported = $delegate . supported ;
17461771
17471772 rafFn . flush = function ( ) {
1748- if ( queue . length === 0 ) {
1773+ if ( rafFn . queue . length === 0 ) {
17491774 throw new Error ( 'No rAF callbacks present' ) ;
17501775 }
17511776
1752- var length = queue . length ;
1777+ var length = rafFn . queue . length ;
17531778 for ( var i = 0 ; i < length ; i ++ ) {
1754- queue [ i ] ( ) ;
1779+ rafFn . queue [ i ] ( ) ;
17551780 }
17561781
1757- queue = queue . slice ( i ) ;
1782+ rafFn . queue = rafFn . queue . slice ( i ) ;
17581783 } ;
17591784
17601785 return rafFn ;
0 commit comments