testing.js 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. /**
  2. * @license Angular v8.1.0
  3. * (c) 2010-2019 Google LLC. https://angular.io/
  4. * License: MIT
  5. */
  6. import { Injectable, Inject, ɵstringify, NgModule, Directive, Component, Pipe, createPlatformFactory, COMPILER_OPTIONS, Injector, CompilerFactory } from '@angular/core';
  7. import { TestComponentRenderer, ɵMetadataOverrider, ɵTestingCompilerFactory } from '@angular/core/testing';
  8. import { ɵplatformCoreDynamic, ɵINTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS } from '@angular/platform-browser-dynamic';
  9. import { BrowserTestingModule } from '@angular/platform-browser/testing';
  10. import { DOCUMENT } from '@angular/common';
  11. import { ɵgetDOM } from '@angular/platform-browser';
  12. import { CompileReflector, PipeResolver, DirectiveResolver, NgModuleResolver, ERROR_COMPONENT_TYPE } from '@angular/compiler';
  13. import { MockPipeResolver, MockDirectiveResolver, MockNgModuleResolver } from '@angular/compiler/testing';
  14. /**
  15. * @fileoverview added by tsickle
  16. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  17. */
  18. /**
  19. * A DOM based implementation of the TestComponentRenderer.
  20. */
  21. class DOMTestComponentRenderer extends TestComponentRenderer {
  22. /**
  23. * @param {?} _doc
  24. */
  25. constructor(_doc) {
  26. super();
  27. this._doc = _doc;
  28. }
  29. /**
  30. * @param {?} rootElId
  31. * @return {?}
  32. */
  33. insertRootElement(rootElId) {
  34. /** @type {?} */
  35. const rootEl = (/** @type {?} */ (ɵgetDOM().firstChild(ɵgetDOM().content(ɵgetDOM().createTemplate(`<div id="${rootElId}"></div>`)))));
  36. // TODO(juliemr): can/should this be optional?
  37. /** @type {?} */
  38. const oldRoots = ɵgetDOM().querySelectorAll(this._doc, '[id^=root]');
  39. for (let i = 0; i < oldRoots.length; i++) {
  40. ɵgetDOM().remove(oldRoots[i]);
  41. }
  42. ɵgetDOM().appendChild(this._doc.body, rootEl);
  43. }
  44. }
  45. DOMTestComponentRenderer.decorators = [
  46. { type: Injectable }
  47. ];
  48. /** @nocollapse */
  49. DOMTestComponentRenderer.ctorParameters = () => [
  50. { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }
  51. ];
  52. /**
  53. * @fileoverview added by tsickle
  54. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  55. */
  56. /**
  57. * @fileoverview added by tsickle
  58. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  59. */
  60. /** @type {?} */
  61. const COMPILER_PROVIDERS = [
  62. { provide: MockPipeResolver, deps: [CompileReflector] },
  63. { provide: PipeResolver, useExisting: MockPipeResolver },
  64. { provide: MockDirectiveResolver, deps: [CompileReflector] },
  65. { provide: DirectiveResolver, useExisting: MockDirectiveResolver },
  66. { provide: MockNgModuleResolver, deps: [CompileReflector] },
  67. { provide: NgModuleResolver, useExisting: MockNgModuleResolver },
  68. ];
  69. class TestingCompilerFactoryImpl {
  70. /**
  71. * @param {?} _injector
  72. * @param {?} _compilerFactory
  73. */
  74. constructor(_injector, _compilerFactory) {
  75. this._injector = _injector;
  76. this._compilerFactory = _compilerFactory;
  77. }
  78. /**
  79. * @param {?} options
  80. * @return {?}
  81. */
  82. createTestingCompiler(options) {
  83. /** @type {?} */
  84. const compiler = (/** @type {?} */ (this._compilerFactory.createCompiler(options)));
  85. return new TestingCompilerImpl(compiler, compiler.injector.get(MockDirectiveResolver), compiler.injector.get(MockPipeResolver), compiler.injector.get(MockNgModuleResolver));
  86. }
  87. }
  88. class TestingCompilerImpl {
  89. /**
  90. * @param {?} _compiler
  91. * @param {?} _directiveResolver
  92. * @param {?} _pipeResolver
  93. * @param {?} _moduleResolver
  94. */
  95. constructor(_compiler, _directiveResolver, _pipeResolver, _moduleResolver) {
  96. this._compiler = _compiler;
  97. this._directiveResolver = _directiveResolver;
  98. this._pipeResolver = _pipeResolver;
  99. this._moduleResolver = _moduleResolver;
  100. this._overrider = new ɵMetadataOverrider();
  101. }
  102. /**
  103. * @return {?}
  104. */
  105. get injector() { return this._compiler.injector; }
  106. /**
  107. * @template T
  108. * @param {?} moduleType
  109. * @return {?}
  110. */
  111. compileModuleSync(moduleType) {
  112. return this._compiler.compileModuleSync(moduleType);
  113. }
  114. /**
  115. * @template T
  116. * @param {?} moduleType
  117. * @return {?}
  118. */
  119. compileModuleAsync(moduleType) {
  120. return this._compiler.compileModuleAsync(moduleType);
  121. }
  122. /**
  123. * @template T
  124. * @param {?} moduleType
  125. * @return {?}
  126. */
  127. compileModuleAndAllComponentsSync(moduleType) {
  128. return this._compiler.compileModuleAndAllComponentsSync(moduleType);
  129. }
  130. /**
  131. * @template T
  132. * @param {?} moduleType
  133. * @return {?}
  134. */
  135. compileModuleAndAllComponentsAsync(moduleType) {
  136. return this._compiler.compileModuleAndAllComponentsAsync(moduleType);
  137. }
  138. /**
  139. * @template T
  140. * @param {?} component
  141. * @return {?}
  142. */
  143. getComponentFactory(component) {
  144. return this._compiler.getComponentFactory(component);
  145. }
  146. /**
  147. * @param {?} type
  148. * @return {?}
  149. */
  150. checkOverrideAllowed(type) {
  151. if (this._compiler.hasAotSummary(type)) {
  152. throw new Error(`${ɵstringify(type)} was AOT compiled, so its metadata cannot be changed.`);
  153. }
  154. }
  155. /**
  156. * @param {?} ngModule
  157. * @param {?} override
  158. * @return {?}
  159. */
  160. overrideModule(ngModule, override) {
  161. this.checkOverrideAllowed(ngModule);
  162. /** @type {?} */
  163. const oldMetadata = this._moduleResolver.resolve(ngModule, false);
  164. this._moduleResolver.setNgModule(ngModule, this._overrider.overrideMetadata(NgModule, oldMetadata, override));
  165. this.clearCacheFor(ngModule);
  166. }
  167. /**
  168. * @param {?} directive
  169. * @param {?} override
  170. * @return {?}
  171. */
  172. overrideDirective(directive, override) {
  173. this.checkOverrideAllowed(directive);
  174. /** @type {?} */
  175. const oldMetadata = this._directiveResolver.resolve(directive, false);
  176. this._directiveResolver.setDirective(directive, this._overrider.overrideMetadata(Directive, (/** @type {?} */ (oldMetadata)), override));
  177. this.clearCacheFor(directive);
  178. }
  179. /**
  180. * @param {?} component
  181. * @param {?} override
  182. * @return {?}
  183. */
  184. overrideComponent(component, override) {
  185. this.checkOverrideAllowed(component);
  186. /** @type {?} */
  187. const oldMetadata = this._directiveResolver.resolve(component, false);
  188. this._directiveResolver.setDirective(component, this._overrider.overrideMetadata(Component, (/** @type {?} */ (oldMetadata)), override));
  189. this.clearCacheFor(component);
  190. }
  191. /**
  192. * @param {?} pipe
  193. * @param {?} override
  194. * @return {?}
  195. */
  196. overridePipe(pipe, override) {
  197. this.checkOverrideAllowed(pipe);
  198. /** @type {?} */
  199. const oldMetadata = this._pipeResolver.resolve(pipe, false);
  200. this._pipeResolver.setPipe(pipe, this._overrider.overrideMetadata(Pipe, oldMetadata, override));
  201. this.clearCacheFor(pipe);
  202. }
  203. /**
  204. * @param {?} summaries
  205. * @return {?}
  206. */
  207. loadAotSummaries(summaries) { this._compiler.loadAotSummaries(summaries); }
  208. /**
  209. * @return {?}
  210. */
  211. clearCache() { this._compiler.clearCache(); }
  212. /**
  213. * @param {?} type
  214. * @return {?}
  215. */
  216. clearCacheFor(type) { this._compiler.clearCacheFor(type); }
  217. /**
  218. * @param {?} error
  219. * @return {?}
  220. */
  221. getComponentFromError(error) { return ((/** @type {?} */ (error)))[ERROR_COMPONENT_TYPE] || null; }
  222. /**
  223. * @param {?} moduleType
  224. * @return {?}
  225. */
  226. getModuleId(moduleType) {
  227. return this._moduleResolver.resolve(moduleType, true).id;
  228. }
  229. }
  230. /**
  231. * @fileoverview added by tsickle
  232. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  233. */
  234. const ɵ0 = { providers: COMPILER_PROVIDERS };
  235. /**
  236. * Platform for dynamic tests
  237. *
  238. * \@publicApi
  239. * @type {?}
  240. */
  241. const platformCoreDynamicTesting = createPlatformFactory(ɵplatformCoreDynamic, 'coreDynamicTesting', [
  242. { provide: COMPILER_OPTIONS, useValue: ɵ0, multi: true }, {
  243. provide: ɵTestingCompilerFactory,
  244. useClass: TestingCompilerFactoryImpl,
  245. deps: [Injector, CompilerFactory]
  246. }
  247. ]);
  248. /**
  249. * @fileoverview added by tsickle
  250. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  251. */
  252. /**
  253. * @fileoverview added by tsickle
  254. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  255. */
  256. /**
  257. * \@publicApi
  258. * @type {?}
  259. */
  260. const platformBrowserDynamicTesting = createPlatformFactory(platformCoreDynamicTesting, 'browserDynamicTesting', ɵINTERNAL_BROWSER_DYNAMIC_PLATFORM_PROVIDERS);
  261. /**
  262. * NgModule for testing.
  263. *
  264. * \@publicApi
  265. */
  266. class BrowserDynamicTestingModule {
  267. }
  268. BrowserDynamicTestingModule.decorators = [
  269. { type: NgModule, args: [{
  270. exports: [BrowserTestingModule],
  271. providers: [
  272. { provide: TestComponentRenderer, useClass: DOMTestComponentRenderer },
  273. ]
  274. },] }
  275. ];
  276. /**
  277. * @fileoverview added by tsickle
  278. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  279. */
  280. /**
  281. * @fileoverview added by tsickle
  282. * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
  283. */
  284. /**
  285. * Generated bundle index. Do not edit.
  286. */
  287. export { COMPILER_PROVIDERS as ɵangular_packages_platform_browser_dynamic_testing_testing_a, TestingCompilerFactoryImpl as ɵangular_packages_platform_browser_dynamic_testing_testing_b, platformBrowserDynamicTesting, BrowserDynamicTestingModule, DOMTestComponentRenderer as ɵDOMTestComponentRenderer, platformCoreDynamicTesting as ɵplatformCoreDynamicTesting };
  288. //# sourceMappingURL=testing.js.map