311 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
		
		
			
		
	
	
			311 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
|  | <html lang="en"><head></head><body><form id="mainForm" method="post" action="http://plnkr.co/edit/?p=preview&open=app/banner.component.spec.ts" target="_self"><input type="hidden" name="files[browser-test-shim.js]" value="// BROWSER TESTING SHIM | ||
|  | // Keep it in-sync with what karma-test-shim does | ||
|  | /*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; // | ||
|  | 
 | ||
|  | jasmine.DEFAULT_TIMEOUT_INTERVAL = 3000; | ||
|  | 
 | ||
|  | 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', | ||
|  |   }, | ||
|  | }); | ||
|  | 
 | ||
|  | 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( | ||
|  |       'Note: System.import could not load "systemjs.config.extras.js" where you might have added more configuration. It is an optional file so we will continue 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(); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | })(); | ||
|  | 
 | ||
|  | 
 | ||
|  | /* | ||
|  | Copyright 2016 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 http://angular.io/license | ||
|  | */"><input type="hidden" name="files[systemjs.config.extras.js]" value="/** App specific SystemJS configuration */ | ||
|  | System.config({ | ||
|  |   packages: { | ||
|  |     // barrels | ||
|  |     'app/model': {main:'index.js', defaultExtension:'js'}, | ||
|  |     'app/model/testing': {main:'index.js', defaultExtension:'js'} | ||
|  |   } | ||
|  | }); | ||
|  | 
 | ||
|  | 
 | ||
|  | /* | ||
|  | Copyright 2016 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 http://angular.io/license | ||
|  | */"><input type="hidden" name="files[app/banner.component.css]" value="h1 { color: green; font-size: 350%} | ||
|  | 
 | ||
|  | 
 | ||
|  | /* | ||
|  | Copyright 2016 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 http://angular.io/license | ||
|  | */"><input type="hidden" name="files[app/banner.component.html]" value="<h1>{{title}}</h1> | ||
|  | 
 | ||
|  | 
 | ||
|  | <!-- 
 | ||
|  | Copyright 2016 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 http://angular.io/license | ||
|  | -->"><input type="hidden" name="files[app/banner.component.ts]" value="import { Component } from '@angular/core'; | ||
|  | 
 | ||
