79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								import {
							 | 
						||
| 
								 | 
							
								  AsyncTestCompleter,
							 | 
						||
| 
								 | 
							
								  beforeEach,
							 | 
						||
| 
								 | 
							
								  ddescribe,
							 | 
						||
| 
								 | 
							
								  describe,
							 | 
						||
| 
								 | 
							
								  expect,
							 | 
						||
| 
								 | 
							
								  iit,
							 | 
						||
| 
								 | 
							
								  inject,
							 | 
						||
| 
								 | 
							
								  it,
							 | 
						||
| 
								 | 
							
								  xdescribe,
							 | 
						||
| 
								 | 
							
								  xit,
							 | 
						||
| 
								 | 
							
								  } from 'angular2/test_lib';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import {bootstrap} from 'angular2/src/core/application';
							 | 
						||
| 
								 | 
							
								import {Component, Directive} from 'angular2/src/core/annotations_impl/annotations';
							 | 
						||
| 
								 | 
							
								import {DOM} from 'angular2/src/dom/dom_adapter';
							 | 
						||
| 
								 | 
							
								import {bind} from 'angular2/di';
							 | 
						||
| 
								 | 
							
								import {View} from 'angular2/src/core/annotations_impl/view';
							 | 
						||
| 
								 | 
							
								import {DOCUMENT_TOKEN} from 'angular2/src/render/dom/dom_renderer';
							 | 
						||
| 
								 | 
							
								import {RouteConfig} from 'angular2/src/router/route_config_impl';
							 | 
						||
| 
								 | 
							
								import {routerInjectables, Router, RouteParams, RouterOutlet} from 'angular2/router';
							 | 
						||
| 
								 | 
							
								import {SpyLocation} from 'angular2/src/mock/location_mock';
							 | 
						||
| 
								 | 
							
								import {Location} from 'angular2/src/router/location';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export function main() {
							 | 
						||
| 
								 | 
							
								  describe('router injectables', () => {
							 | 
						||
| 
								 | 
							
								    var fakeDoc, el, testBindings;
							 | 
						||
| 
								 | 
							
								    beforeEach(() => {
							 | 
						||
| 
								 | 
							
								      fakeDoc = DOM.createHtmlDocument();
							 | 
						||
| 
								 | 
							
								      el = DOM.createElement('app-cmp', fakeDoc);
							 | 
						||
| 
								 | 
							
								      DOM.appendChild(fakeDoc.body, el);
							 | 
						||
| 
								 | 
							
								      testBindings = [
							 | 
						||
| 
								 | 
							
								        routerInjectables,
							 | 
						||
| 
								 | 
							
								        bind(Location).toClass(SpyLocation),
							 | 
						||
| 
								 | 
							
								        bind(DOCUMENT_TOKEN).toValue(fakeDoc)
							 | 
						||
| 
								 | 
							
								      ];
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    it('should support bootstrap a simple app', inject([AsyncTestCompleter], (async) => {
							 | 
						||
| 
								 | 
							
								      bootstrap(AppCmp, testBindings).then((applicationRef) => {
							 | 
						||
| 
								 | 
							
								        var router = applicationRef.hostComponent.router;
							 | 
						||
| 
								 | 
							
								        router.subscribe((_) => {
							 | 
						||
| 
								 | 
							
								          expect(el).toHaveText('outer { hello }');
							 | 
						||
| 
								 | 
							
								          async.done();
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    //TODO: add a test in which the child component has bindings
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@Component({
							 | 
						||
| 
								 | 
							
								  selector: 'hello-cmp'
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								@View({
							 | 
						||
| 
								 | 
							
								  template: "hello"
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								class HelloCmp {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@Component({
							 | 
						||
| 
								 | 
							
								  selector: 'app-cmp'
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								@View({
							 | 
						||
| 
								 | 
							
								  template: "outer { <router-outlet></router-outlet> }",
							 | 
						||
| 
								 | 
							
								  directives: [RouterOutlet]
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								@RouteConfig([{
							 | 
						||
| 
								 | 
							
								  path: '/', component: HelloCmp
							 | 
						||
| 
								 | 
							
								}])
							 | 
						||
| 
								 | 
							
								class AppCmp {
							 | 
						||
| 
								 | 
							
								  router:Router;
							 | 
						||
| 
								 | 
							
								  constructor(router:Router) {
							 | 
						||
| 
								 | 
							
								    this.router = router;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |