57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import { async, fakeAsync, tick } from '@angular/core/testing';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import { Observable } from 'rxjs/Observable';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('Angular async helper', () => {
							 | 
						||
| 
								 | 
							
								  let actuallyDone = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  beforeEach(() => { actuallyDone = false; });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  afterEach(() => { expect(actuallyDone).toBe(true, 'actuallyDone should be true'); });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should run normal test', () => { actuallyDone = true; });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should run normal async test', (done: DoneFn) => {
							 | 
						||
| 
								 | 
							
								    setTimeout(() => {
							 | 
						||
| 
								 | 
							
								      actuallyDone = true;
							 | 
						||
| 
								 | 
							
								      done();
							 | 
						||
| 
								 | 
							
								    }, 0);
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should run async test with task',
							 | 
						||
| 
								 | 
							
								      async(() => { setTimeout(() => { actuallyDone = true; }, 0); }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should run async test with successful promise', async(() => {
							 | 
						||
| 
								 | 
							
								    const p = new Promise(resolve => { setTimeout(resolve, 10); });
							 | 
						||
| 
								 | 
							
								    p.then(() => { actuallyDone = true; });
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('should run async test with failed promise', async(() => {
							 | 
						||
| 
								 | 
							
								    const p = new Promise((resolve, reject) => { setTimeout(reject, 10); });
							 | 
						||
| 
								 | 
							
								    p.catch(() => { actuallyDone = true; });
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // Fail message: Cannot use setInterval from within an async zone test
							 | 
						||
| 
								 | 
							
								  // See https://github.com/angular/angular/issues/10127
							 | 
						||
| 
								 | 
							
								  xit('should run async test with successful delayed Observable', async(() => {
							 | 
						||
| 
								 | 
							
								    const source = Observable.of(true).delay(10);
							 | 
						||
| 
								 | 
							
								    source.subscribe(
							 | 
						||
| 
								 | 
							
								      val => actuallyDone = true,
							 | 
						||
| 
								 | 
							
								      err => fail(err)
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // Fail message: Error: 1 periodic timer(s) still in the queue
							 | 
						||
| 
								 | 
							
								  // See https://github.com/angular/angular/issues/10127
							 | 
						||
| 
								 | 
							
								  xit('should run async test with successful delayed Observable', fakeAsync(() => {
							 | 
						||
| 
								 | 
							
								    const source = Observable.of(true).delay(10);
							 | 
						||
| 
								 | 
							
								    source.subscribe(
							 | 
						||
| 
								 | 
							
								      val => actuallyDone = true,
							 | 
						||
| 
								 | 
							
								      err => fail(err)
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    tick();
							 | 
						||
| 
								 | 
							
								  }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								});
							 |