@worktile/planet 12.1.1 → 14.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/application/planet-application-loader.d.ts +73 -0
  3. package/application/planet-application-loader.d.ts.map +1 -0
  4. package/application/planet-application-ref.d.ts +36 -0
  5. package/application/planet-application-ref.d.ts.map +1 -0
  6. package/application/planet-application.service.d.ts +22 -0
  7. package/application/planet-application.service.d.ts.map +1 -0
  8. package/{packages/planet/src/application/portal-application.ts → application/portal-application.d.ts} +5 -18
  9. package/application/portal-application.d.ts.map +1 -0
  10. package/assets-loader.d.ts +36 -0
  11. package/assets-loader.d.ts.map +1 -0
  12. package/component/planet-component-loader.d.ts +31 -0
  13. package/component/planet-component-loader.d.ts.map +1 -0
  14. package/component/planet-component-ref.d.ts +8 -0
  15. package/component/planet-component-ref.d.ts.map +1 -0
  16. package/{packages/planet/src/component/plant-component.config.ts → component/plant-component.config.d.ts} +4 -4
  17. package/component/plant-component.config.d.ts.map +1 -0
  18. package/debug.d.ts +22 -0
  19. package/debug.d.ts.map +1 -0
  20. package/empty/empty.component.d.ts +6 -0
  21. package/empty/empty.component.d.ts.map +1 -0
  22. package/esm2020/application/planet-application-loader.mjs +454 -0
  23. package/esm2020/application/planet-application-ref.mjs +94 -0
  24. package/esm2020/application/planet-application.service.mjs +85 -0
  25. package/esm2020/application/portal-application.mjs +16 -0
  26. package/esm2020/assets-loader.mjs +216 -0
  27. package/esm2020/component/planet-component-loader.mjs +153 -0
  28. package/esm2020/component/planet-component-ref.mjs +3 -0
  29. package/esm2020/component/plant-component.config.mjs +7 -0
  30. package/esm2020/debug.mjs +33 -0
  31. package/esm2020/empty/empty.component.mjs +15 -0
  32. package/esm2020/global-event-dispatcher.mjs +70 -0
  33. package/esm2020/global-planet.mjs +53 -0
  34. package/esm2020/helpers.mjs +119 -0
  35. package/esm2020/module.mjs +31 -0
  36. package/esm2020/planet.class.mjs +9 -0
  37. package/esm2020/planet.mjs +91 -0
  38. package/esm2020/public-api.mjs +18 -0
  39. package/esm2020/sandbox/constants.mjs +7 -0
  40. package/esm2020/sandbox/exec.mjs +15 -0
  41. package/esm2020/sandbox/index.mjs +20 -0
  42. package/esm2020/sandbox/proxy/patches/document.mjs +12 -0
  43. package/esm2020/sandbox/proxy/patches/eventListener.mjs +41 -0
  44. package/esm2020/sandbox/proxy/patches/index.mjs +11 -0
  45. package/esm2020/sandbox/proxy/patches/storage.mjs +40 -0
  46. package/esm2020/sandbox/proxy/patches/timer.mjs +43 -0
  47. package/esm2020/sandbox/proxy/proxies/common.mjs +132 -0
  48. package/esm2020/sandbox/proxy/proxies/document.mjs +126 -0
  49. package/esm2020/sandbox/proxy/proxies/window.mjs +158 -0
  50. package/esm2020/sandbox/proxy/proxy-sandbox.mjs +49 -0
  51. package/esm2020/sandbox/proxy/types.mjs +2 -0
  52. package/esm2020/sandbox/sandbox.mjs +7 -0
  53. package/esm2020/sandbox/snapshot/snapshot-sandbox.mjs +12 -0
  54. package/esm2020/sandbox/types.mjs +2 -0
  55. package/esm2020/worktile-planet.mjs +5 -0
  56. package/fesm2015/worktile-planet.mjs +2049 -0
  57. package/fesm2015/worktile-planet.mjs.map +1 -0
  58. package/fesm2020/worktile-planet.mjs +2046 -0
  59. package/fesm2020/worktile-planet.mjs.map +1 -0
  60. package/global-event-dispatcher.d.ts +23 -0
  61. package/global-event-dispatcher.d.ts.map +1 -0
  62. package/global-planet.d.ts +23 -0
  63. package/global-planet.d.ts.map +1 -0
  64. package/helpers.d.ts +39 -0
  65. package/helpers.d.ts.map +1 -0
  66. package/index.d.ts +6 -0
  67. package/module.d.ts +12 -0
  68. package/module.d.ts.map +1 -0
  69. package/package.json +27 -120
  70. package/{packages/planet/src/planet.class.ts → planet.class.d.ts} +5 -26
  71. package/planet.class.d.ts.map +1 -0
  72. package/planet.d.ts +28 -0
  73. package/planet.d.ts.map +1 -0
  74. package/{packages/planet/src/public-api.ts → public-api.d.ts} +1 -4
  75. package/public-api.d.ts.map +1 -0
  76. package/sandbox/constants.d.ts +7 -0
  77. package/sandbox/constants.d.ts.map +1 -0
  78. package/sandbox/exec.d.ts +3 -0
  79. package/sandbox/exec.d.ts.map +1 -0
  80. package/sandbox/index.d.ts +7 -0
  81. package/sandbox/index.d.ts.map +1 -0
  82. package/sandbox/proxy/patches/document.d.ts +3 -0
  83. package/sandbox/proxy/patches/document.d.ts.map +1 -0
  84. package/sandbox/proxy/patches/eventListener.d.ts +3 -0
  85. package/sandbox/proxy/patches/eventListener.d.ts.map +1 -0
  86. package/sandbox/proxy/patches/index.d.ts +3 -0
  87. package/sandbox/proxy/patches/index.d.ts.map +1 -0
  88. package/sandbox/proxy/patches/storage.d.ts +15 -0
  89. package/sandbox/proxy/patches/storage.d.ts.map +1 -0
  90. package/sandbox/proxy/patches/timer.d.ts +3 -0
  91. package/sandbox/proxy/patches/timer.d.ts.map +1 -0
  92. package/sandbox/proxy/proxies/common.d.ts +13 -0
  93. package/sandbox/proxy/proxies/common.d.ts.map +1 -0
  94. package/sandbox/proxy/proxies/document.d.ts +14 -0
  95. package/sandbox/proxy/proxies/document.d.ts.map +1 -0
  96. package/sandbox/proxy/proxies/window.d.ts +13 -0
  97. package/sandbox/proxy/proxies/window.d.ts.map +1 -0
  98. package/sandbox/proxy/proxy-sandbox.d.ts +16 -0
  99. package/sandbox/proxy/proxy-sandbox.d.ts.map +1 -0
  100. package/{packages/planet/src/sandbox/proxy/types.ts → sandbox/proxy/types.d.ts} +2 -8
  101. package/sandbox/proxy/types.d.ts.map +1 -0
  102. package/sandbox/sandbox.d.ts +12 -0
  103. package/sandbox/sandbox.d.ts.map +1 -0
  104. package/sandbox/snapshot/snapshot-sandbox.d.ts +9 -0
  105. package/sandbox/snapshot/snapshot-sandbox.d.ts.map +1 -0
  106. package/sandbox/types.d.ts +2 -0
  107. package/sandbox/types.d.ts.map +1 -0
  108. package/worktile-planet.d.ts.map +1 -0
  109. package/.all-contributorsrc +0 -84
  110. package/.circleci/config.yml +0 -17
  111. package/.coveralls.yml +0 -1
  112. package/.docgeni/public/assets/favicon.ico +0 -0
  113. package/.docgeni/public/index.html +0 -13
  114. package/.docgenirc.js +0 -35
  115. package/.dockerignore +0 -1
  116. package/.editorconfig +0 -22
  117. package/.github/FUNDING.yml +0 -12
  118. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -38
  119. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  120. package/.prettierignore +0 -7
  121. package/.prettierrc +0 -28
  122. package/.travis.yml +0 -26
  123. package/.wpmrc.js +0 -11
  124. package/CODE_OF_CONDUCT.md +0 -76
  125. package/Dockerfile +0 -11
  126. package/README.zh-CN.md +0 -307
  127. package/SECURITY.md +0 -21
  128. package/angular.json +0 -373
  129. package/commitlint.config.js +0 -6
  130. package/docs/api/defineApplication.md +0 -46
  131. package/docs/api/globalEventDispatcher.md +0 -51
  132. package/docs/api/index.md +0 -5
  133. package/docs/api/planet.md +0 -117
  134. package/docs/guides/getting-started.md +0 -174
  135. package/docs/guides/index.md +0 -5
  136. package/docs/guides/intro.md +0 -216
  137. package/examples/app1/browserslist +0 -11
  138. package/examples/app1/extra-webpack.config.js +0 -33
  139. package/examples/app1/karma.conf.js +0 -31
  140. package/examples/app1/postcss.config.js +0 -1
  141. package/examples/app1/src/app/app.module.ts +0 -44
  142. package/examples/app1/src/app/app.routing.ts +0 -49
  143. package/examples/app1/src/app/counter.service.ts +0 -16
  144. package/examples/app1/src/app/dashboard/dashboard.component.html +0 -51
  145. package/examples/app1/src/app/dashboard/dashboard.component.ts +0 -70
  146. package/examples/app1/src/app/detail/detail.component.html +0 -8
  147. package/examples/app1/src/app/detail/detail.component.ts +0 -18
  148. package/examples/app1/src/app/overlay.ts +0 -26
  149. package/examples/app1/src/app/projects/dialog/projects-dialog.component.html +0 -10
  150. package/examples/app1/src/app/projects/dialog/projects-dialog.component.ts +0 -41
  151. package/examples/app1/src/app/projects/projects.component.ts +0 -33
  152. package/examples/app1/src/app/root/root.component.css +0 -3
  153. package/examples/app1/src/app/root/root.component.html +0 -16
  154. package/examples/app1/src/app/root/root.component.ts +0 -35
  155. package/examples/app1/src/app/services/initialized-data.resolver.ts +0 -15
  156. package/examples/app1/src/app/shared.module.ts +0 -57
  157. package/examples/app1/src/app/user/detail/user-detail.component.html +0 -5
  158. package/examples/app1/src/app/user/detail/user-detail.component.ts +0 -20
  159. package/examples/app1/src/app/user/user-list.component.html +0 -7
  160. package/examples/app1/src/app/user/user-list.component.ts +0 -20
  161. package/examples/app1/src/app/user/user.module.ts +0 -31
  162. package/examples/app1/src/assets/.gitkeep +0 -0
  163. package/examples/app1/src/assets/github.png +0 -0
  164. package/examples/app1/src/assets/main.css +0 -3
  165. package/examples/app1/src/environments/environment.prod.ts +0 -3
  166. package/examples/app1/src/environments/environment.ts +0 -16
  167. package/examples/app1/src/favicon.ico +0 -0
  168. package/examples/app1/src/index.html +0 -14
  169. package/examples/app1/src/main.ts +0 -35
  170. package/examples/app1/src/polyfills.ts +0 -84
  171. package/examples/app1/src/styles.scss +0 -35
  172. package/examples/app1/src/test.ts +0 -14
  173. package/examples/app1/temp.js +0 -221
  174. package/examples/app1/tsconfig.app.json +0 -10
  175. package/examples/app1/tsconfig.spec.json +0 -18
  176. package/examples/app1/tslint.json +0 -17
  177. package/examples/app1/webpack.config.js +0 -127
  178. package/examples/app2/browserslist +0 -11
  179. package/examples/app2/extra-webpack.config.js +0 -32
  180. package/examples/app2/karma.conf.js +0 -31
  181. package/examples/app2/src/app/app.module.ts +0 -90
  182. package/examples/app2/src/app/dashboard/dashboard.component.html +0 -21
  183. package/examples/app2/src/app/dashboard/dashboard.component.ts +0 -27
  184. package/examples/app2/src/app/overlay.ts +0 -26
  185. package/examples/app2/src/app/projects/detail/detail.component.html +0 -16
  186. package/examples/app2/src/app/projects/detail/detail.component.ts +0 -21
  187. package/examples/app2/src/app/projects/project-list.component.html +0 -29
  188. package/examples/app2/src/app/projects/project-list.component.ts +0 -58
  189. package/examples/app2/src/app/projects/project.resolver.ts +0 -15
  190. package/examples/app2/src/app/projects/projects.service.ts +0 -28
  191. package/examples/app2/src/app/projects/tasks/tasks.component.html +0 -10
  192. package/examples/app2/src/app/projects/tasks/tasks.component.ts +0 -16
  193. package/examples/app2/src/app/projects/view/view.component.html +0 -1
  194. package/examples/app2/src/app/projects/view/view.component.ts +0 -20
  195. package/examples/app2/src/app/root/root.component.html +0 -14
  196. package/examples/app2/src/app/root/root.component.scss +0 -12
  197. package/examples/app2/src/app/root/root.component.ts +0 -28
  198. package/examples/app2/src/app/shared.module.ts +0 -59
  199. package/examples/app2/src/assets/.gitkeep +0 -0
  200. package/examples/app2/src/environments/environment.prod.ts +0 -3
  201. package/examples/app2/src/environments/environment.ts +0 -16
  202. package/examples/app2/src/favicon.ico +0 -0
  203. package/examples/app2/src/index.html +0 -14
  204. package/examples/app2/src/main.ts +0 -36
  205. package/examples/app2/src/polyfills.ts +0 -84
  206. package/examples/app2/src/styles.scss +0 -28
  207. package/examples/app2/src/test.ts +0 -14
  208. package/examples/app2/tsconfig.app.json +0 -10
  209. package/examples/app2/tsconfig.spec.json +0 -18
  210. package/examples/app2/tslint.json +0 -7
  211. package/examples/app2/webpack.config.js +0 -92
  212. package/examples/common/app-root-context.ts +0 -10
  213. package/examples/common/cache.ts +0 -82
  214. package/examples/common/index.ts +0 -13
  215. package/examples/common/module.ts +0 -10
  216. package/examples/common/overlay-container.service.ts +0 -28
  217. package/examples/common/section-card/section-card.component.html +0 -5
  218. package/examples/common/section-card/section-card.component.scss +0 -15
  219. package/examples/common/section-card/section-card.component.ts +0 -11
  220. package/examples/common/utils.ts +0 -0
  221. package/examples/portal/src/app/a-detail/a-detail.component.html +0 -8
  222. package/examples/portal/src/app/a-detail/a-detail.component.ts +0 -18
  223. package/examples/portal/src/app/about/about.component.html +0 -27
  224. package/examples/portal/src/app/about/about.component.scss +0 -0
  225. package/examples/portal/src/app/about/about.component.spec.ts +0 -26
  226. package/examples/portal/src/app/about/about.component.ts +0 -26
  227. package/examples/portal/src/app/app-routing.module.ts +0 -57
  228. package/examples/portal/src/app/app.component.html +0 -73
  229. package/examples/portal/src/app/app.component.scss +0 -58
  230. package/examples/portal/src/app/app.component.spec.ts +0 -33
  231. package/examples/portal/src/app/app.component.ts +0 -111
  232. package/examples/portal/src/app/app.module.ts +0 -64
  233. package/examples/portal/src/app/custom-settings.service.ts +0 -44
  234. package/examples/portal/src/app/overlay.ts +0 -26
  235. package/examples/portal/src/app/settings/settings.component.html +0 -31
  236. package/examples/portal/src/app/settings/settings.component.scss +0 -3
  237. package/examples/portal/src/app/settings/settings.component.ts +0 -43
  238. package/examples/portal/src/assets/.gitkeep +0 -0
  239. package/examples/portal/src/assets/apps.json +0 -29
  240. package/examples/portal/src/assets/icons/sprite.defs.svg +0 -1
  241. package/examples/portal/src/assets/images/logo.svg +0 -16
  242. package/examples/portal/src/assets/ngx-planet-micro-front-end.gif +0 -0
  243. package/examples/portal/src/browserslist +0 -11
  244. package/examples/portal/src/environments/environment.prod.ts +0 -3
  245. package/examples/portal/src/environments/environment.ts +0 -16
  246. package/examples/portal/src/extra-webpack.config.js +0 -32
  247. package/examples/portal/src/favicon.ico +0 -0
  248. package/examples/portal/src/index.html +0 -14
  249. package/examples/portal/src/karma.conf.js +0 -31
  250. package/examples/portal/src/main.ts +0 -18
  251. package/examples/portal/src/polyfills.ts +0 -84
  252. package/examples/portal/src/reboot.scss +0 -14
  253. package/examples/portal/src/styles.scss +0 -14
  254. package/examples/portal/src/test.ts +0 -14
  255. package/examples/portal/src/tsconfig.app.json +0 -10
  256. package/examples/portal/src/tsconfig.spec.json +0 -9
  257. package/examples/portal/src/tslint.json +0 -7
  258. package/extra-webpack.config.js +0 -5
  259. package/nginx.conf +0 -17
  260. package/packages/planet/karma.conf.js +0 -37
  261. package/packages/planet/ng-package.json +0 -7
  262. package/packages/planet/package.json +0 -10
  263. package/packages/planet/src/application/planet-application-loader.spec.ts +0 -1102
  264. package/packages/planet/src/application/planet-application-loader.ts +0 -549
  265. package/packages/planet/src/application/planet-application-ref.spec.ts +0 -233
  266. package/packages/planet/src/application/planet-application-ref.ts +0 -131
  267. package/packages/planet/src/application/planet-application.service.spec.ts +0 -145
  268. package/packages/planet/src/application/planet-application.service.ts +0 -88
  269. package/packages/planet/src/application/portal-application.spec.ts +0 -53
  270. package/packages/planet/src/assets-loader.spec.ts +0 -689
  271. package/packages/planet/src/assets-loader.ts +0 -247
  272. package/packages/planet/src/component/planet-component-loader.spec.ts +0 -187
  273. package/packages/planet/src/component/planet-component-loader.ts +0 -173
  274. package/packages/planet/src/component/planet-component-ref.ts +0 -8
  275. package/packages/planet/src/debug.spec.ts +0 -58
  276. package/packages/planet/src/debug.ts +0 -66
  277. package/packages/planet/src/empty/empty.component.spec.ts +0 -34
  278. package/packages/planet/src/empty/empty.component.ts +0 -7
  279. package/packages/planet/src/global-event-dispatcher.spec.ts +0 -81
  280. package/packages/planet/src/global-event-dispatcher.ts +0 -82
  281. package/packages/planet/src/global-planet.spec.ts +0 -39
  282. package/packages/planet/src/global-planet.ts +0 -73
  283. package/packages/planet/src/helpers.spec.ts +0 -242
  284. package/packages/planet/src/helpers.ts +0 -125
  285. package/packages/planet/src/module.spec.ts +0 -79
  286. package/packages/planet/src/module.ts +0 -25
  287. package/packages/planet/src/planet.spec.ts +0 -226
  288. package/packages/planet/src/planet.ts +0 -113
  289. package/packages/planet/src/sandbox/constants.ts +0 -6
  290. package/packages/planet/src/sandbox/exec.ts +0 -22
  291. package/packages/planet/src/sandbox/index.ts +0 -24
  292. package/packages/planet/src/sandbox/proxy/patches/document.ts +0 -13
  293. package/packages/planet/src/sandbox/proxy/patches/eventListener.ts +0 -49
  294. package/packages/planet/src/sandbox/proxy/patches/index.ts +0 -13
  295. package/packages/planet/src/sandbox/proxy/patches/storage.ts +0 -53
  296. package/packages/planet/src/sandbox/proxy/patches/timer.ts +0 -50
  297. package/packages/planet/src/sandbox/proxy/proxies/common.ts +0 -137
  298. package/packages/planet/src/sandbox/proxy/proxies/document.ts +0 -140
  299. package/packages/planet/src/sandbox/proxy/proxies/window.ts +0 -176
  300. package/packages/planet/src/sandbox/proxy/proxy-sandbox.ts +0 -59
  301. package/packages/planet/src/sandbox/sandbox.ts +0 -20
  302. package/packages/planet/src/sandbox/snapshot/snapshot-sandbox.ts +0 -12
  303. package/packages/planet/src/sandbox/types.ts +0 -1
  304. package/packages/planet/src/test.ts +0 -16
  305. package/packages/planet/src/testing/app1.module.ts +0 -34
  306. package/packages/planet/src/testing/app2.module.ts +0 -24
  307. package/packages/planet/src/testing/applications.ts +0 -58
  308. package/packages/planet/src/testing/index.ts +0 -2
  309. package/packages/planet/src/testing/utils.ts +0 -31
  310. package/packages/planet/tsconfig.lib.json +0 -27
  311. package/packages/planet/tsconfig.lib.prod.json +0 -9
  312. package/packages/planet/tsconfig.spec.json +0 -17
  313. package/packages/planet/tslint.json +0 -7
  314. package/postcss.config.js +0 -3
  315. package/proxy.conf.js +0 -15
  316. package/tsconfig.json +0 -23
  317. package/tslint.json +0 -80
