From 8c66a2527045c0c99b0a8c07258cf36aa5044945 Mon Sep 17 00:00:00 2001 From: Julie Ralph Date: Fri, 26 Jun 2015 16:27:05 -0700 Subject: [PATCH] chore(test): remove TestBed Instead, use TestComponentBuilder. Closes #2354 --- modules/angular2/src/test_lib/test_bed.ts | 141 ------------------ .../angular2/src/test_lib/test_injector.ts | 2 - modules/angular2/test.ts | 2 +- 3 files changed, 1 insertion(+), 144 deletions(-) delete mode 100644 modules/angular2/src/test_lib/test_bed.ts diff --git a/modules/angular2/src/test_lib/test_bed.ts b/modules/angular2/src/test_lib/test_bed.ts deleted file mode 100644 index c8ae343213..0000000000 --- a/modules/angular2/src/test_lib/test_bed.ts +++ /dev/null @@ -1,141 +0,0 @@ -import {Injector, bind, Injectable} from 'angular2/di'; - -import {Type, isPresent, BaseException} from 'angular2/src/facade/lang'; -import {Promise} from 'angular2/src/facade/async'; -import {isBlank} from 'angular2/src/facade/lang'; -import {List} from 'angular2/src/facade/collection'; - -import {View} from 'angular2/src/core/annotations_impl/view'; - -import {ViewResolver} from 'angular2/src/core/compiler/view_resolver'; -import {AppView} from 'angular2/src/core/compiler/view'; -import {internalView} from 'angular2/src/core/compiler/view_ref'; -import { - DynamicComponentLoader, - ComponentRef -} from 'angular2/src/core/compiler/dynamic_component_loader'; - -import {queryView, viewRootNodes, el} from './utils'; -import {instantiateType, getTypeOf} from './lang_utils'; - -import {DOCUMENT_TOKEN} from 'angular2/src/render/dom/dom_renderer'; -import {DOM} from 'angular2/src/dom/dom_adapter'; - -/** - * @exportedAs angular2/test - * TODO(juliemr): Deprecate in favor of TestComponentBuilder - */ -@Injectable() -export class TestBed { - _injector: Injector; - - constructor(injector: Injector) { this._injector = injector; } - - /** - * Overrides the {@link View} of a {@link Component}. - * - * @see setInlineTemplate() to only override the html - * - * @param {Type} component - * @param {ViewDefinition} view - */ - overrideView(component: Type, view: View): void { - this._injector.get(ViewResolver).setView(component, view); - } - - /** - * Overrides only the html of a {@link Component}. - * All the other propoerties of the component's {@link View} are preserved. - * - * @param {Type} component - * @param {string} html - */ - setInlineTemplate(component: Type, html: string): void { - this._injector.get(ViewResolver).setInlineTemplate(component, html); - } - - /** - * Overrides the directives from the component {@link View}. - * - * @param {Type} component - * @param {Type} from - * @param {Type} to - */ - overrideDirective(component: Type, from: Type, to: Type): void { - this._injector.get(ViewResolver).overrideViewDirective(component, from, to); - } - - /** - * Creates an `AppView` for the given component. - * - * Only either a component or a context needs to be specified but both can be provided for - * advanced use cases (ie subclassing the context). - * - * @param {Type} component - * @param {*} context - * @param {string} html Use as the component template when specified (shortcut for - * setInlineTemplate) - * @return {Promise} - */ - createView(component: Type, - {context = null, html = null}: {context?: any, - html?: string} = {}): Promise { - if (isBlank(component) && isBlank(context)) { - throw new BaseException('You must specified at least a component or a context'); - } - - if (isBlank(component)) { - component = getTypeOf(context); - } else if (isBlank(context)) { - context = instantiateType(component); - } - - if (isPresent(html)) { - this.setInlineTemplate(component, html); - } - - var doc = this._injector.get(DOCUMENT_TOKEN); - var rootEl = el('
'); - DOM.appendChild(doc.body, rootEl); - - var componentBinding = bind(component).toValue(context); - return this._injector.get(DynamicComponentLoader) - .loadAsRoot(componentBinding, '#root', this._injector) - .then((hostComponentRef) => { return new ViewProxy(hostComponentRef); }); - } -} - -/** - * Proxy to `AppView` return by `createView` in {@link TestBed} which offers a high level API for - * tests. - * TODO(juliemr): Deprecate in favor of TestElement - */ -export class ViewProxy { - _componentRef: ComponentRef; - _view: AppView; - - constructor(componentRef: ComponentRef) { - this._componentRef = componentRef; - this._view = internalView(componentRef.hostView).componentChildViews[0]; - } - - get context(): any { return this._view.context; } - - get rootNodes(): List { return viewRootNodes(this._view); } - - detectChanges(): void { - this._view.changeDetector.detectChanges(); - this._view.changeDetector.checkNoChanges(); - } - - querySelector(selector): any { return queryView(this._view, selector); } - - destroy() { this._componentRef.dispose(); } - - /** - * @returns `AppView` returns the underlying `AppView`. - * - * Prefer using the other methods which hide implementation details. - */ - get rawView(): AppView { return this._view; } -} diff --git a/modules/angular2/src/test_lib/test_injector.ts b/modules/angular2/src/test_lib/test_injector.ts index 437e97fb52..f67036bb89 100644 --- a/modules/angular2/src/test_lib/test_injector.ts +++ b/modules/angular2/src/test_lib/test_injector.ts @@ -37,7 +37,6 @@ import {MockLocationStrategy} from 'angular2/src/mock/mock_location_strategy'; import {LocationStrategy} from 'angular2/src/router/location_strategy'; import {MockNgZone} from 'angular2/src/mock/ng_zone_mock'; -import {TestBed} from './test_bed'; import {TestComponentBuilder} from './test_component_builder'; import {Injector} from 'angular2/di'; @@ -117,7 +116,6 @@ function _getAppBindings() { AppRootUrl, StyleUrlResolver, StyleInliner, - TestBed, TestComponentBuilder, bind(NgZone).toClass(MockNgZone), bind(EventManager) diff --git a/modules/angular2/test.ts b/modules/angular2/test.ts index 7094ec54c5..9f2b5bef9a 100644 --- a/modules/angular2/test.ts +++ b/modules/angular2/test.ts @@ -7,5 +7,5 @@ * This module is not included in the `angular2` module; you must import the test module explicitly. * */ -export * from './src/test_lib/test_bed'; +export * from './src/test_lib/test_component_builder'; export * from './src/test_lib/test_injector';