| 
									
										
										
										
											2016-09-13 14:39:39 -07:00
										 |  |  | // BROWSER TESTING SHIM
 | 
					
						
							|  |  |  | // Keep it in-sync with what karma-test-shim does
 | 
					
						
							|  |  |  | // #docregion
 | 
					
						
							|  |  |  | /*global jasmine, __karma__, window*/ | 
					
						
							|  |  |  | (function () { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Error.stackTraceLimit = 0; // "No stacktrace"" is usually best for app testing.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Uncomment to get full stacktrace output. Sometimes helpful, usually not.
 | 
					
						
							|  |  |  | // Error.stackTraceLimit = Infinity; //
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-21 11:27:11 -07:00
										 |  |  | jasmine.DEFAULT_TIMEOUT_INTERVAL = 3000; | 
					
						
							| 
									
										
										
										
											2016-09-13 14:39:39 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | var baseURL = document.baseURI; | 
					
						
							|  |  |  | baseURL = baseURL + baseURL[baseURL.length-1] ? '' : '/'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | System.config({ | 
					
						
							|  |  |  |   baseURL: baseURL, | 
					
						
							|  |  |  |   // Extend usual application package list with test folder
 | 
					
						
							|  |  |  |   packages: { 'testing': { main: 'index.js', defaultExtension: 'js' } }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Assume npm: is set in `paths` in systemjs.config
 | 
					
						
							|  |  |  |   // Map the angular testing umd bundles
 | 
					
						
							|  |  |  |   map: { | 
					
						
							|  |  |  |     '@angular/core/testing': 'npm:@angular/core/bundles/core-testing.umd.js', | 
					
						
							|  |  |  |     '@angular/common/testing': 'npm:@angular/common/bundles/common-testing.umd.js', | 
					
						
							|  |  |  |     '@angular/compiler/testing': 'npm:@angular/compiler/bundles/compiler-testing.umd.js', | 
					
						
							|  |  |  |     '@angular/platform-browser/testing': 'npm:@angular/platform-browser/bundles/platform-browser-testing.umd.js', | 
					
						
							|  |  |  |     '@angular/platform-browser-dynamic/testing': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js', | 
					
						
							|  |  |  |     '@angular/http/testing': 'npm:@angular/http/bundles/http-testing.umd.js', | 
					
						
							|  |  |  |     '@angular/router/testing': 'npm:@angular/router/bundles/router-testing.umd.js', | 
					
						
							|  |  |  |     '@angular/forms/testing': 'npm:@angular/forms/bundles/forms-testing.umd.js', | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-11-04 21:59:51 -07:00
										 |  |  | document['noBootstrap'] = true; // do not run system.config.web.js bootstrap
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-09-13 14:39:39 -07:00
										 |  |  | System.import('systemjs.config.js') | 
					
						
							|  |  |  |   .then(importSystemJsExtras) | 
					
						
							|  |  |  |   .then(initTestBed) | 
					
						
							|  |  |  |   .then(initTesting); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** Optional SystemJS configuration extras. Keep going w/o it */ | 
					
						
							|  |  |  | function importSystemJsExtras(){ | 
					
						
							|  |  |  |   return System.import('systemjs.config.extras.js') | 
					
						
							|  |  |  |   .catch(function(reason) { | 
					
						
							|  |  |  |     console.log( | 
					
						
							|  |  |  |       'Warning: System.import could not load the optional "systemjs.config.extras.js". Did you omit it by accident? Continuing without it.' | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |     console.log(reason); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function initTestBed(){ | 
					
						
							|  |  |  |   return Promise.all([ | 
					
						
							|  |  |  |     System.import('@angular/core/testing'), | 
					
						
							|  |  |  |     System.import('@angular/platform-browser-dynamic/testing') | 
					
						
							|  |  |  |   ]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .then(function (providers) { | 
					
						
							|  |  |  |     var coreTesting    = providers[0]; | 
					
						
							|  |  |  |     var browserTesting = providers[1]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     coreTesting.TestBed.initTestEnvironment( | 
					
						
							|  |  |  |       browserTesting.BrowserDynamicTestingModule, | 
					
						
							|  |  |  |       browserTesting.platformBrowserDynamicTesting()); | 
					
						
							|  |  |  |   }) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Import all spec files defined in the html (__spec_files__)
 | 
					
						
							|  |  |  | // and start Jasmine testrunner
 | 
					
						
							|  |  |  | function initTesting () { | 
					
						
							|  |  |  |   console.log('loading spec files: '+__spec_files__.join(', ')); | 
					
						
							|  |  |  |   return Promise.all( | 
					
						
							|  |  |  |     __spec_files__.map(function(spec) { | 
					
						
							|  |  |  |       return System.import(spec); | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |   ) | 
					
						
							|  |  |  |   //  After all imports load,  re-execute `window.onload` which
 | 
					
						
							|  |  |  |   //  triggers the Jasmine test-runner start or explain what went wrong
 | 
					
						
							|  |  |  |   .then(success, console.error.bind(console)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   function success () { | 
					
						
							|  |  |  |     console.log('Spec files loaded; starting Jasmine testrunner'); | 
					
						
							|  |  |  |     window.onload(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | })(); |