|  | @Component({ | ||
|  |   moduleId: module.id, | ||
|  |   selector: 'app-banner', | ||
|  |   templateUrl: './banner.component.html', | ||
|  |   styleUrls:  ['./banner.component.css'] | ||
|  | }) | ||
|  | export class BannerComponent { | ||
|  |   title = 'Test Tour of Heroes'; | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /* | ||
|  | Copyright 2016 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 http://angular.io/license | ||
|  | */"><input type="hidden" name="files[app/banner.component.spec.ts]" value="import { async, ComponentFixture, TestBed } from '@angular/core/testing'; | ||
|  | import { By }              from '@angular/platform-browser'; | ||
|  | import { DebugElement }    from '@angular/core'; | ||
|  | 
 | ||
|  | import { BannerComponent } from './banner.component'; | ||
|  | 
 | ||
|  | describe('BannerComponent (templateUrl)', () => { | ||
|  | 
 | ||
|  |   let comp:    BannerComponent; | ||
|  |   let fixture: ComponentFixture<BannerComponent>; | ||
|  |   let de:      DebugElement; | ||
|  |   let el:      HTMLElement; | ||
|  | 
 | ||
|  |   // async beforeEach | ||
|  |   beforeEach(async(() => { | ||
|  |     TestBed.configureTestingModule({ | ||
|  |       declarations: [ BannerComponent ], // declare the test component | ||
|  |     }) | ||
|  |     .compileComponents();  // compile template and css | ||
|  |   })); | ||
|  | 
 | ||
|  |   // synchronous beforeEach | ||
|  |   beforeEach(() => { | ||
|  |     fixture = TestBed.createComponent(BannerComponent); | ||
|  | 
 | ||
|  |     comp = fixture.componentInstance; // BannerComponent test instance | ||
|  | 
 | ||
|  |     // query for the title <h1> by CSS element selector | ||
|  |     de = fixture.debugElement.query(By.css('h1')); | ||
|  |     el = de.nativeElement; | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('no title in the DOM until manually call `detectChanges`', () => { | ||
|  |     expect(el.textContent).toEqual(''); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('should display original title', () => { | ||
|  |     fixture.detectChanges(); | ||
|  |     expect(el.textContent).toContain(comp.title); | ||
|  |   }); | ||
|  | 
 | ||
|  |   it('should display a different test title', () => { | ||
|  |     comp.title = 'Test Title'; | ||
|  |     fixture.detectChanges(); | ||
|  |     expect(el.textContent).toContain('Test Title'); | ||
|  |   }); | ||
|  | 
 | ||
|  | }); | ||
|  | 
 | ||
|  | 
 | ||
|  | /* | ||
|  | Copyright 2016 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 http://angular.io/license | ||
|  | */"><input type="hidden" name="files[index.html]" value="<!-- Run application specs in a browser --> | ||
|  | <!DOCTYPE html> | ||
|  | <html> | ||
|  | <head> | ||
|  |   <script>document.write('<base href="' + document.location + '" />');</script> | ||
|  |   <title>Banner Component Specs</title> | ||
|  |   <meta charset="UTF-8"> | ||
|  |   <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
|  |   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.css"> | ||
|  | </head> | ||
|  | <body> | ||
|  |   <!-- Polyfills --> | ||
|  |   <script src="https://unpkg.com/core-js/client/shim.min.js"></script> | ||
|  | 
 | ||
|  |   <script src="https://unpkg.com/systemjs@0.19.39/dist/system.src.js"></script> | ||
|  | 
 | ||
|  |   <script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine.js"></script> | ||
|  |   <script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/jasmine-html.js"></script> | ||
|  |   <script src="https://cdnjs.cloudflare.com/ajax/libs/jasmine/2.4.1/boot.js"></script> | ||
|  | 
 | ||
|  |   <script src="https://unpkg.com/zone.js@0.7.4?main=browser"></script> | ||
|  |   <script src="https://unpkg.com/zone.js/dist/long-stack-trace-zone.js?main=browser"></script> | ||
|  |   <script src="https://unpkg.com/zone.js/dist/proxy.js?main=browser"></script> | ||
|  |   <script src="https://unpkg.com/zone.js/dist/sync-test.js?main=browser"></script> | ||
|  |   <script src="https://unpkg.com/zone.js/dist/jasmine-patch.js?main=browser"></script> | ||
|  |   <script src="https://unpkg.com/zone.js/dist/async-test.js?main=browser"></script> | ||
|  |   <script src="https://unpkg.com/zone.js/dist/fake-async-test.js?main=browser"></script> | ||
|  | 
 | ||
|  |   <script> | ||
|  |     var __spec_files__ = [ | ||
|  |       'app/banner.component.spec' | ||
|  |     ]; | ||
|  |   </script> | ||
|  |   <script src="browser-test-shim.js"></script> | ||
|  | </body> | ||
|  | 
 | ||
|  | </html> | ||
|  | 
 | ||
|  | 
 | ||
|  | <!-- 
 | ||
|  | Copyright 2016 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 http://angular.io/license | ||
|  | -->"><input type="hidden" name="tags[0]" value="angular"><input type="hidden" name="tags[1]" value="example"><input type="hidden" name="tags[2]" value="testing"><input type="hidden" name="private" value="true"><input type="hidden" name="description" value="Angular Example - Testing - banner.component.specs"><input type="hidden" name="files[systemjs.config.js]" value="/** | ||
|  |  * WEB ANGULAR VERSION | ||
|  |  * (based on systemjs.config.js in angular.io) | ||
|  |  * System configuration for Angular samples | ||
|  |  * Adjust as necessary for your application needs. | ||
|  |  */ | ||
|  | (function (global) { | ||
|  |   System.config({ | ||
|  |     // DEMO ONLY! REAL CODE SHOULD NOT TRANSPILE IN THE BROWSER | ||
|  |     transpiler: 'ts', | ||
|  |     typescriptOptions: { | ||
|  |       // Copy of compiler options in standard tsconfig.json | ||
|  |       "target": "es5", | ||
|  |       "module": "commonjs", | ||
|  |       "moduleResolution": "node", | ||
|  |       "sourceMap": true, | ||
|  |       "emitDecoratorMetadata": true, | ||
|  |       "experimentalDecorators": true, | ||
|  |       "lib": ["es2015", "dom"], | ||
|  |       "noImplicitAny": true, | ||
|  |       "suppressImplicitAnyIndexErrors": true | ||
|  |     }, | ||
|  |     meta: { | ||
|  |       'typescript': { | ||
|  |         "exports": "ts" | ||
|  |       } | ||
|  |     }, | ||
|  |     paths: { | ||
|  |       // paths serve as alias | ||
|  |       'npm:': 'https://unpkg.com/' | ||
|  |     }, | ||
|  |     // map tells the System loader where to look for things | ||
|  |     map: { | ||
|  |       // our app is within the app folder | ||
|  |       app: 'app', | ||
|  | 
 | ||
|  |       // angular bundles | ||
|  |       '@angular/core': 'npm:@angular/core/bundles/core.umd.js', | ||
|  |       '@angular/common': 'npm:@angular/common/bundles/common.umd.js', | ||
|  |       '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', | ||
|  |       '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', | ||
|  |       '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', | ||
|  |       '@angular/http': 'npm:@angular/http/bundles/http.umd.js', | ||
|  |       '@angular/router': 'npm:@angular/router/bundles/router.umd.js', | ||
|  |       '@angular/router/upgrade': 'npm:@angular/router/bundles/router-upgrade.umd.js', | ||
|  |       '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', | ||
|  |       '@angular/upgrade': 'npm:@angular/upgrade/bundles/upgrade.umd.js', | ||
|  |       '@angular/upgrade/static': 'npm:@angular/upgrade/bundles/upgrade-static.umd.js', | ||
|  | 
 | ||
|  |       // other libraries | ||
|  |       'rxjs':                      'npm:rxjs@5.0.1', | ||
|  |       'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js', | ||
|  |       'ts':                        'npm:plugin-typescript@5.2.7/lib/plugin.js', | ||
|  |       'typescript':                'npm:typescript@2.0.10/lib/typescript.js', | ||
|  | 
 | ||
|  |     }, | ||
|  |     // packages tells the System loader how to load when no filename and/or no extension | ||
|  |     packages: { | ||
|  |       app: { | ||
|  |         main: './main.ts', | ||
|  |         defaultExtension: 'ts' | ||
|  |       }, | ||
|  |       rxjs: { | ||
|  |         defaultExtension: 'js' | ||
|  |       } | ||
|  |     } | ||
|  |   }); | ||
|  | 
 | ||
|  | })(this); | ||
|  | 
 | ||
|  | /* | ||
|  | Copyright 2016 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 http://angular.io/license | ||
|  | */ | ||
|  | "></form><script>document.getElementById("mainForm").submit();</script></body></html> |