| 
									
										
										
										
											2016-05-20 13:22:57 -07:00
										 |  |  | /*global jasmine, __karma__, window*/ | 
					
						
							| 
									
										
										
										
											2016-06-24 11:17:17 -07:00
										 |  |  | Error.stackTraceLimit = 5; | 
					
						
							| 
									
										
										
										
											2016-05-20 13:22:57 -07:00
										 |  |  | jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | __karma__.loaded = function () { | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function isJsFile(path) { | 
					
						
							|  |  |  |   return path.slice(-3) == '.js'; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function isSpecFile(path) { | 
					
						
							|  |  |  |   return path.slice(-7) == 'spec.js'; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function isBuiltFile(path) { | 
					
						
							|  |  |  |   var builtPath = '/base/dist/'; | 
					
						
							|  |  |  |   return isJsFile(path) && (path.substr(0, builtPath.length) == builtPath); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var allSpecFiles = Object.keys(window.__karma__.files) | 
					
						
							|  |  |  |   .filter(isSpecFile) | 
					
						
							|  |  |  |   .filter(isBuiltFile); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Load our SystemJS configuration.
 | 
					
						
							|  |  |  | System.config({ | 
					
						
							|  |  |  |   baseURL: '/base' | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | System.config( | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     map: { | 
					
						
							|  |  |  |       'rxjs': 'node_modules/rxjs', | 
					
						
							| 
									
										
										
										
											2016-06-21 10:35:42 -07:00
										 |  |  |       '@angular': 'dist/all/@angular' | 
					
						
							| 
									
										
										
										
											2016-05-20 13:22:57 -07:00
										 |  |  |     }, | 
					
						
							|  |  |  |     packages: { | 
					
						
							|  |  |  |       '@angular/core': { | 
					
						
							|  |  |  |         main: 'index.js', | 
					
						
							|  |  |  |         defaultExtension: 'js' | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       '@angular/compiler': { | 
					
						
							|  |  |  |         main: 'index.js', | 
					
						
							|  |  |  |         defaultExtension: 'js' | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       '@angular/common': { | 
					
						
							|  |  |  |         main: 'index.js', | 
					
						
							|  |  |  |         defaultExtension: 'js' | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       '@angular/platform-browser': { | 
					
						
							|  |  |  |         main: 'index.js', | 
					
						
							|  |  |  |         defaultExtension: 'js' | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       '@angular/platform-browser-dynamic': { | 
					
						
							|  |  |  |         main: 'index.js', | 
					
						
							|  |  |  |         defaultExtension: 'js' | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2016-06-21 10:35:42 -07:00
										 |  |  |       '@angular/router': { | 
					
						
							|  |  |  |         main: 'index.js', | 
					
						
							|  |  |  |         defaultExtension: 'js' | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2016-05-20 13:22:57 -07:00
										 |  |  |       'rxjs': { | 
					
						
							|  |  |  |         main: 'Rx.js', | 
					
						
							|  |  |  |         defaultExtension: 'js' | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Promise.all([ | 
					
						
							|  |  |  |   System.import('@angular/core/testing'), | 
					
						
							|  |  |  |   System.import('@angular/platform-browser-dynamic/testing') | 
					
						
							|  |  |  | ]).then(function (providers) { | 
					
						
							|  |  |  |   var testing = providers[0]; | 
					
						
							|  |  |  |   var testingBrowser = providers[1]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												feat(testing): add implicit test module
Every test now has an implicit module. It can be configured via `configureModule` (from @angular/core/testing)
to add providers, directives, pipes, ...
The compiler now has to be configured separately via `configureCompiler` (from @angular/core/testing)
to add providers or define whether to use jit.
BREAKING CHANGE:
- Application providers can no longer inject compiler internals (i.e. everything
  from `@angular/compiler). Inject `Compiler` instead. This reflects the
  changes to `bootstrap` for module support (3f55aa609f60f130f1d69188ed057214b1267cb3).
- Compiler providers can no longer be added via `addProviders` / `withProviders`.
  Use the new method `configureCompiler` instead.
- Platform directives / pipes need to be provided via
  `configureModule` and can no longer be provided via the
  `PLATFORM_PIPES` / `PLATFORM_DIRECTIVES` tokens.
- `setBaseTestProviders()` was renamed into `initTestEnvironment` and 
  now takes a `PlatformRef` and a factory for a
  `Compiler`.
- E.g. for the browser platform:
  
  BEFORE:
  ```
  import {setBaseTestProviders} from ‘@angular/core/testing’;
  import {TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS,
      TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS} from ‘@angular/platform-browser-dynamic/testing’;
  
  setBaseTestProviders(TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS,
      TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS);   
  ```
  AFTER:
  ```
  import {setBaseTestProviders} from ‘@angular/core/testing’;
  import {browserTestCompiler, browserDynamicTestPlatform,
      BrowserDynamicTestModule} from ‘@angular/platform-browser-dynamic/testing’;
  
  initTestEnvironment(
      browserTestCompiler,
      browserDynamicTestPlatform(),
      BrowserDynamicTestModule);
  ```
- E.g. for the server platform:
  
  BEFORE:
  ```
  import {setBaseTestProviders} from ‘@angular/core/testing’;
  import {TEST_SERVER_PLATFORM_PROVIDERS,
      TEST_SERVER_APPLICATION_PROVIDERS} from ‘@angular/platform-server/testing/server’;
  
  setBaseTestProviders(TEST_SERVER_PLATFORM_PROVIDERS,
      TEST_SERVER_APPLICATION_PROVIDERS);   
  ```
  AFTER:
  ```
  import {setBaseTestProviders} from ‘@angular/core/testing’;
  import {serverTestCompiler, serverTestPlatform,
      ServerTestModule} from ‘@angular/platform-browser-dynamic/testing’;
  
  initTestEnvironment(
      serverTestCompiler,
      serverTestPlatform(),
      ServerTestModule);
  ```
Related to #9726
Closes #9846
											
										 
											2016-07-04 09:37:30 -07:00
										 |  |  |   testing.initTestEnvironment( | 
					
						
							|  |  |  |     testingBrowser.browserTestCompiler, | 
					
						
							|  |  |  |     testingBrowser.browserDynamicTestPlatform(), | 
					
						
							|  |  |  |     testingBrowser.BrowserDynamicTestModule); | 
					
						
							| 
									
										
										
										
											2016-05-20 13:22:57 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | }).then(function() { | 
					
						
							|  |  |  |   // Finally, load all spec files.
 | 
					
						
							|  |  |  |   // This will run the tests directly.
 | 
					
						
							|  |  |  |   return Promise.all( | 
					
						
							|  |  |  |     allSpecFiles.map(function (moduleName) { | 
					
						
							|  |  |  |       return System.import(moduleName); | 
					
						
							|  |  |  |     })); | 
					
						
							|  |  |  | }).then(__karma__.start, __karma__.error); |