@@ -1,689 +0,0 @@
1
- import { TestBed, fakeAsync, waitForAsync } from '@angular/core/testing';
2
- import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
3
- import { AssetsLoader, AssetsLoadResult } from './assets-loader';
4
- import { hashCode } from './helpers';
5
- import { Subject, of, observable, Observable, BehaviorSubject } from 'rxjs';
6
- import { HttpClient } from '@angular/common/http';
7
-
8
- describe('assets-loader', () => {
9
- let assetsLoader: AssetsLoader;
10
- const mockScript: {
11
- onload: () => void;
12
- onerror: (error: string | Event) => void;
13
- } = { onload: () => {}, onerror: null };
14
-
15
- beforeEach(() => {
16
- TestBed.configureTestingModule({
17
- imports: [HttpClientTestingModule],
18
- providers: []
19
- });
20
- assetsLoader = TestBed.inject(AssetsLoader);
21
- });
22
-
23
- describe('loadScript', () => {
24
- it('should load script success when not in IE', fakeAsync(() => {
25
- const src = 'assets/main.js';
26
- const createElementSpy: jasmine.Spy = spyOn(document, 'createElement');
27
- const appendChildSpy = spyOn(document.body, 'appendChild');
28
-
29
- // 返回 mock script
30
- createElementSpy.and.returnValue(mockScript);
31
- // 没有调用
32
- expect(appendChildSpy).not.toHaveBeenCalled();
33
- expect(createElementSpy).not.toHaveBeenCalled();
34
-
35
- const scriptLoaded = jasmine.createSpy('load script');
36
- assetsLoader.loadScript(src).subscribe(scriptLoaded, error => {
37
- console.error(error);
38
- });
39
- // 已经被调用
40
- expect(appendChildSpy).toHaveBeenCalledTimes(1);
41
- expect(createElementSpy).toHaveBeenCalledTimes(1);
42
-
43
- // scriptLoaded 没有加载完毕
44
- expect(scriptLoaded).toHaveBeenCalledTimes(0);
45
-
46
- // 手动调用使其加载完毕
47
- mockScript.onload();
48
-
49
- // // scriptLoaded 加载完毕
50
- expect(scriptLoaded).toHaveBeenCalledTimes(1);
51
- expect(scriptLoaded).toHaveBeenCalledWith({
52
- src: src,
53
- hashCode: hashCode(src),
54
- loaded: true,
55
- status: 'Loaded'
56
- });
57
- }));
58
-
59
- it('should load script success when in IE and readyState is loaded', fakeAsync(() => {
60
- const mockScriptInIE: { readyState: string; onreadystatechange: () => void } = {
61
- readyState: 'uninitialized',
62
- onreadystatechange: () => {
63
- console.log('loaded script state change');
64
- }
65
- };
66
- const src = 'assets/main.js';
67
- const createElementSpy: jasmine.Spy = spyOn(document, 'createElement');
68
- const appendChildSpy = spyOn(document.body, 'appendChild');
69
-
70
- // 返回 mock script
71
- createElementSpy.and.returnValue(mockScriptInIE);
72
- // 没有调用
73
- expect(appendChildSpy).not.toHaveBeenCalled();
74
- expect(createElementSpy).not.toHaveBeenCalled();
75
-
76
- const scriptLoaded = jasmine.createSpy('load script');
77
- assetsLoader.loadScript(src).subscribe(scriptLoaded, error => {
78
- console.error(error);
79
- });
80
- // 已经被调用
81
- expect(appendChildSpy).toHaveBeenCalledTimes(1);
82
- expect(createElementSpy).toHaveBeenCalledTimes(1);
83
-
84
- // scriptLoaded 没有加载完毕
85
- expect(scriptLoaded).toHaveBeenCalledTimes(0);
86
-
87
- // 手动调用使其加载完毕
88
- mockScriptInIE.readyState = 'loaded';
89
- mockScriptInIE.onreadystatechange();
90
-
91
- // // scriptLoaded 加载完毕
92
- expect(scriptLoaded).toHaveBeenCalledTimes(1);
93
- expect(mockScriptInIE.onreadystatechange).toBeNull();
94
- expect(scriptLoaded).toHaveBeenCalledWith({
95
- src: src,
96
- hashCode: hashCode(src),
97
- loaded: true,
98
- status: 'Loaded'
99
- });
100
- }));
101
-
102
- it('should load script success when in IE and readyState is complete or loaded', fakeAsync(() => {
103
- const mockScriptInIE: { readyState: string; onreadystatechange: () => void } = {
104
- readyState: 'uninitialized',
105
- onreadystatechange: () => {
106
- console.log('loaded script state change');
107
- }
108
- };
109
- const src = 'assets/main.js';
110
- const createElementSpy: jasmine.Spy = spyOn(document, 'createElement');
111
- const appendChildSpy = spyOn(document.body, 'appendChild');
112
-
113
- // 返回 mock script
114
- createElementSpy.and.returnValue(mockScriptInIE);
115
- // 没有调用
116
- expect(appendChildSpy).not.toHaveBeenCalled();
117
- expect(createElementSpy).not.toHaveBeenCalled();
118
-
119
- const scriptLoaded = jasmine.createSpy('load script');
120
- assetsLoader.loadScript(src).subscribe(scriptLoaded, error => {
121
- console.error(error);
122
- });
123
- // 已经被调用
124
- expect(appendChildSpy).toHaveBeenCalledTimes(1);
125
- expect(createElementSpy).toHaveBeenCalledTimes(1);
126
-
127
- // scriptLoaded 没有加载完毕
128
- expect(scriptLoaded).toHaveBeenCalledTimes(0);
129
-
130
- // 手动调用使其加载完毕
131
- mockScriptInIE.readyState = 'complete';
132
- mockScriptInIE.onreadystatechange();
133
-
134
- // // scriptLoaded 加载完毕
135
- expect(scriptLoaded).toHaveBeenCalledTimes(1);
136
- expect(mockScriptInIE.onreadystatechange).toBeNull();
137
- expect(scriptLoaded).toHaveBeenCalledWith({
138
- src: src,
139
- hashCode: hashCode(src),
140
- loaded: true,
141
- status: 'Loaded'
142
- });
143
- }));
144
-
145
- it('should load script success when in IE and readyState is not complete or loaded', fakeAsync(() => {
146
- const mockScriptInIE: { readyState: string; onreadystatechange: () => void } = {
147
- readyState: 'uninitialized',
148
- onreadystatechange: () => {
149
- console.log('loaded script state change');
150
- }
151
- };
152
- const src = 'assets/main.js';
153
- const createElementSpy: jasmine.Spy = spyOn(document, 'createElement');
154
- const appendChildSpy = spyOn(document.body, 'appendChild');
155
-
156
- // 返回 mock script
157
- createElementSpy.and.returnValue(mockScriptInIE);
158
- // 没有调用
159
- expect(appendChildSpy).not.toHaveBeenCalled();
160
- expect(createElementSpy).not.toHaveBeenCalled();
161
-
162
- const scriptLoaded = jasmine.createSpy('load script');
163
- assetsLoader.loadScript(src).subscribe(scriptLoaded, error => {
164
- console.error(error);
165
- });
166
- // 已经被调用
167
- expect(appendChildSpy).toHaveBeenCalledTimes(1);
168
- expect(createElementSpy).toHaveBeenCalledTimes(1);
169
-
170
- // scriptLoaded 没有加载完毕
171
- expect(scriptLoaded).toHaveBeenCalledTimes(0);
172
-
173
- // 手动调用使其加载完毕
174
- mockScriptInIE.readyState = 'any status';
175
- mockScriptInIE.onreadystatechange();
176
-
177
- // // scriptLoaded 加载完毕
178
- expect(scriptLoaded).not.toHaveBeenCalled();
179
- expect(mockScriptInIE.onreadystatechange).not.toBeNull();
180
- }));
181
-
182
- it('should not load script which has been loaded', fakeAsync(() => {
183
- const src = 'assets/main.js';
184
- const createElementSpy: jasmine.Spy = spyOn(document, 'createElement');
185
- const appendChildSpy = spyOn(document.body, 'appendChild');
186
-
187
- createElementSpy.and.returnValue(mockScript);
188
-
189
- const scriptLoaded = jasmine.createSpy('load script');
190
- assetsLoader.loadScript(src).subscribe(scriptLoaded, error => {
191
- console.error(error);
192
- });
193
- mockScript.onload();
194
-
195
- const scriptLoaded2 = jasmine.createSpy('load script');
196
- assetsLoader.loadScript(src).subscribe(scriptLoaded2, error => {
197
- console.error(error);
198
- });
199
- expect(appendChildSpy).toHaveBeenCalledTimes(1);
200
- expect(createElementSpy).toHaveBeenCalledTimes(1);
201
- expect(scriptLoaded2).toHaveBeenCalledTimes(1);
202
- expect(scriptLoaded2).toHaveBeenCalledWith({
203
- src: src,
204
- hashCode: hashCode(src),
205
- loaded: true,
206
- status: 'Loaded'
207
- });
208
- }));
209
-
210
- it('should get error when load script fail', fakeAsync(() => {
211
- const src = 'assets/main.js';
212
- const createElementSpy: jasmine.Spy = spyOn(document, 'createElement');
213
- const appendChildSpy = spyOn(document.body, 'appendChild');
214
-
215
- // 返回 mock script
216
- createElementSpy.and.returnValue(mockScript);
217
- // 没有调用
218
- expect(appendChildSpy).not.toHaveBeenCalled();
219
- expect(createElementSpy).not.toHaveBeenCalled();
220
-
221
- const scriptLoaded = jasmine.createSpy('load script');
222
- const scriptLoadedError = jasmine.createSpy('load script error');
223
- assetsLoader.loadScript(src).subscribe(scriptLoaded, scriptLoadedError);
224
-
225
- // 已经被调用
226
- expect(appendChildSpy).toHaveBeenCalledTimes(1);
227
- expect(createElementSpy).toHaveBeenCalledTimes(1);
228
-
229
- // scriptLoaded 没有加载完毕
230
- expect(scriptLoaded).not.toHaveBeenCalled();
231
-
232
- // 手动调用使其加载完毕
233
- mockScript.onerror('load js error');
234
-
235
- expect(scriptLoaded).not.toHaveBeenCalled();
236
-
237
- expect(scriptLoadedError).toHaveBeenCalled();
238
- expect(scriptLoadedError).toHaveBeenCalledWith({
239
- src: src,
240
- hashCode: hashCode(src),
241
- loaded: false,
242
- status: 'Error',
243
- error: 'load js error'
244
- });
245
- }));
246
- });
247
-
248
- describe('loadScripts', () => {
249
- it('should return null when sources is []', fakeAsync(() => {
250
- const loadScriptSpy = spyOn(assetsLoader, 'loadScript');
251
-
252
- expect(loadScriptSpy).not.toHaveBeenCalled();
253
-
254
- const loadedScripts = jasmine.createSpy('loaded scripts success');
255
- const loadedScriptsFail = jasmine.createSpy('loaded scripts fail');
256
- assetsLoader.loadStyles([]).subscribe(loadedScripts, loadedScriptsFail);
257
-
258
- expect(loadScriptSpy).not.toHaveBeenCalled();
259
- expect(loadedScripts).toHaveBeenCalledTimes(1);
260
- expect(loadedScripts).toHaveBeenCalledWith(null);
261
- expect(loadedScriptsFail).not.toHaveBeenCalled();
262
- }));
263
-
264
- it('should return null when sources is null', fakeAsync(() => {
265
- const loadScriptSpy = spyOn(assetsLoader, 'loadScript');
266
-
267
- expect(loadScriptSpy).not.toHaveBeenCalled();
268
-
269
- const loadedScripts = jasmine.createSpy('loaded scripts success');
270
- const loadedScriptsFail = jasmine.createSpy('loaded scripts fail');
271
- assetsLoader.loadStyles(null).subscribe(loadedScripts, loadedScriptsFail);
272
-
273
- expect(loadScriptSpy).not.toHaveBeenCalled();
274
- expect(loadedScripts).toHaveBeenCalledTimes(1);
275
- expect(loadedScripts).toHaveBeenCalledWith(null);
276
- expect(loadedScriptsFail).not.toHaveBeenCalled();
277
- }));
278
-
279
- it('should load scripts success', () => {
280
- const src1 = 'assets/vendor.js';
281
- const src2 = 'assets/main.js';
282
-
283
- const loadScriptSpy = spyOn(assetsLoader, 'loadScript');
284
- const loadScriptObservable1 = new Subject<AssetsLoadResult>();
285
- const loadScriptObservable2 = new Subject<AssetsLoadResult>();
286
- loadScriptSpy.and.returnValues(loadScriptObservable1, loadScriptObservable2);
287
-
288
- const result1 = {
289
- src: src1,
290
- hashCode: hashCode(src1),
291
- loaded: true,
292
- status: 'Loaded'
293
- };
294
- const result2 = {
295
- src: src2,
296
- hashCode: hashCode(src2),
297
- loaded: true,
298
- status: 'Loaded'
299
- };
300
-
301
- const loadScriptsSpy = jasmine.createSpy('load scripts spy');
302
- assetsLoader.loadScripts([src1, src2]).subscribe(loadScriptsSpy);
303
-
304
- loadScriptObservable2.next(result2);
305
- loadScriptObservable2.complete();
306
- loadScriptObservable1.next(result1);
307
- loadScriptObservable1.complete();
308
-
309
- expect(loadScriptsSpy).toHaveBeenCalled();
310
- expect(loadScriptsSpy).toHaveBeenCalledWith([result1, result2]);
311
- });
312
-
313
- it('should load scripts success when serial is true', () => {
314
- const src1 = 'assets/vendor.js';
315
- const src2 = 'assets/main.js';
316
-
317
- const loadScriptSpy = spyOn(assetsLoader, 'loadScript');
318
- const loadScriptObservable1 = new Subject<AssetsLoadResult>();
319
- const loadScriptObservable2 = new Subject<AssetsLoadResult>();
320
- loadScriptSpy.and.returnValues(loadScriptObservable1, loadScriptObservable2);
321
-
322
- const result1 = {
323
- src: src1,
324
- hashCode: hashCode(src1),
325
- loaded: true,
326
- status: 'Loaded'
327
- };
328
- const result2 = {
329
- src: src2,
330
- hashCode: hashCode(src2),
331
- loaded: true,
332
- status: 'Loaded'
333
- };
334
-
335
- const loadScriptsSpy = jasmine.createSpy('load scripts spy');
336
- assetsLoader.loadScripts([src1, src2], { serial: true }).subscribe(loadScriptsSpy);
337
-
338
- loadScriptObservable1.next(result1);
339
- loadScriptObservable1.complete();
340
- loadScriptObservable2.next(result2);
341
- loadScriptObservable2.complete();
342
-
343
- expect(loadScriptsSpy).toHaveBeenCalled();
344
- expect(loadScriptsSpy.calls.count()).toEqual(2);
345
- expect(loadScriptsSpy.calls.argsFor(0)).toEqual([[result1]]);
346
- expect(loadScriptsSpy.calls.argsFor(1)).toEqual([[result2]]);
347
- });
348
- });
349
-
350
- describe('loadManifest', () => {
351
- let httpClient: HttpClient;
352
- let httpTestingController: HttpTestingController;
353
- beforeEach(() => {
354
- httpClient = TestBed.inject(HttpClient);
355
- httpTestingController = TestBed.inject(HttpTestingController);
356
- });
357
-
358
- afterEach(() => {
359
- // After every test, assert that there are no more pending requests.
360
- httpTestingController.verify();
361
- });
362
-
363
- it(
364
- 'should load manifest success',
365
- waitForAsync(() => {
366
- const testData = {
367
- 'main.js': 'main1.js'
368
- };
369
- const loadManifestSpy = jasmine.createSpy('load manifest spy');
370
- assetsLoader.loadManifest('/static/assets/manifest.json').subscribe(loadManifestSpy);
371
- const req = httpTestingController.expectOne('/static/assets/manifest.json');
372
-
373
- // Assert that the request is a GET.
374
- expect(req.request.method).toEqual('GET');
375
- expect(loadManifestSpy).not.toHaveBeenCalled();
376
-
377
- // Respond with mock data, causing Observable to resolve.
378
- // Subscribe callback asserts that correct data was returned.
379
- req.flush(testData);
380
-
381
- expect(loadManifestSpy).toHaveBeenCalled();
382
- expect(loadManifestSpy).toHaveBeenCalledWith(testData);
383
- })
384
- );
385
- });
386
-
387
- describe('loadAppAssets', () => {
388
- const app1 = {
389
- name: 'app1',
390
- hostParent: '.host-selector',
391
- selector: 'app1-root',
392
- routerPathPrefix: '/app1',
393
- hostClass: 'app1-host',
394
- preload: false,
395
- resourcePathPrefix: '/static/app1/',
396
- styles: ['styles/main.css'],
397
- scripts: ['vendor.js', 'main.js'],
398
- sandbox: false,
399
- loadSerial: false,
400
- manifest: '',
401
- extra: {
402
- appName: '应用1'
403
- }
404
- };
405
-
406
- it('load assets success without manifest', () => {
407
- const loadScriptsAndStyles$ = new Subject<[AssetsLoadResult[], AssetsLoadResult[]]>();
408
- const loadScriptsAndStylesSpy = spyOn(assetsLoader, 'loadScriptsAndStyles');
409
- loadScriptsAndStylesSpy.and.returnValue(loadScriptsAndStyles$);
410
-
411
- const loadAssetsSpy = jasmine.createSpy('load assets spy');
412
- assetsLoader.loadAppAssets(app1).subscribe(loadAssetsSpy);
413
-
414
- expect(loadAssetsSpy).not.toHaveBeenCalled();
415
- expect(loadScriptsAndStylesSpy).toHaveBeenCalled();
416
- expect(loadScriptsAndStylesSpy).toHaveBeenCalledWith(
417
- ['/static/app1/vendor.js', '/static/app1/main.js'],
418
- ['/static/app1/styles/main.css'],
419
- {
420
- app: 'app1',
421
- sandbox: false,
422
- serial: app1.loadSerial
423
- }
424
- );
425
-
426
- loadScriptsAndStyles$.next('load success' as any);
427
- expect(loadAssetsSpy).toHaveBeenCalled();
428
- expect(loadAssetsSpy).toHaveBeenCalledWith('load success');
429
- });
430
-
431
- it('load assets success with manifest', () => {
432
- const loadScriptsAndStyles$ = new Subject<[AssetsLoadResult[], AssetsLoadResult[]]>();
433
- const loadScriptsAndStylesSpy = spyOn(assetsLoader, 'loadScriptsAndStyles');
434
- loadScriptsAndStylesSpy.and.returnValue(loadScriptsAndStyles$);
435
-
436
- const loadManifestSpy = spyOn(assetsLoader, 'loadManifest');
437
- const manifestResult = {
438
- 'main.js': 'main.123455.js',
439
- 'vendor.js': 'vendor.23221.js',
440
- 'main.css': 'main.s1223.css'
441
- };
442
- loadManifestSpy.and.returnValue(of(manifestResult));
443
-
444
- const loadAssetsSpy = jasmine.createSpy('load assets spy');
445
- assetsLoader
446
- .loadAppAssets({
447
- ...app1,
448
- manifest: '/app1/manifest.json'
449
- })
450
- .subscribe(loadAssetsSpy);
451
-
452
- expect(loadAssetsSpy).not.toHaveBeenCalled();
453
- expect(loadScriptsAndStylesSpy).toHaveBeenCalled();
454
- expect(loadScriptsAndStylesSpy).toHaveBeenCalledWith(
455
- [`/static/app1/${manifestResult['vendor.js']}`, `/static/app1/${manifestResult['main.js']}`],
456
- [`/static/app1/styles/${manifestResult['main.css']}`],
457
- {
458
- app: 'app1',
459
- sandbox: false,
460
- serial: app1.loadSerial
461
- }
462
- );
463
-
464
- loadScriptsAndStyles$.next('load success' as any);
465
- expect(loadAssetsSpy).toHaveBeenCalled();
466
- expect(loadAssetsSpy).toHaveBeenCalledWith('load success');
467
- });
468
- });
469
-
470
- describe('loadStyle', () => {
471
- let src, createElementSpy, getElementsByTagNameSpy, appendChildSpy, styleLoaded, styleLoadedFail;
472
- const heads: { appendChild: () => void }[] = [{ appendChild: null }];
473
- beforeEach(() => {
474
- src = 'css/style.css';
475
- createElementSpy = spyOn(document, 'createElement');
476
- getElementsByTagNameSpy = spyOn(document, 'getElementsByTagName');
477
-
478
- createElementSpy.and.returnValue(mockScript);
479
- getElementsByTagNameSpy.and.returnValue(heads);
480
-
481
- expect(createElementSpy).not.toHaveBeenCalled();
482
- expect(getElementsByTagNameSpy).not.toHaveBeenCalled();
483
- appendChildSpy = spyOn(heads[0], 'appendChild');
484
- expect(appendChildSpy).not.toHaveBeenCalled();
485
-
486
- styleLoaded = jasmine.createSpy('style loaded');
487
- styleLoadedFail = jasmine.createSpy('load style error');
488
- assetsLoader.loadStyle(src).subscribe(styleLoaded, styleLoadedFail);
489
-
490
- expect(createElementSpy).toHaveBeenCalledTimes(1);
491
- expect(getElementsByTagNameSpy).toHaveBeenCalledTimes(1);
492
- expect(appendChildSpy).toHaveBeenCalledTimes(1);
493
- expect(styleLoaded).toHaveBeenCalledTimes(0);
494
- });
495
-
496
- it('should load style success', fakeAsync(() => {
497
- mockScript.onload();
498
-
499
- expect(styleLoaded).toHaveBeenCalledTimes(1);
500
- expect(styleLoadedFail).toHaveBeenCalledTimes(0);
501
- expect(styleLoaded).toHaveBeenCalledWith({
502
- src: src,
503
- hashCode: hashCode(src),
504
- loaded: true,
505
- status: 'Loaded'
506
- });
507
- }));
508
-
509
- it('should not load style when style has been loaded', fakeAsync(() => {
510
- mockScript.onload();
511
-
512
- const styleLoaded2 = jasmine.createSpy('load style');
513
- assetsLoader.loadStyle(src).subscribe(styleLoaded2, error => {
514
- console.error(error);
515
- });
516
- expect(createElementSpy).toHaveBeenCalledTimes(1);
517
- expect(getElementsByTagNameSpy).toHaveBeenCalledTimes(1);
518
-
519
- expect(styleLoaded2).toHaveBeenCalledWith({
520
- src: src,
521
- hashCode: hashCode(src),
522
- loaded: true,
523
- status: 'Loaded'
524
- });
525
- }));
526
-
527
- it('should get error when load style fail', fakeAsync(() => {
528
- mockScript.onerror('load style error');
529
-
530
- expect(styleLoaded).toHaveBeenCalledTimes(0);
531
- expect(styleLoadedFail).toHaveBeenCalledTimes(1);
532
- expect(styleLoadedFail).toHaveBeenCalledWith({
533
- src: src,
534
- hashCode: hashCode(src),
535
- loaded: true,
536
- status: 'Loaded',
537
- error: 'load style error'
538
- });
539
- }));
540
- });
541
-
542
- describe('loadStyles', () => {
543
- it('should return null when sources is empty', fakeAsync(() => {
544
- const loadStyletSpy = spyOn(assetsLoader, 'loadStyle');
545
-
546
- expect(loadStyletSpy).not.toHaveBeenCalled();
547
-
548
- const loadedStyles = jasmine.createSpy('loaded styles success');
549
- const loadedStylesFail = jasmine.createSpy('loaded styles fail');
550
- assetsLoader.loadStyles([]).subscribe(loadedStyles, loadedStylesFail);
551
-
552
- expect(loadStyletSpy).not.toHaveBeenCalled();
553
- expect(loadedStyles).toHaveBeenCalledTimes(1);
554
- expect(loadedStyles).toHaveBeenCalledWith(null);
555
- }));
556
-
557
- it('should return load styles', fakeAsync(() => {
558
- const stylesSrc = ['css/style1.css', 'css/style2.css'];
559
- const loadStyletSpy = spyOn(assetsLoader, 'loadStyle');
560
-
561
- expect(loadStyletSpy).not.toHaveBeenCalled();
562
-
563
- const loadStyleObservable1: Subject<AssetsLoadResult> = new Subject<AssetsLoadResult>();
564
- const loadStyleObservable2: Subject<AssetsLoadResult> = new Subject<AssetsLoadResult>();
565
-
566
- const loadStyleObservable1Value = {
567
- src: stylesSrc[0],
568
- hashCode: hashCode(stylesSrc[0]),
569
- loaded: true,
570
- status: 'Loaded'
571
- };
572
- const loadStyleObservable2Value = {
573
- src: stylesSrc[1],
574
- hashCode: hashCode(stylesSrc[1]),
575
- loaded: true,
576
- status: 'Loaded'
577
- };
578
-
579
- loadStyletSpy.and.returnValues(loadStyleObservable1, loadStyleObservable2);
580
-
581
- const loadedStyles = jasmine.createSpy('loaded styles success');
582
- const loadedStylesFail = jasmine.createSpy('loaded styles fail');
583
- assetsLoader.loadStyles(stylesSrc).subscribe(loadedStyles, loadedStylesFail);
584
-
585
- expect(loadStyletSpy).toHaveBeenCalledTimes(2);
586
- expect(loadedStyles).not.toHaveBeenCalled();
587
-
588
- loadStyleObservable1.next(loadStyleObservable1Value);
589
- loadStyleObservable1.complete();
590
- loadStyleObservable2.next(loadStyleObservable2Value);
591
- loadStyleObservable2.complete();
592
-
593
- expect(loadedStyles).toHaveBeenCalledTimes(1);
594
- expect(loadedStyles).toHaveBeenCalledWith([loadStyleObservable1Value, loadStyleObservable2Value]);
595
- }));
596
- });
597
-
598
- describe('loadScriptsAndStyles', () => {
599
- it('should load scripts and styles success', fakeAsync(() => {
600
- const scripts = ['assert/main.js', 'assert/main1.js'];
601
- const styles = ['css/style.css', 'css/style1.css'];
602
- const loadScriptsSpy = spyOn(assetsLoader, 'loadScripts');
603
- const loadStylesSpy = spyOn(assetsLoader, 'loadStyles');
604
- const loadScriptsObservable = new Subject<AssetsLoadResult[]>();
605
- const loadStylesObservable = new Subject<AssetsLoadResult[]>();
606
- const loadScriptsValues = [
607
- {
608
- src: scripts[0],
609
- hashCode: hashCode(scripts[0]),
610
- loaded: true,
611
- status: 'Loaded'
612
- },
613
- {
614
- src: scripts[1],
615
- hashCode: hashCode(scripts[1]),
616
- loaded: true,
617
- status: 'Loaded'
618
- }
619
- ];
620
- const loadStylesValues = [
621
- {
622
- src: styles[0],
623
- hashCode: hashCode(styles[0]),
624
- loaded: true,
625
- status: 'Loaded'
626
- },
627
- {
628
- src: styles[1],
629
- hashCode: hashCode(styles[1]),
630
- loaded: true,
631
- status: 'Loaded'
632
- }
633
- ];
634
-
635
- loadScriptsSpy.and.returnValue(loadScriptsObservable);
636
- loadStylesSpy.and.returnValue(loadStylesObservable);
637
-
638
- expect(loadScriptsSpy).not.toHaveBeenCalled();
639
- expect(loadStylesSpy).not.toHaveBeenCalled();
640
-
641
- const loadedSuccess = jasmine.createSpy('loaded scripts and styles success');
642
- const loadedFail = jasmine.createSpy('loaded scripts and styles fail');
643
- assetsLoader.loadScriptsAndStyles(scripts, styles).subscribe(loadedSuccess, loadedFail);
644
-
645
- expect(loadScriptsSpy).toHaveBeenCalledTimes(1);
646
- expect(loadStylesSpy).toHaveBeenCalledTimes(1);
647
- expect(loadedSuccess).not.toHaveBeenCalled();
648
-
649
- loadScriptsObservable.next(loadScriptsValues);
650
- loadScriptsObservable.complete();
651
- loadStylesObservable.next(loadStylesValues);
652
- loadStylesObservable.complete();
653
-
654
- expect(loadedSuccess).toHaveBeenCalledTimes(1);
655
- expect(loadedSuccess).toHaveBeenCalledWith([loadScriptsValues, loadStylesValues]);
656
- }));
657
-
658
- it('should return null when scripts and styles is []', fakeAsync(() => {
659
- const scripts = [];
660
- const styles = [];
661
- const loadScriptsSpy = spyOn(assetsLoader, 'loadScripts');
662
- const loadStylesSpy = spyOn(assetsLoader, 'loadStyles');
663
- const loadScriptsObservable = new Subject<AssetsLoadResult[]>();
664
- const loadStylesObservable = new Subject<AssetsLoadResult[]>();
665
-
666
- loadScriptsSpy.and.returnValue(loadScriptsObservable);
667
- loadStylesSpy.and.returnValue(loadStylesObservable);
668
-
669
- expect(loadScriptsSpy).not.toHaveBeenCalled();
670
- expect(loadStylesSpy).not.toHaveBeenCalled();
671
-
672
- const loadedSuccess = jasmine.createSpy('loaded scripts and styles success');
673
- const loadedFail = jasmine.createSpy('loaded scripts and styles fail');
674
- assetsLoader.loadScriptsAndStyles(scripts, styles).subscribe(loadedSuccess, loadedFail);
675
-
676
- expect(loadScriptsSpy).toHaveBeenCalledTimes(1);
677
- expect(loadStylesSpy).toHaveBeenCalledTimes(1);
678
- expect(loadedSuccess).not.toHaveBeenCalled();
679
-
680
- loadScriptsObservable.next(null);
681
- loadScriptsObservable.complete();
682
- loadStylesObservable.next(null);
683
- loadStylesObservable.complete();
684
-
685
- expect(loadedSuccess).toHaveBeenCalledTimes(1);
686
- expect(loadedSuccess).toHaveBeenCalledWith([null, null]);
687
- }));
688
- });
689
- });