| 
									
										
										
										
											2017-03-15 13:41:00 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * @license | 
					
						
							|  |  |  |  * Copyright Google Inc. All Rights Reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Use of this source code is governed by an MIT-style license that can be | 
					
						
							|  |  |  |  * found in the LICENSE file at https://angular.io/license
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | import {fakeAsync} from '@angular/core/testing'; | 
					
						
							|  |  |  | import {flushMicrotasks} from '../../core/testing/src/fake_async'; | 
					
						
							|  |  |  | import {NoopAnimationPlayer} from '../src/players/animation_player'; | 
					
						
							| 
									
										
										
										
											2017-11-21 14:29:39 -08:00
										 |  |  | import {scheduleMicroTask} from '../src/util'; | 
					
						
							| 
									
										
										
										
											2017-03-15 13:41:00 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-16 14:42:55 -08:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2017-03-15 13:41:00 -07:00
										 |  |  |   describe('NoopAnimationPlayer', function() { | 
					
						
							|  |  |  |     it('should finish after the next microtask once started', fakeAsync(() => { | 
					
						
							|  |  |  |          const log: string[] = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          const player = new NoopAnimationPlayer(); | 
					
						
							|  |  |  |          player.onStart(() => log.push('started')); | 
					
						
							|  |  |  |          player.onDone(() => log.push('done')); | 
					
						
							|  |  |  |          flushMicrotasks(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          expect(log).toEqual([]); | 
					
						
							|  |  |  |          player.play(); | 
					
						
							|  |  |  |          expect(log).toEqual(['started']); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          flushMicrotasks(); | 
					
						
							|  |  |  |          expect(log).toEqual(['started', 'done']); | 
					
						
							|  |  |  |        })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('should fire all callbacks when destroyed', () => { | 
					
						
							|  |  |  |       const log: string[] = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       const player = new NoopAnimationPlayer(); | 
					
						
							|  |  |  |       player.onStart(() => log.push('started')); | 
					
						
							|  |  |  |       player.onDone(() => log.push('done')); | 
					
						
							|  |  |  |       player.onDestroy(() => log.push('destroy')); | 
					
						
							|  |  |  |       expect(log).toEqual([]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       player.destroy(); | 
					
						
							|  |  |  |       expect(log).toEqual(['started', 'done', 'destroy']); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2017-10-16 15:21:10 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it('should fire start/done callbacks manually when called directly', fakeAsync(() => { | 
					
						
							|  |  |  |          const log: string[] = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          const player = new NoopAnimationPlayer(); | 
					
						
							|  |  |  |          player.onStart(() => log.push('started')); | 
					
						
							|  |  |  |          player.onDone(() => log.push('done')); | 
					
						
							|  |  |  |          flushMicrotasks(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-06 06:56:49 -08:00
										 |  |  |          (player as any).triggerCallback('start'); | 
					
						
							| 
									
										
										
										
											2017-10-16 15:21:10 -07:00
										 |  |  |          expect(log).toEqual(['started']); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          player.play(); | 
					
						
							|  |  |  |          expect(log).toEqual(['started']); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-06 06:56:49 -08:00
										 |  |  |          (player as any).triggerCallback('done'); | 
					
						
							| 
									
										
										
										
											2017-10-16 15:21:10 -07:00
										 |  |  |          expect(log).toEqual(['started', 'done']); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          player.finish(); | 
					
						
							|  |  |  |          expect(log).toEqual(['started', 'done']); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-21 14:29:39 -08:00
										 |  |  |          flushMicrotasks(); | 
					
						
							|  |  |  |          expect(log).toEqual(['started', 'done']); | 
					
						
							|  |  |  |        })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('should fire off start callbacks before triggering the finish callback', fakeAsync(() => { | 
					
						
							|  |  |  |          const log: string[] = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          const player = new NoopAnimationPlayer(); | 
					
						
							|  |  |  |          player.onStart(() => { scheduleMicroTask(() => log.push('started')); }); | 
					
						
							|  |  |  |          player.onDone(() => log.push('done')); | 
					
						
							|  |  |  |          expect(log).toEqual([]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |          player.play(); | 
					
						
							|  |  |  |          expect(log).toEqual([]); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-16 15:21:10 -07:00
										 |  |  |          flushMicrotasks(); | 
					
						
							|  |  |  |          expect(log).toEqual(['started', 'done']); | 
					
						
							|  |  |  |        })); | 
					
						
							| 
									
										
										
										
											2017-03-15 13:41:00 -07:00
										 |  |  |   }); | 
					
						
							|  |  |  | } |