{"version":3,"sources":["test_bed.js"],"names":[],"mappings":"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","file":"angular2/src/test_lib/test_bed.es6","sourcesContent":["import {Injector, bind} from 'angular2/di';\n\nimport {Type, isPresent, BaseException} from 'angular2/src/facade/lang';\nimport {Promise} from 'angular2/src/facade/async';\nimport {isBlank} from 'angular2/src/facade/lang';\nimport {List} from 'angular2/src/facade/collection';\n\nimport {View} from 'angular2/src/core/annotations/view';\n\nimport {TemplateResolver} from 'angular2/src/core/compiler/template_resolver';\nimport {Compiler} from 'angular2/src/core/compiler/compiler';\nimport {AppView} from 'angular2/src/core/compiler/view';\nimport {ViewFactory} from 'angular2/src/core/compiler/view_factory';\nimport {AppViewHydrator} from 'angular2/src/core/compiler/view_hydrator';\n\nimport {DirectiveBinding} from 'angular2/src/core/compiler/element_injector';\nimport {DirectiveMetadataReader} from 'angular2/src/core/compiler/directive_metadata_reader';\n\nimport {queryView, viewRootNodes, el} from './utils';\nimport {instantiateType, getTypeOf} from './lang_utils';\n\n/**\n * @exportedAs angular2/test\n */\nexport class TestBed {\n  _injector: Injector;\n\n  constructor(injector: Injector) {\n    this._injector = injector;\n  }\n\n  /**\n   * Overrides the {@link View} of a {@link Component}.\n   *\n   * @see setInlineTemplate() to only override the html\n   *\n   * @param {Type} component\n   * @param {ViewDefinition} template\n   */\n  overrideView(component: Type, template: View): void {\n    this._injector.get(TemplateResolver).setView(component, template);\n  }\n\n  /**\n   * Overrides only the html of a {@link Component}.\n   * All the other propoerties of the component's {@link View} are preserved.\n   *\n   * @param {Type} component\n   * @param {string} html\n   */\n  setInlineTemplate(component: Type, html: string): void {\n    this._injector.get(TemplateResolver).setInlineTemplate(component, html);\n  }\n\n  /**\n   * Overrides the directives from the component {@link View}.\n   *\n   * @param {Type} component\n   * @param {Type} from\n   * @param {Type} to\n   */\n  overrideDirective(component: Type, from: Type, to: Type): void {\n    this._injector.get(TemplateResolver).overrideTemplateDirective(component, from, to);\n  }\n\n  /**\n   * Creates an `AppView` for the given component.\n   *\n   * Only either a component or a context needs to be specified but both can be provided for\n   * advanced use cases (ie subclassing the context).\n   *\n   * @param {Type} component\n   * @param {*} context\n   * @param {string} html Use as the component template when specified (shortcut for setInlineTemplate)\n   * @return {Promise<ViewProxy>}\n   */\n  createView(component: Type,\n             {context = null, html = null}: {context:any, html: string} = {}): Promise<AppView> {\n\n    if (isBlank(component) && isBlank(context)) {\n      throw new BaseException('You must specified at least a component or a context');\n    }\n\n    if (isBlank(component)) {\n      component = getTypeOf(context);\n    } else if (isBlank(context)) {\n      context = instantiateType(component);\n    }\n\n    if (isPresent(html)) {\n      this.setInlineTemplate(component, html);\n    }\n\n    var rootEl = el('<div></div>');\n    var metadataReader = this._injector.get(DirectiveMetadataReader);\n    var componentBinding = DirectiveBinding.createFromBinding(\n      bind(component).toValue(context),\n      metadataReader.read(component).annotation\n    );\n    return this._injector.get(Compiler).compileInHost(componentBinding).then((pv) => {\n      var viewFactory = this._injector.get(ViewFactory);\n      var viewHydrator = this._injector.get(AppViewHydrator);\n      var hostView = viewFactory.getView(pv);\n      viewHydrator.hydrateInPlaceHostView(null, rootEl, hostView, this._injector);\n\n      return new ViewProxy(this._injector, hostView.componentChildViews[0]);\n    });\n  }\n}\n\n/**\n * Proxy to `AppView` return by `createView` in {@link TestBed} which offers a high level API for tests.\n */\nexport class ViewProxy {\n  _view: AppView;\n  _injector: Injector;\n\n  constructor(injector: Injector, view: AppView) {\n    this._view = view;\n    this._injector = injector;\n  }\n\n  get context(): any {\n    return this._view.context;\n  }\n\n  get rootNodes(): List {\n    return viewRootNodes(this._view);\n  }\n\n  detectChanges(): void {\n    this._view.changeDetector.detectChanges();\n  }\n\n  querySelector(selector) {\n    return queryView(this._view, selector);\n  }\n\n  destroy() {\n    var viewHydrator = this._injector.get(AppViewHydrator);\n    viewHydrator.dehydrateInPlaceHostView(null, this._view);\n  }\n\n  /**\n   * @returns `AppView` returns the underlying `AppView`.\n   *\n   * Prefer using the other methods which hide implementation details.\n   */\n  get rawView(): AppView {\n    return this._view;\n  }\n}\n"]}