| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | import {UrlResolver, XHR} from '@angular/compiler'; | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | import {Component, provide} from '@angular/core'; | 
					
						
							|  |  |  | import {beforeEach, beforeEachProviders, ddescribe, describe, iit, inject, it, xit} from '@angular/core/testing/testing_internal'; | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | import {AsyncTestCompleter} from '@angular/core/testing/testing_internal'; | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  | import {expect} from '@angular/platform-browser/testing'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import {fakeAsync, flushMicrotasks, Log, tick,} from '@angular/core/testing'; | 
					
						
							| 
									
										
										
										
											2016-04-28 17:50:03 -07:00
										 |  |  | import {TestComponentBuilder, ComponentFixture} from '@angular/compiler/testing'; | 
					
						
							|  |  |  | import {BaseException} from '../../src/facade/exceptions'; | 
					
						
							|  |  |  | import {CachedXHR} from '../../src/xhr/xhr_cache'; | 
					
						
							| 
									
										
										
										
											2016-04-06 15:58:23 -07:00
										 |  |  | import {setTemplateCache} from './xhr_cache_setter'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export function main() { | 
					
						
							|  |  |  |   describe('CachedXHR', () => { | 
					
						
							|  |  |  |     var xhr: CachedXHR; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function createCachedXHR(): CachedXHR { | 
					
						
							|  |  |  |       setTemplateCache({'test.html': '<div>Hello</div>'}); | 
					
						
							|  |  |  |       return new CachedXHR(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |     beforeEachProviders(() => [{provide: UrlResolver, useClass: TestUrlResolver}, { | 
					
						
							|  |  |  |                           provide: XHR, | 
					
						
							|  |  |  |                           useFactory: createCachedXHR | 
					
						
							|  |  |  |                         }]); | 
					
						
							| 
									
										
										
										
											2016-04-06 15:58:23 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |     it('should throw exception if $templateCache is not found', () => { | 
					
						
							|  |  |  |       setTemplateCache(null); | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |       expect(() => { | 
					
						
							|  |  |  |         xhr = new CachedXHR(); | 
					
						
							|  |  |  |       }).toThrowErrorWith('CachedXHR: Template cache was not found in $templateCache.'); | 
					
						
							| 
									
										
										
										
											2016-04-06 15:58:23 -07:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('should resolve the Promise with the cached file content on success', | 
					
						
							| 
									
										
										
										
											2016-06-09 11:04:15 -07:00
										 |  |  |        inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2016-04-06 15:58:23 -07:00
										 |  |  |          setTemplateCache({'test.html': '<div>Hello</div>'}); | 
					
						
							|  |  |  |          xhr = new CachedXHR(); | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |          xhr.get('test.html').then((text) => { | 
					
						
							|  |  |  |            expect(text).toEqual('<div>Hello</div>'); | 
					
						
							|  |  |  |            async.done(); | 
					
						
							|  |  |  |          }); | 
					
						
							| 
									
										
										
										
											2016-04-06 15:58:23 -07:00
										 |  |  |        })); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-08 16:38:52 -07:00
										 |  |  |     it('should reject the Promise on failure', | 
					
						
							|  |  |  |        inject([AsyncTestCompleter], (async: AsyncTestCompleter) => { | 
					
						
							| 
									
										
										
										
											2016-04-06 15:58:23 -07:00
										 |  |  |          xhr = new CachedXHR(); | 
					
						
							|  |  |  |          xhr.get('unknown.html') | 
					
						
							|  |  |  |              .then((text) => { throw new BaseException('Not expected to succeed.'); }) | 
					
						
							|  |  |  |              .catch((error) => { async.done(); }); | 
					
						
							|  |  |  |        })); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     it('should allow fakeAsync Tests to load components with templateUrl synchronously', | 
					
						
							| 
									
										
										
										
											2016-04-18 16:04:35 -07:00
										 |  |  |        fakeAsync(inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { | 
					
						
							| 
									
										
										
										
											2016-04-30 10:52:04 -07:00
										 |  |  |          let fixture = tcb.createFakeAsync(TestComponent); | 
					
						
							| 
									
										
										
										
											2016-04-06 15:58:23 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-18 16:04:35 -07:00
										 |  |  |          // This should initialize the fixture.
 | 
					
						
							|  |  |  |          tick(); | 
					
						
							| 
									
										
										
										
											2016-04-06 15:58:23 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-18 16:04:35 -07:00
										 |  |  |          expect(fixture.debugElement.children[0].nativeElement).toHaveText('Hello'); | 
					
						
							|  |  |  |        }))); | 
					
						
							| 
									
										
										
										
											2016-04-06 15:58:23 -07:00
										 |  |  |   }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @Component({selector: 'test-cmp', templateUrl: 'test.html'}) | 
					
						
							|  |  |  | class TestComponent { | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TestUrlResolver extends UrlResolver { | 
					
						
							|  |  |  |   resolve(baseUrl: string, url: string): string { | 
					
						
							|  |  |  |     // Don't use baseUrl to get the same URL as templateUrl.
 | 
					
						
							|  |  |  |     // This is to remove any difference between Dart and TS tests.
 | 
					
						
							|  |  |  |     return url; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } |