{"version":3,"file":"testing.js","sources":["../../../../../../packages/platform-browser-dynamic/testing/src/dom_test_component_renderer.ts","../../../../../../packages/platform-browser-dynamic/testing/src/metadata_overrider.ts","../../../../../../packages/platform-browser-dynamic/testing/src/compiler_factory.ts","../../../../../../packages/platform-browser-dynamic/testing/src/platform_core_dynamic_testing.ts","../../../../../../packages/platform-browser-dynamic/testing/src/private_export_testing.ts","../../../../../../packages/platform-browser-dynamic/testing/src/testing.ts","../../../../../../packages/platform-browser-dynamic/testing/public_api.ts","../../../../../../packages/platform-browser-dynamic/testing/index.ts","../../../../../../packages/platform-browser-dynamic/testing/testing.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable} from '@angular/core';\nimport {TestComponentRenderer} from '@angular/core/testing';\nimport {ÉµgetDOM as getDOM} from '@angular/platform-browser';\n\n/**\n * A DOM based implementation of the TestComponentRenderer.\n */\n@Injectable()\nexport class DOMTestComponentRenderer extends TestComponentRenderer {\n  constructor(@Inject(DOCUMENT) private _doc: any) { super(); }\n\n  insertRootElement(rootElId: string) {\n    const rootEl = <HTMLElement>getDOM().firstChild(\n        getDOM().content(getDOM().createTemplate(`<div id=\"${rootElId}\"></div>`)));\n\n    // TODO(juliemr): can/should this be optional?\n    const oldRoots = getDOM().querySelectorAll(this._doc, '[id^=root]');\n    for (let i = 0; i < oldRoots.length; i++) {\n      getDOM().remove(oldRoots[i]);\n    }\n    getDOM().appendChild(this._doc.body, rootEl);\n  }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// `MetadataOverrider` has been moved to core/testing to allow using it from the render3 TestBed\nexport {ÉµMetadataOverrider as MetadataOverrider} from '@angular/core/testing';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CompileReflector, DirectiveResolver, ERROR_COMPONENT_TYPE, NgModuleResolver, PipeResolver} from '@angular/compiler';\nimport {MockDirectiveResolver, MockNgModuleResolver, MockPipeResolver} from '@angular/compiler/testing';\nimport {CompilerFactory, CompilerOptions, Component, ComponentFactory, Directive, Injector, ModuleWithComponentFactories, NgModule, NgModuleFactory, Pipe, StaticProvider, Type, Éµstringify as stringify} from '@angular/core';\nimport {MetadataOverride, ÉµTestingCompiler as TestingCompiler, ÉµTestingCompilerFactory as TestingCompilerFactory} from '@angular/core/testing';\nimport {ÉµCompilerImpl as CompilerImpl} from '@angular/platform-browser-dynamic';\n\nimport {MetadataOverrider} from './metadata_overrider';\n\nexport const COMPILER_PROVIDERS: StaticProvider[] = [\n  {provide: MockPipeResolver, deps: [CompileReflector]},\n  {provide: PipeResolver, useExisting: MockPipeResolver},\n  {provide: MockDirectiveResolver, deps: [CompileReflector]},\n  {provide: DirectiveResolver, useExisting: MockDirectiveResolver},\n  {provide: MockNgModuleResolver, deps: [CompileReflector]},\n  {provide: NgModuleResolver, useExisting: MockNgModuleResolver},\n];\n\nexport class TestingCompilerFactoryImpl implements TestingCompilerFactory {\n  constructor(private _injector: Injector, private _compilerFactory: CompilerFactory) {}\n\n  createTestingCompiler(options: CompilerOptions[]): TestingCompiler {\n    const compiler = <CompilerImpl>this._compilerFactory.createCompiler(options);\n    return new TestingCompilerImpl(\n        compiler, compiler.injector.get(MockDirectiveResolver),\n        compiler.injector.get(MockPipeResolver), compiler.injector.get(MockNgModuleResolver));\n  }\n}\n\nexport class TestingCompilerImpl implements TestingCompiler {\n  private _overrider = new MetadataOverrider();\n  constructor(\n      private _compiler: CompilerImpl, private _directiveResolver: MockDirectiveResolver,\n      private _pipeResolver: MockPipeResolver, private _moduleResolver: MockNgModuleResolver) {}\n  get injector(): Injector { return this._compiler.injector; }\n\n  compileModuleSync<T>(moduleType: Type<T>): NgModuleFactory<T> {\n    return this._compiler.compileModuleSync(moduleType);\n  }\n\n  compileModuleAsync<T>(moduleType: Type<T>): Promise<NgModuleFactory<T>> {\n    return this._compiler.compileModuleAsync(moduleType);\n  }\n  compileModuleAndAllComponentsSync<T>(moduleType: Type<T>): ModuleWithComponentFactories<T> {\n    return this._compiler.compileModuleAndAllComponentsSync(moduleType);\n  }\n\n  compileModuleAndAllComponentsAsync<T>(moduleType: Type<T>):\n      Promise<ModuleWithComponentFactories<T>> {\n    return this._compiler.compileModuleAndAllComponentsAsync(moduleType);\n  }\n\n  getComponentFactory<T>(component: Type<T>): ComponentFactory<T> {\n    return this._compiler.getComponentFactory(component);\n  }\n\n  checkOverrideAllowed(type: Type<any>) {\n    if (this._compiler.hasAotSummary(type)) {\n      throw new Error(`${stringify(type)} was AOT compiled, so its metadata cannot be changed.`);\n    }\n  }\n\n  overrideModule(ngModule: Type<any>, override: MetadataOverride<NgModule>): void {\n    this.checkOverrideAllowed(ngModule);\n    const oldMetadata = this._moduleResolver.resolve(ngModule, false);\n    this._moduleResolver.setNgModule(\n        ngModule, this._overrider.overrideMetadata(NgModule, oldMetadata, override));\n    this.clearCacheFor(ngModule);\n  }\n  overrideDirective(directive: Type<any>, override: MetadataOverride<Directive>): void {\n    this.checkOverrideAllowed(directive);\n    const oldMetadata = this._directiveResolver.resolve(directive, false);\n    this._directiveResolver.setDirective(\n        directive, this._overrider.overrideMetadata(Directive, oldMetadata !, override));\n    this.clearCacheFor(directive);\n  }\n  overrideComponent(component: Type<any>, override: MetadataOverride<Component>): void {\n    this.checkOverrideAllowed(component);\n    const oldMetadata = this._directiveResolver.resolve(component, false);\n    this._directiveResolver.setDirective(\n        component, this._overrider.overrideMetadata(Component, oldMetadata !, override));\n    this.clearCacheFor(component);\n  }\n  overridePipe(pipe: Type<any>, override: MetadataOverride<Pipe>): void {\n    this.checkOverrideAllowed(pipe);\n    const oldMetadata = this._pipeResolver.resolve(pipe, false);\n    this._pipeResolver.setPipe(pipe, this._overrider.overrideMetadata(Pipe, oldMetadata, override));\n    this.clearCacheFor(pipe);\n  }\n  loadAotSummaries(summaries: () => any[]) { this._compiler.loadAotSummaries(summaries); }\n  clearCache(): void { this._compiler.clearCache(); }\n  clearCacheFor(type: Type<any>) { this._compiler.clearCacheFor(type); }\n\n  getComponentFromError(error: Error) { return (error as any)[ERROR_COMPONENT_TYPE] || null; }\n\n  getModuleId(moduleType: Type<any>): string|undefined {\n    return this._moduleResolver.resolve(moduleType, true).id;\n  }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {COMPILER_OPTIONS, CompilerFactory, Injector, PlatformRef, createPlatformFactory} from '@angular/core';\nimport {ÉµTestingCompilerFactory as TestingCompilerFactory} from '@angular/core/testing';\nimport {ÉµplatformCoreDynamic as platformCoreDynamic} from '@angular/platform-browser-dynamic';\n\nimport {COMPILER_PROVIDERS, TestingCompilerFactoryImpl} from './compiler_factory';\n\n/**\n * Platform for dynamic tests\n *\n * @publicApi\n */\nexport const platformCoreDynamicTesting: (extraProviders?: any[]) => PlatformRef =\n    createPlatformFactory(platformCoreDynamic, 'coreDynamicTesting', [\n      {provide: COMPILER_OPTIONS, useValue: {providers: COMPILER_PROVIDERS}, multi: true}, {\n        provide: TestingCompilerFactory,\n        useClass: TestingCompilerFactoryImpl,\n        deps: [Injector, CompilerFactory]\n      }\n    ]);\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport {DOMTestComponentRenderer as ÉµDOMTestComponentRenderer} from './dom_test_component_renderer';\nexport {platformCoreDynamicTesting as ÉµplatformCoreDynamicTesting} from './platform_core_dynamic_testing';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule, PlatformRef, StaticProvider, createPlatformFactory} from '@angular/core';\nimport {TestComponentRenderer} from '@angular/core/testing';\nimport {ÉµINTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS as INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS} from '@angular/platform-browser-dynamic';\nimport {BrowserTestingModule} from '@angular/platform-browser/testing';\n\nimport {DOMTestComponentRenderer} from './dom_test_component_renderer';\nimport {platformCoreDynamicTesting} from './platform_core_dynamic_testing';\n\nexport * from './private_export_testing';\n\n/**\n * @publicApi\n */\nexport const platformBrowserDynamicTesting = createPlatformFactory(\n    platformCoreDynamicTesting, 'browserDynamicTesting',\n    INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS);\n\n/**\n * NgModule for testing.\n *\n * @publicApi\n */\n@NgModule({\n  exports: [BrowserTestingModule],\n  providers: [\n    {provide: TestComponentRenderer, useClass: DOMTestComponentRenderer},\n  ]\n})\nexport class BrowserDynamicTestingModule {\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport * from './src/testing';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {COMPILER_PROVIDERS as Éµangular_packages_platform_browser_dynamic_testing_testing_a,TestingCompilerFactoryImpl as Éµangular_packages_platform_browser_dynamic_testing_testing_b} from './src/compiler_factory';"],"names":["tslib_1.__extends","getDOM","tslib_1.__param","MetadataOverrider","stringify","platformCoreDynamic","TestingCompilerFactory","INTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS"],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;AAaA;;;AAIA;IAA8CA,4CAAqB;IACjE,kCAAsC,IAAS;QAA/C,YAAmD,iBAAO,SAAG;QAAvB,UAAI,GAAJ,IAAI,CAAK;;KAAc;IAE7D,oDAAiB,GAAjB,UAAkB,QAAgB;QAChC,IAAM,MAAM,GAAgBC,OAAM,EAAE,CAAC,UAAU,CAC3CA,OAAM,EAAE,CAAC,OAAO,CAACA,OAAM,EAAE,CAAC,cAAc,CAAC,eAAY,QAAQ,cAAU,CAAC,CAAC,CAAC,CAAC;;QAG/E,IAAM,QAAQ,GAAGA,OAAM,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxCA,OAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9B;QACDA,OAAM,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC9C;IAbU,wBAAwB;QADpC,UAAU,EAAE;QAEEC,WAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;;OADlB,wBAAwB,CAcpC;IAAD,+BAAC;CAAA,CAd6C,qBAAqB;;ACjBnE;;;;;;GAMG;;ACNH;;;;;;;AAQA,IAQa,kBAAkB,GAAqB;IAClD,EAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAC;IACrD,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAC;IACtD,EAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAC;IAC1D,EAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,qBAAqB,EAAC;IAChE,EAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAC;IACzD,EAAC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,oBAAoB,EAAC;CAC/D,CAAC;AAEF;IACE,oCAAoB,SAAmB,EAAU,gBAAiC;QAA9D,cAAS,GAAT,SAAS,CAAU;QAAU,qBAAgB,GAAhB,gBAAgB,CAAiB;KAAI;IAEtF,0DAAqB,GAArB,UAAsB,OAA0B;QAC9C,IAAM,QAAQ,GAAiB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7E,OAAO,IAAI,mBAAmB,CAC1B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,EACtD,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;KAC3F;IACH,iCAAC;CAAA,IAAA;AAED;IAEE,6BACY,SAAuB,EAAU,kBAAyC,EAC1E,aAA+B,EAAU,eAAqC;QAD9E,cAAS,GAAT,SAAS,CAAc;QAAU,uBAAkB,GAAlB,kBAAkB,CAAuB;QAC1E,kBAAa,GAAb,aAAa,CAAkB;QAAU,oBAAe,GAAf,eAAe,CAAsB;QAHlF,eAAU,GAAG,IAAIC,kBAAiB,EAAE,CAAC;KAGiD;IAC9F,sBAAI,yCAAQ;aAAZ,cAA2B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;;;OAAA;IAE5D,+CAAiB,GAAjB,UAAqB,UAAmB;QACtC,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;KACrD;IAED,gDAAkB,GAAlB,UAAsB,UAAmB;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;KACtD;IACD,+DAAiC,GAAjC,UAAqC,UAAmB;QACtD,OAAO,IAAI,CAAC,SAAS,CAAC,iCAAiC,CAAC,UAAU,CAAC,CAAC;KACrE;IAED,gEAAkC,GAAlC,UAAsC,UAAmB;QAEvD,OAAO,IAAI,CAAC,SAAS,CAAC,kCAAkC,CAAC,UAAU,CAAC,CAAC;KACtE;IAED,iDAAmB,GAAnB,UAAuB,SAAkB;QACvC,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;KACtD;IAED,kDAAoB,GAApB,UAAqB,IAAe;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YACtC,MAAM,IAAI,KAAK,CAAIC,UAAS,CAAC,IAAI,CAAC,0DAAuD,CAAC,CAAC;SAC5F;KACF;IAED,4CAAc,GAAd,UAAe,QAAmB,EAAE,QAAoC;QACtE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAClE,IAAI,CAAC,eAAe,CAAC,WAAW,CAC5B,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC9B;IACD,+CAAiB,GAAjB,UAAkB,SAAoB,EAAE,QAAqC;QAC3E,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACrC,IAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAChC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;KAC/B;IACD,+CAAiB,GAAjB,UAAkB,SAAoB,EAAE,QAAqC;QAC3E,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QACrC,IAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAChC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,WAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;KAC/B;IACD,0CAAY,GAAZ,UAAa,IAAe,EAAE,QAAgC;QAC5D,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAChC,IAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC1B;IACD,8CAAgB,GAAhB,UAAiB,SAAsB,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE;IACxF,wCAAU,GAAV,cAAqB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE;IACnD,2CAAa,GAAb,UAAc,IAAe,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;IAEtE,mDAAqB,GAArB,UAAsB,KAAY,IAAI,OAAQ,KAAa,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,EAAE;IAE5F,yCAAW,GAAX,UAAY,UAAqB;QAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KAC1D;IACH,0BAAC;CAAA,IAAA;;ACzGD;;;;;;;AAQA,SAa4C,EAAC,SAAS,EAAE,kBAAkB,EAAC;;;;;;AAF3E,IAAa,0BAA0B,GACnC,qBAAqB,CAACC,oBAAmB,EAAE,oBAAoB,EAAE;IAC/D,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,IAAiC,EAAE,KAAK,EAAE,IAAI,EAAC,EAAE;QACnF,OAAO,EAAEC,uBAAsB;QAC/B,QAAQ,EAAE,0BAA0B;QACpC,IAAI,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;KAClC;CACF,CAAC;;AC1BN;;;;;;GAMG;;ACNH;;;;;;;AAkBA;;;AAGA,IAAa,6BAA6B,GAAG,qBAAqB,CAC9D,0BAA0B,EAAE,uBAAuB,EACnDC,4CAA2C,CAAC,CAAC;;;;;;AAajD;IAAA;KACC;IADY,2BAA2B;QANvC,QAAQ,CAAC;YACR,OAAO,EAAE,CAAC,oBAAoB,CAAC;YAC/B,SAAS,EAAE;gBACT,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,wBAAwB,EAAC;aACrE;SACF,CAAC;OACW,2BAA2B,CACvC;IAAD,kCAAC;CADD;;ACpCA;;;;;;GAMG;;ACNH;;;;;;GAMG;;ACNH;;GAEG;;;;"}