docs(upgrade): update examples to beta.3 and make necessary edits to guide.
closes #808 Also fixes some minor issues in code style and unit tests.
This commit is contained in:
		
							parent
							
								
									16704e9063
								
							
						
					
					
						commit
						e221d8b418
					
				| @ -10,13 +10,13 @@ | ||||
|     "typescript": "1.7.5" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "angular2": "2.0.0-beta.0", | ||||
|     "angular2": "2.0.0-beta.3", | ||||
|     "es6-promise": "3.0.2", | ||||
|     "es6-shim": "0.33.13", | ||||
|     "reflect-metadata": "0.1.2", | ||||
|     "rxjs": "5.0.0-beta.0", | ||||
|     "systemjs": "0.19.9", | ||||
|     "zone.js": "0.5.10" | ||||
|     "zone.js": "0.5.11" | ||||
|   }, | ||||
|   "scripts": { | ||||
|     "tsc": "tsc -p . -w" | ||||
|  | ||||
| @ -7,8 +7,8 @@ import 'rxjs/add/operator/map'; | ||||
| // #docregion phone-interface
 | ||||
| export interface Phone { | ||||
|   name: string; | ||||
|   snippet: string; | ||||
|   images: string[]; | ||||
|   snippet?: string; | ||||
|   images?: string[]; | ||||
| } | ||||
| // #enddocregion phone-interface
 | ||||
| 
 | ||||
|  | ||||
| @ -6,12 +6,12 @@ | ||||
|   "repository": "https://github.com/angular/angular-phonecat", | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "angular2": "2.0.0-alpha.54", | ||||
|     "angular2": "2.0.0-beta.3", | ||||
|     "es6-promise": "^3.0.2", | ||||
|     "es6-shim": "^0.33.3", | ||||
|     "reflect-metadata": "0.1.2", | ||||
|     "rxjs": "5.0.0-beta.0", | ||||
|     "zone.js": "0.5.10", | ||||
|     "zone.js": "0.5.11", | ||||
|     "systemjs": "0.19.6" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|  | ||||
| @ -21,13 +21,12 @@ module.exports = function(config){ | ||||
|       'node_modules/rxjs/bundles/Rx.js', | ||||
|       'node_modules/angular2/bundles/http.dev.js', | ||||
|       // #enddocregion ng2-http
 | ||||
|       'test/karma_test_shim.js', | ||||
|       {pattern: 'app/js/**/*.js', included: false, watched: true}, | ||||
|       {pattern: 'test/unit/**/*.js', included: false, watched: true}, | ||||
|       // #docregion ng2-testing
 | ||||
|       'node_modules/angular2/bundles/testing.dev.js', | ||||
|       // #enddocregion ng2-testing
 | ||||
| 
 | ||||
|       'test/karma_test_shim.js', | ||||
|       {pattern: 'app/js/**/*.js', included: false, watched: true}, | ||||
|       {pattern: 'test/unit/**/*.js', included: false, watched: true}, | ||||
|       // #docregion html
 | ||||
|       {pattern: 'app/js/**/*.html', included: false, watched: true} | ||||
|     ], | ||||
|  | ||||
| @ -22,8 +22,11 @@ System.config({ | ||||
| }); | ||||
| 
 | ||||
| // #docregion ng2
 | ||||
| System.import('angular2/src/platform/browser/browser_adapter').then(function(browser_adapter) { | ||||
|   browser_adapter.BrowserDomAdapter.makeCurrent(); | ||||
| System.import('angular2/testing').then(function(testing) { | ||||
|   return System.import('angular2/platform/testing/browser').then(function(testing_platform_browser) { | ||||
|     testing.setBaseTestProviders(testing_platform_browser.TEST_BROWSER_PLATFORM_PROVIDERS, | ||||
|                                  testing_platform_browser.TEST_BROWSER_APPLICATION_PROVIDERS); | ||||
|   }); | ||||
| }).then(function() { | ||||
|   return Promise.all( | ||||
|     Object.keys(window.__karma__.files) // All files served by Karma.
 | ||||
|  | ||||
| @ -1,2 +1,4 @@ | ||||
| // #docregion
 | ||||
| /// <reference path="../node_modules/angular2/typings/jasmine/jasmine.d.ts" />
 | ||||
| /// <reference path="../typings/angularjs/angular-mocks.d.ts" />
 | ||||
| /// <reference path="../node_modules/angular2/typings/angular-protractor/angular-protractor.d.ts" />
 | ||||
|  | ||||
| @ -29,7 +29,7 @@ class MockPhones extends Phones { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| describe('PhoneDetail', function(){ | ||||
| describe('PhoneDetail', () => { | ||||
| 
 | ||||
|   beforeEachProviders(() => [ | ||||
|     provide(Phones, {useClass: MockPhones}), | ||||
| @ -42,7 +42,7 @@ describe('PhoneDetail', function(){ | ||||
|       fixture.detectChanges(); | ||||
|       let compiled = fixture.debugElement.nativeElement; | ||||
| 
 | ||||
|       expect(compiled.querySelector('.h1')).toHaveText(xyzPhoneData().name); | ||||
|       expect(compiled.querySelector('h1')).toHaveText(xyzPhoneData().name); | ||||
|     }); | ||||
|   })); | ||||
| 
 | ||||
|  | ||||
| @ -23,7 +23,7 @@ class MockPhones extends Phones { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| describe('PhoneList', function(){ | ||||
| describe('PhoneList', () => { | ||||
| 
 | ||||
|   beforeEachProviders(() => [ | ||||
|     provide(Phones, {useClass: MockPhones}), | ||||
| @ -35,7 +35,6 @@ describe('PhoneList', function(){ | ||||
|       injectAsync([TestComponentBuilder], (tcb) => { | ||||
|     return tcb.createAsync(PhoneList).then((fixture) => { | ||||
|       fixture.detectChanges(); | ||||
|       fixture.detectChanges(); | ||||
| 
 | ||||
|       let compiled = fixture.debugElement.nativeElement; | ||||
| 
 | ||||
|  | ||||
| @ -26,7 +26,7 @@ import { | ||||
| @RouteConfig([ | ||||
|   {path:'/phones', as: 'Phones', component: PhoneList}, | ||||
|   {path:'/phones/:phoneId', as: 'Phone', component: PhoneDetail}, | ||||
|   {path:'/', redirectTo: ['/phones']} | ||||
|   {path:'/', redirectTo: ['Phones']} | ||||
| ]) | ||||
| @Component({ | ||||
|   selector: 'pc-app', | ||||
|  | ||||
| @ -7,8 +7,8 @@ import 'rxjs/add/operator/map'; | ||||
| // #docregion phone-interface
 | ||||
| export interface Phone { | ||||
|   name: string; | ||||
|   snippet: string; | ||||
|   images: string[]; | ||||
|   snippet?: string; | ||||
|   images?: string[]; | ||||
| } | ||||
| // #enddocregion phone-interface
 | ||||
| 
 | ||||
|  | ||||
| @ -6,12 +6,12 @@ | ||||
|   "repository": "https://github.com/angular/angular-phonecat", | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "angular2": "2.0.0-alpha.54", | ||||
|     "angular2": "2.0.0-beta.3", | ||||
|     "es6-promise": "^3.0.2", | ||||
|     "es6-shim": "^0.33.3", | ||||
|     "reflect-metadata": "0.1.2", | ||||
|     "rxjs": "5.0.0-beta.0", | ||||
|     "zone.js": "0.5.10", | ||||
|     "zone.js": "0.5.11", | ||||
|     "systemjs": "0.19.6" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|  | ||||
| @ -22,8 +22,11 @@ System.config({ | ||||
| }); | ||||
| 
 | ||||
| // #docregion ng2
 | ||||
| System.import('angular2/src/platform/browser/browser_adapter').then(function(browser_adapter) { | ||||
|   browser_adapter.BrowserDomAdapter.makeCurrent(); | ||||
| System.import('angular2/testing').then(function(testing) { | ||||
|   return System.import('angular2/platform/testing/browser').then(function(testing_platform_browser) { | ||||
|     testing.setBaseTestProviders(testing_platform_browser.TEST_BROWSER_PLATFORM_PROVIDERS, | ||||
|                                  testing_platform_browser.TEST_BROWSER_APPLICATION_PROVIDERS); | ||||
|   }); | ||||
| }).then(function() { | ||||
|   return Promise.all( | ||||
|     Object.keys(window.__karma__.files) // All files served by Karma.
 | ||||
|  | ||||
| @ -0,0 +1,2 @@ | ||||
| /// <reference path="../node_modules/angular2/typings/jasmine/jasmine.d.ts" />
 | ||||
| /// <reference path="../node_modules/angular2/typings/angular-protractor/angular-protractor.d.ts" />
 | ||||
| @ -2,7 +2,7 @@ | ||||
| import {describe, beforeEachProviders, it, inject, expect} from 'angular2/testing'; | ||||
| import {CheckmarkPipe} from '../../app/js/core/CheckmarkPipe'; | ||||
| 
 | ||||
| describe('CheckmarkPipe', function() { | ||||
| describe('CheckmarkPipe', () => { | ||||
| 
 | ||||
|   beforeEachProviders(() => [CheckmarkPipe]); | ||||
| 
 | ||||
|  | ||||
| @ -3,7 +3,7 @@ import {describe, beforeEachProviders, it, inject} from 'angular2/testing'; | ||||
| 
 | ||||
| import OrderByPipe from '../../app/js/phone_list/OrderByPipe'; | ||||
| 
 | ||||
| describe('OrderByPipe', function() { | ||||
| describe('OrderByPipe', () => { | ||||
| 
 | ||||
|   let input:any[] = [ | ||||
|     {name: 'Nexus S', snippet: 'The Nexus S Phone', images: []}, | ||||
|  | ||||
| @ -32,7 +32,7 @@ class MockPhones extends Phones { | ||||
| } | ||||
| 
 | ||||
| // #docregion routeparams
 | ||||
| describe('PhoneDetail', function(){ | ||||
| describe('PhoneDetail', () => { | ||||
| 
 | ||||
|   beforeEachProviders(() => [ | ||||
|     provide(Phones, {useClass: MockPhones}), | ||||
| @ -46,7 +46,7 @@ describe('PhoneDetail', function(){ | ||||
|       fixture.detectChanges(); | ||||
|       let compiled = fixture.debugElement.nativeElement; | ||||
| 
 | ||||
|       expect(compiled.querySelector('.h1')).toHaveText(xyzPhoneData().name); | ||||
|       expect(compiled.querySelector('h1')).toHaveText(xyzPhoneData().name); | ||||
|     }); | ||||
|   })); | ||||
| 
 | ||||
|  | ||||
| @ -4,7 +4,7 @@ import {describe, beforeEachProviders, it, inject} from 'angular2/testing'; | ||||
| import PhoneFilterPipe from '../../app/js/phone_list/PhoneFilterPipe'; | ||||
| import {Phone} from '../../app/js/core/Phones'; | ||||
| 
 | ||||
| describe('PhoneFilterPipe', function() { | ||||
| describe('PhoneFilterPipe', () => { | ||||
| 
 | ||||
|   let phones:Phone[] = [ | ||||
|     {name: 'Nexus S', snippet: 'The Nexus S Phone', images: []}, | ||||
|  | ||||
| @ -22,7 +22,7 @@ class MockPhones extends Phones { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| describe('PhoneList', function(){ | ||||
| describe('PhoneList', () => { | ||||
| 
 | ||||
|   beforeEachProviders(() => [ | ||||
|     provide(Phones, {useClass: MockPhones}), | ||||
| @ -34,7 +34,6 @@ describe('PhoneList', function(){ | ||||
|       injectAsync([TestComponentBuilder], (tcb) => { | ||||
|     return tcb.createAsync(PhoneList).then((fixture) => { | ||||
|       fixture.detectChanges(); | ||||
|       fixture.detectChanges(); | ||||
| 
 | ||||
|       let compiled = fixture.debugElement.nativeElement; | ||||
| 
 | ||||
|  | ||||
| @ -3,7 +3,7 @@ import {describe, beforeEachProviders, it, inject} from 'angular2/testing'; | ||||
| import {HTTP_PROVIDERS} from 'angular2/http'; | ||||
| import {Phones} from '../../app/js/core/Phones'; | ||||
| 
 | ||||
| describe('Phones', function() { | ||||
| describe('Phones', () => { | ||||
| 
 | ||||
|   // load providers
 | ||||
|   beforeEachProviders(() => [Phones, HTTP_PROVIDERS]); | ||||
|  | ||||
| @ -6,12 +6,12 @@ | ||||
|   "repository": "https://github.com/angular/angular-phonecat", | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "angular2": "2.0.0-alpha.54", | ||||
|     "angular2": "2.0.0-beta.3", | ||||
|     "es6-promise": "^3.0.2", | ||||
|     "es6-shim": "^0.33.3", | ||||
|     "reflect-metadata": "0.1.2", | ||||
|     "rxjs": "5.0.0-beta.0", | ||||
|     "zone.js": "0.5.10", | ||||
|     "zone.js": "0.5.11", | ||||
|     "systemjs": "0.19.6" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|  | ||||
| @ -24,11 +24,11 @@ module.exports = function(config){ | ||||
|       'node_modules/angular2/bundles/http.dev.js', | ||||
|       // #enddocregion ng2-http
 | ||||
|       'test/karma_test_shim.js', | ||||
|       {pattern: 'app/js/**/*.js', included: false, watched: true}, | ||||
|       {pattern: 'test/unit/**/*.js', included: false, watched: true}, | ||||
|       // #docregion ng2-testing
 | ||||
|       'node_modules/angular2/bundles/testing.dev.js' | ||||
|       'node_modules/angular2/bundles/testing.dev.js', | ||||
|       // #enddocregion ng2-testing
 | ||||
|       {pattern: 'app/js/**/*.js', included: false, watched: true}, | ||||
|       {pattern: 'test/unit/**/*.js', included: false, watched: true} | ||||
|     // #docregion ng2
 | ||||
|     ], | ||||
|     // #enddocregion ng2
 | ||||
|  | ||||
| @ -22,8 +22,11 @@ System.config({ | ||||
| }); | ||||
| 
 | ||||
| // #docregion ng2
 | ||||
| System.import('angular2/src/platform/browser/browser_adapter').then(function(browser_adapter) { | ||||
|   browser_adapter.BrowserDomAdapter.makeCurrent(); | ||||
| System.import('angular2/testing').then(function(testing) { | ||||
|   return System.import('angular2/platform/testing/browser').then(function(testing_platform_browser) { | ||||
|     testing.setBaseTestProviders(testing_platform_browser.TEST_BROWSER_PLATFORM_PROVIDERS, | ||||
|                                  testing_platform_browser.TEST_BROWSER_APPLICATION_PROVIDERS); | ||||
|   }); | ||||
| }).then(function() { | ||||
|   return Promise.all( | ||||
|     Object.keys(window.__karma__.files) // All files served by Karma.
 | ||||
|  | ||||
| @ -1,2 +1,4 @@ | ||||
| // #docregion
 | ||||
| /// <reference path="../node_modules/angular2/typings/jasmine/jasmine.d.ts" />
 | ||||
| /// <reference path="../typings/angularjs/angular-mocks.d.ts" />
 | ||||
| /// <reference path="../node_modules/angular2/typings/angular-protractor/angular-protractor.d.ts" />
 | ||||
|  | ||||
| @ -3,7 +3,7 @@ import {describe, beforeEachProviders, it, inject} from 'angular2/testing'; | ||||
| import {HTTP_PROVIDERS} from 'angular2/http'; | ||||
| import {Phones} from '../../app/js/core/Phones'; | ||||
| 
 | ||||
| describe('Phones', function() { | ||||
| describe('Phones', () => { | ||||
| 
 | ||||
|   // load providers
 | ||||
|   beforeEachProviders(() => [Phones, HTTP_PROVIDERS]); | ||||
|  | ||||
| @ -1,12 +1,11 @@ | ||||
| // #docregion
 | ||||
| import {Observable} from 'rxjs'; | ||||
| import {describe, beforeEach, it} from 'angular2/testing'; | ||||
| import '../../app/js/phone_detail/phone_detail.module'; | ||||
| import {Phones} from '../../app/js/core/Phones'; | ||||
| 
 | ||||
| import {FromObservable} from 'rxjs/observable/from'; | ||||
| 
 | ||||
| describe('PhoneDetailCtrl', function(){ | ||||
| describe('PhoneDetailCtrl', () => { | ||||
|   var scope, phones, $controller, | ||||
|       xyzPhoneData = function() { | ||||
|         return { | ||||
|  | ||||
| @ -1,12 +1,11 @@ | ||||
| // #docregion
 | ||||
| import {Observable} from 'rxjs'; | ||||
| import {describe, beforeEach, it} from 'angular2/testing'; | ||||
| import '../../app/js/phone_list/phone_list.module'; | ||||
| import {Phones} from '../../app/js/core/Phones'; | ||||
| 
 | ||||
| import {FromObservable} from 'rxjs/observable/from'; | ||||
| 
 | ||||
| describe('PhoneListCtrl', function(){ | ||||
| describe('PhoneListCtrl', () => { | ||||
|   var scope, ctrl, $httpBackend; | ||||
| 
 | ||||
|   beforeEach(angular.mock.module('phonecat.list')); | ||||
|  | ||||
| @ -1237,15 +1237,6 @@ figure | ||||
|    | ||||
| +makeExample('upgrade/ts/ng2_initial/test/karma.conf.1.js', 'ng2', 'test/karma.conf.js', {otl: /(.*\.\.\/node\_modules\/angular2.*)/}) | ||||
| 
 | ||||
| .alert.is-important | ||||
|   :marked | ||||
|     After installing Angular 2, the TypeScript compiler will complain | ||||
|     about a clash in the global `$` variable: The jQuery typings used | ||||
|     by the Angular 1 typings introduce one, and the Protractor typings | ||||
|     used by Angular 2 introduce another. This will be resolved in a  | ||||
|     later release. See [issue #5459](https://github.com/angular/angular/issues/5459) | ||||
|     for some workarounds. | ||||
| 
 | ||||
| :marked | ||||
|   ## Bootstrapping A Hybrid 1+2 PhoneCat | ||||
| 
 | ||||
| @ -1271,14 +1262,17 @@ figure | ||||
|   ``` | ||||
|   rm -r typings/jasmine | ||||
|   ``` | ||||
|   Also remove the  reference to those type definitions from | ||||
|   `test/test_helper.ts`. | ||||
|    | ||||
|   The same also goes for Protractor: Angular 2 comes with the types of the | ||||
|   Protractor APIs, so it's safe to remove the `declare var` line from | ||||
|   `scenarios.ts`. | ||||
|   We can replace the reference to those type definitions in | ||||
|   `test/test_helper.ts` with the ones that come with Angular 2. Let's also | ||||
|   add a reference to the Protractor typings while we're at it: | ||||
|    | ||||
| +makeExample('upgrade/ts/ng2_initial/test/test_helper.ts', null, 'test/test_helper.ts') | ||||
| 
 | ||||
| :marked | ||||
|   It is now safe to remove the `declare var` line from `scenarios.ts` - the | ||||
|   Protractor APIs are now fully typed! | ||||
| 
 | ||||
|   To boostrap a hybrid application, we first need to initialize an `UpgradeAdapter`, | ||||
|   which [provides the glue](#upgrading-with-the-upgrade-adapter) that joins the two | ||||
|   versions of the framework together. Let's import the `UpgradeAdapter` class into | ||||
| @ -1464,8 +1458,8 @@ figure | ||||
| +makeExample('upgrade/ts/ng2_initial/test/karma.conf.1.js', 'ng2-testing') | ||||
| 
 | ||||
| :marked | ||||
|   Then we'll update the Karma test shim. It should load the Angular 2 | ||||
|   browser adapter before getting to the spec files: | ||||
|   Then we'll update the Karma test shim. It'll make some of Angular 2 core | ||||
|   providers available before starting to load any of the spec files: | ||||
|    | ||||
| +makeExample('upgrade/ts/ng2_initial/test/karma_test_shim.js', null, 'test/karma_test_shim.js') | ||||
| 
 | ||||
| @ -1668,6 +1662,11 @@ figure | ||||
|    | ||||
| +makeExample('upgrade/ts/ng2_components/test/karma.conf.1.js', 'html', 'test/karma.conf.js') | ||||
| 
 | ||||
| .alert.is-important | ||||
|   :marked | ||||
|     There is [a fixed but as of yet not released issue](https://github.com/angular/angular/pull/5996) | ||||
|     with the async pipe that may currently cause some problems with these tests. | ||||
| 
 | ||||
| :marked | ||||
|   Now we can start looking at our other controller, which is the one for | ||||
|   the phone details. Rename `phone_detail.controller.ts` to `PhoneDetail.ts`, and set the | ||||
| @ -1986,7 +1985,9 @@ table | ||||
|   * `app/js/core/upgrade_adapter.ts` | ||||
|   * `app/js/phone_detail/phone_detail.module.ts` | ||||
|   * `app/js/phone_list/phone_list.module.ts` | ||||
|   * `test/test_helper.ts` | ||||
| 
 | ||||
|   From `test/test_helper.ts` you can remove the reference to Angular 1 typings. The | ||||
|   only ones still needed are the ones for Jasmine and Protractor. | ||||
| 
 | ||||
|   Finally, from `index.html` and `karma.conf.js`, remove all references to | ||||
|   Angular 1 scripts as well as jQuery. When you're done, this is what `index.html` | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user