devextreme-schematics 1.3.0-beta.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. package/package.json +10 -8
  2. package/src/add-app-template/index.js +2 -1
  3. package/src/add-app-template/index.js.map +1 -1
  4. package/src/add-app-template/index.ts +30 -0
  5. package/src/add-app-template/index_spec.js +6 -5
  6. package/src/add-app-template/index_spec.js.map +1 -1
  7. package/src/add-app-template/index_spec.ts +73 -0
  8. package/src/add-app-template/schema.json +7 -3
  9. package/src/add-layout/files/devextreme.json +1 -1
  10. package/src/add-layout/files/src/app/__name__.component.html +3 -3
  11. package/src/add-layout/files/src/app/__name__.component.ts +1 -1
  12. package/src/add-layout/files/src/app/app-routing.module.ts +1 -1
  13. package/src/add-layout/files/src/app/layouts/side-nav-inner-toolbar/side-nav-inner-toolbar.component.ts +13 -11
  14. package/src/add-layout/files/src/app/layouts/side-nav-outer-toolbar/side-nav-outer-toolbar.component.ts +10 -9
  15. package/src/add-layout/files/src/app/layouts/single-card/single-card.component.ts +4 -4
  16. package/src/add-layout/files/src/app/not-authorized-container.ts +2 -0
  17. package/src/add-layout/files/src/app/shared/components/change-password-form/change-password-form.component.html +8 -6
  18. package/src/add-layout/files/src/app/shared/components/change-password-form/change-password-form.component.ts +6 -15
  19. package/src/add-layout/files/src/app/shared/components/create-account-form/create-account-form.component.html +9 -7
  20. package/src/add-layout/files/src/app/shared/components/create-account-form/create-account-form.component.ts +4 -13
  21. package/src/add-layout/files/src/app/shared/components/header/header.component.ts +11 -6
  22. package/src/add-layout/files/src/app/shared/components/login-form/login-form.component.html +8 -6
  23. package/src/add-layout/files/src/app/shared/components/login-form/login-form.component.ts +2 -12
  24. package/src/add-layout/files/src/app/shared/components/reset-password-form/reset-password-form.component.html +8 -6
  25. package/src/add-layout/files/src/app/shared/components/reset-password-form/reset-password-form.component.ts +2 -12
  26. package/src/add-layout/files/src/app/shared/components/side-navigation-menu/side-navigation-menu.component.ts +8 -7
  27. package/src/add-layout/files/src/app/shared/components/user-panel/user-panel.component.html +5 -2
  28. package/src/add-layout/files/src/app/shared/components/user-panel/user-panel.component.ts +3 -2
  29. package/src/add-layout/files/src/app/shared/services/auth.service.ts +11 -5
  30. package/src/add-layout/files/src/app/shared/services/screen.service.ts +2 -2
  31. package/src/add-layout/files/src/app/unauthenticated-content.ts +53 -0
  32. package/src/add-layout/files/src/dx-styles.scss +4 -0
  33. package/src/add-layout/index.js +45 -31
  34. package/src/add-layout/index.js.map +1 -1
  35. package/src/add-layout/index.ts +384 -0
  36. package/src/add-layout/index_spec.js +42 -28
  37. package/src/add-layout/index_spec.js.map +1 -1
  38. package/src/add-layout/index_spec.ts +340 -0
  39. package/src/add-layout/schema.json +6 -2
  40. package/src/add-sample-views/files/pages/home/home.component.html +5 -5
  41. package/src/add-sample-views/files/pages/profile/profile.component.ts +1 -1
  42. package/src/add-sample-views/files/pages/tasks/tasks.component.html +1 -0
  43. package/src/add-sample-views/index.js +13 -4
  44. package/src/add-sample-views/index.js.map +1 -1
  45. package/src/add-sample-views/index.ts +141 -0
  46. package/src/add-sample-views/index_spec.js +5 -4
  47. package/src/add-sample-views/index_spec.js.map +1 -1
  48. package/src/add-sample-views/index_spec.ts +74 -0
  49. package/src/add-sample-views/schema.json +1 -1
  50. package/src/add-view/index.d.ts +2 -2
  51. package/src/add-view/index.js +33 -22
  52. package/src/add-view/index.js.map +1 -1
  53. package/src/add-view/index.ts +166 -0
  54. package/src/add-view/index_spec.js +12 -12
  55. package/src/add-view/index_spec.js.map +1 -1
  56. package/src/add-view/index_spec.ts +155 -0
  57. package/src/add-view/schema.json +4 -4
  58. package/src/collection.json +2 -1
  59. package/src/install/index.js +16 -3
  60. package/src/install/index.js.map +1 -1
  61. package/src/install/index.ts +88 -0
  62. package/src/install/index_spec.js +10 -9
  63. package/src/install/index_spec.js.map +1 -1
  64. package/src/install/index_spec.ts +106 -0
  65. package/src/install/schema.json +2 -2
  66. package/src/utility/array.js +1 -0
  67. package/src/utility/array.js.map +1 -1
  68. package/src/utility/array.ts +3 -0
  69. package/src/utility/change.js +1 -0
  70. package/src/utility/change.js.map +1 -1
  71. package/src/utility/change.ts +66 -0
  72. package/src/utility/latest-versions.d.ts +1 -1
  73. package/src/utility/latest-versions.js +3 -2
  74. package/src/utility/latest-versions.js.map +1 -1
  75. package/src/utility/latest-versions.ts +6 -0
  76. package/src/utility/modify-json-file.d.ts +1 -0
  77. package/src/utility/modify-json-file.js +7 -3
  78. package/src/utility/modify-json-file.js.map +1 -1
  79. package/src/utility/modify-json-file.ts +16 -0
  80. package/src/utility/project.d.ts +4 -4
  81. package/src/utility/project.js +35 -12
  82. package/src/utility/project.js.map +1 -1
  83. package/src/utility/project.ts +30 -0
  84. package/src/utility/routing.js +1 -0
  85. package/src/utility/routing.js.map +1 -1
  86. package/src/utility/routing.ts +44 -0
  87. package/src/utility/source.js +1 -0
  88. package/src/utility/source.js.map +1 -1
  89. package/src/utility/source.ts +16 -0
  90. package/src/utility/string.js +1 -0
  91. package/src/utility/string.js.map +1 -1
  92. package/src/utility/string.ts +5 -0
  93. package/src/utility/styles.d.ts +1 -2
  94. package/src/utility/styles.js +3 -4
  95. package/src/utility/styles.js.map +1 -1
  96. package/src/utility/styles.ts +30 -0
@@ -0,0 +1,384 @@
1
+ import {
2
+ Rule,
3
+ SchematicContext,
4
+ Tree,
5
+ apply,
6
+ url,
7
+ move,
8
+ chain,
9
+ filter,
10
+ forEach,
11
+ mergeWith,
12
+ callRule,
13
+ FileEntry,
14
+ template
15
+ } from '@angular-devkit/schematics';
16
+
17
+ import {
18
+ SourceFile
19
+ } from 'typescript';
20
+
21
+ import { strings } from '@angular-devkit/core';
22
+
23
+ import { join, basename } from 'path';
24
+
25
+ import {
26
+ getApplicationPath,
27
+ getSourceRootPath,
28
+ getProjectName
29
+ } from '../utility/project';
30
+
31
+ import {
32
+ humanize
33
+ } from '../utility/string';
34
+
35
+ import {
36
+ addStylesToApp
37
+ } from '../utility/styles';
38
+
39
+ import {
40
+ modifyJSONFile,
41
+ parseJson
42
+ } from '../utility/modify-json-file';
43
+
44
+ import {
45
+ NodeDependencyType,
46
+ addPackageJsonDependency
47
+ } from '@schematics/angular/utility/dependencies';
48
+
49
+ import {
50
+ NodePackageInstallTask
51
+ } from '@angular-devkit/schematics/tasks';
52
+
53
+ import { getSourceFile } from '../utility/source';
54
+
55
+ import {
56
+ applyChanges,
57
+ insertItemToArray
58
+ } from '../utility/change';
59
+
60
+ import {
61
+ hasComponentInRoutes,
62
+ getRoute,
63
+ findRoutesInSource
64
+ } from '../utility/routing';
65
+
66
+ import {
67
+ addImportToModule, addProviderToModule, insertImport
68
+ } from '@schematics/angular/utility/ast-utils';
69
+
70
+ import { getWorkspace } from '@schematics/angular/utility/workspace';
71
+ import { Change } from '@schematics/angular/utility/change';
72
+
73
+ const projectFilesSource = './files/src';
74
+ const workspaceFilesSource = './files';
75
+
76
+ function addScriptSafe(scripts: any, name: string, value: string) {
77
+ const currentValue = scripts[name];
78
+
79
+ if (!currentValue) {
80
+ scripts[name] = value;
81
+ return;
82
+ }
83
+
84
+ const alterName = `origin-${name}`;
85
+ const safeValue = `npm run ${alterName} && ${value}`;
86
+
87
+ if (currentValue === value || currentValue === safeValue) {
88
+ return;
89
+ }
90
+
91
+ scripts[alterName] = currentValue;
92
+ scripts[name] = safeValue;
93
+ }
94
+
95
+ function addBuildThemeScript() {
96
+ return (host: Tree) => {
97
+ modifyJSONFile(host, './package.json', config => {
98
+ const scripts = config['scripts'];
99
+
100
+ addScriptSafe(scripts, 'build-themes', 'devextreme build');
101
+ addScriptSafe(scripts, 'postinstall', 'npm run build-themes');
102
+
103
+ return config;
104
+ });
105
+
106
+ return host;
107
+ };
108
+ }
109
+
110
+ async function addCustomThemeStyles(host: Tree, options: any, sourcePath: string = '') {
111
+ const projectName = await getProjectName(host, options.project);
112
+ modifyJSONFile(host, './angular.json', config => {
113
+ const stylesList = [
114
+ `${sourcePath}/dx-styles.scss`,
115
+ `${sourcePath}/themes/generated/theme.additional.css`,
116
+ `${sourcePath}/themes/generated/theme.base.css`,
117
+ 'node_modules/devextreme/dist/css/dx.common.css'
118
+ ];
119
+
120
+ return addStylesToApp(projectName, config, stylesList);
121
+ });
122
+
123
+ return host;
124
+ }
125
+
126
+ async function updateBudgets(host: Tree, options: any) {
127
+ const projectName = await getProjectName(host, options.project);
128
+ modifyJSONFile(host, './angular.json', config => {
129
+ const budgets: any[] = config.projects[projectName].architect.build.configurations.production.budgets;
130
+
131
+ const budget = budgets.find((item) => item.type === 'initial');
132
+ if (budget) {
133
+ budget.maximumWarning = '4mb';
134
+ budget.maximumError = '7mb';
135
+ }
136
+
137
+ return config;
138
+ });
139
+
140
+ return host;
141
+ }
142
+
143
+ function addViewportToBody(sourcePath: string = '') {
144
+ return (host: Tree) => {
145
+ const indexPath = join(sourcePath, 'index.html');
146
+ let indexContent = host.read(indexPath)!.toString();
147
+
148
+ indexContent = indexContent.replace(/<body>/, '<body class="dx-viewport">');
149
+ host.overwrite(indexPath, indexContent);
150
+
151
+ return host;
152
+ };
153
+ }
154
+
155
+ function modifyFileRule(path: string, callback: (source: SourceFile) => Change[]) {
156
+ return (host: Tree) => {
157
+ const source = getSourceFile(host, path);
158
+
159
+ if (!source) {
160
+ return host;
161
+ }
162
+
163
+ const changes = callback(source);
164
+
165
+ return applyChanges(host, changes, path);
166
+ };
167
+ }
168
+
169
+ function updateAppModule(host: Tree, sourcePath: string) {
170
+ const appModulePath = sourcePath + 'app.module.ts';
171
+
172
+ const importSetter = (importName: string, path: string) => {
173
+ return (source: SourceFile) => {
174
+ return addImportToModule(source, appModulePath, importName, path);
175
+ };
176
+ };
177
+
178
+ const providerSetter = (importName: string, path: string) => {
179
+ return (source: SourceFile) => {
180
+ return addProviderToModule(source, appModulePath, importName, path);
181
+ };
182
+ };
183
+
184
+ const rules = [
185
+ modifyFileRule(appModulePath, importSetter('SideNavOuterToolbarModule', './layouts')),
186
+ modifyFileRule(appModulePath, importSetter('SideNavInnerToolbarModule', './layouts')),
187
+ modifyFileRule(appModulePath, importSetter('SingleCardModule', './layouts')),
188
+ modifyFileRule(appModulePath, importSetter('FooterModule', './shared/components')),
189
+ modifyFileRule(appModulePath, importSetter('ResetPasswordFormModule', './shared/components')),
190
+ modifyFileRule(appModulePath, importSetter('CreateAccountFormModule', './shared/components')),
191
+ modifyFileRule(appModulePath, importSetter('ChangePasswordFormModule', './shared/components')),
192
+ modifyFileRule(appModulePath, importSetter('LoginFormModule', './shared/components')),
193
+ modifyFileRule(appModulePath, providerSetter('AuthService', './shared/services')),
194
+ modifyFileRule(appModulePath, providerSetter('ScreenService', './shared/services')),
195
+ modifyFileRule(appModulePath, providerSetter('AppInfoService', './shared/services')),
196
+ modifyFileRule(appModulePath, importSetter('UnauthenticatedContentModule', './unauthenticated-content')),
197
+ ];
198
+
199
+ if (!hasRoutingModule(host, sourcePath)) {
200
+ rules.push(modifyFileRule(appModulePath, importSetter('AppRoutingModule', './app-routing.module')));
201
+ }
202
+
203
+ return chain(rules);
204
+ }
205
+
206
+ function getComponentName(host: Tree, sourcePath: string) {
207
+ let name = '';
208
+ const index = 1;
209
+
210
+ if (!host.exists(sourcePath + 'app.component.ts')) {
211
+ name = 'app';
212
+ }
213
+
214
+ while (!name) {
215
+ const componentName = `app${index}`;
216
+ if (!host.exists(`${sourcePath}${componentName}.component.ts`)) {
217
+ name = componentName;
218
+ }
219
+ }
220
+
221
+ return name;
222
+ }
223
+
224
+ function hasRoutingModule(host: Tree, sourcePath: string) {
225
+ return host.exists(sourcePath + 'app-routing.module.ts');
226
+ }
227
+
228
+ function addPackagesToDependency(globalNgCliVersion: string) {
229
+ return (host: Tree) => {
230
+ addPackageJsonDependency(host, {
231
+ type: NodeDependencyType.Default,
232
+ name: '@angular/cdk',
233
+ version: globalNgCliVersion
234
+ });
235
+
236
+ return host;
237
+ };
238
+ }
239
+
240
+ function modifyContentByTemplate(
241
+ sourcePath: string = '',
242
+ templateSourcePath: string,
243
+ filePath: string | null,
244
+ templateOptions: any = {},
245
+ modifyContent?: (templateContent: string, currentContent: string, filePath: string ) => string)
246
+ : Rule {
247
+ return (host: Tree, context: SchematicContext) => {
248
+ const modifyIfExists = (fileEntry: FileEntry) => {
249
+ const fileEntryPath = join(sourcePath, fileEntry.path.toString());
250
+ if (!host.exists(fileEntryPath)) {
251
+ return fileEntry;
252
+ }
253
+
254
+ const templateContent = fileEntry.content!.toString();
255
+ let modifiedContent = templateContent;
256
+
257
+ const currentContent = host.read(fileEntryPath)!.toString();
258
+ if (modifyContent) {
259
+ modifiedContent = modifyContent(templateContent, currentContent, fileEntryPath);
260
+ }
261
+
262
+ // NOTE: Workaround for https://github.com/angular/angular-cli/issues/11337
263
+ if (modifiedContent !== currentContent) {
264
+ host.overwrite(fileEntryPath, modifiedContent);
265
+ }
266
+ return null;
267
+ };
268
+
269
+ const rules = [
270
+ filter(path => {
271
+ return !filePath || join('./', path) === join('./', filePath);
272
+ }),
273
+ template(templateOptions),
274
+ forEach(modifyIfExists),
275
+ move(sourcePath)
276
+ ];
277
+
278
+ const modifiedSource = apply(url(templateSourcePath), rules);
279
+ const resultRule = mergeWith(modifiedSource);
280
+
281
+ return callRule(resultRule, host, context);
282
+ };
283
+ }
284
+
285
+ function updateDevextremeConfig(sourcePath: string = '') {
286
+ const devextremeConfigPath = '/devextreme.json';
287
+ const templateOptions = {
288
+ sourcePath
289
+ };
290
+
291
+ const modifyConfig = (templateContent: string, currentContent: string) => {
292
+ const oldConfig = JSON.parse(currentContent);
293
+ const newConfig = JSON.parse(templateContent);
294
+
295
+ [].push.apply(oldConfig.build.commands, newConfig.build.commands);
296
+
297
+ return JSON.stringify(oldConfig, null, ' ');
298
+ };
299
+
300
+ return modifyContentByTemplate('./', workspaceFilesSource, devextremeConfigPath, templateOptions, modifyConfig);
301
+ }
302
+
303
+ const modifyRoutingModule = (host: Tree, routingModulePath: string) => {
304
+ // TODO: Try to use the isolated host to generate the result string
305
+ let source = getSourceFile(host, routingModulePath)!;
306
+ const importChange = insertImport(source, routingModulePath, 'LoginFormComponent', './shared/components');
307
+ const providerChanges = addProviderToModule(source, routingModulePath, 'AuthGuardService', './shared/services');
308
+ applyChanges(host, [ importChange, ...providerChanges], routingModulePath);
309
+
310
+ source = getSourceFile(host, routingModulePath)!;
311
+ const routes = findRoutesInSource(source)!;
312
+ if (!hasComponentInRoutes(routes, 'login-form')) {
313
+ const loginFormRoute = getRoute('login-form');
314
+ insertItemToArray(host, routingModulePath, routes, loginFormRoute);
315
+ }
316
+ };
317
+
318
+ export default function(options: any): Rule {
319
+ return async (host: Tree) => {
320
+ const ngConfig = host.read('./angular.json')!.toString();
321
+ const defaultProjectName = parseJson(ngConfig).defaultProject;
322
+ const project = await getProjectName(host, options.project);
323
+ const workspace = await getWorkspace(host);
324
+ const ngProject = workspace.projects.get(project);
325
+ const prefix = ngProject?.prefix;
326
+ const title = humanize(project);
327
+ const appPath = await getApplicationPath(host, project);
328
+ const sourcePath = await getSourceRootPath(host, project);
329
+ const layout = options.layout;
330
+ const override = options.resolveConflicts === 'override';
331
+ const componentName = override ? 'app' : getComponentName(host, appPath);
332
+ const pathToCss = sourcePath?.replace(/\/?(\w)+\/?/g, '../');
333
+ const templateOptions = {
334
+ name: componentName,
335
+ layout,
336
+ title,
337
+ strings,
338
+ path: pathToCss,
339
+ prefix
340
+ };
341
+
342
+ const modifyContent = (templateContent: string, currentContent: string, filePath: string) => {
343
+ if (basename(filePath) === 'styles.scss') {
344
+ return `${currentContent}\n${templateContent}`;
345
+ }
346
+
347
+ if (basename(filePath) === 'app-routing.module.ts' && hasRoutingModule(host, appPath)) {
348
+ modifyRoutingModule(host, filePath);
349
+ return currentContent;
350
+ }
351
+
352
+ return templateContent;
353
+ };
354
+
355
+ const rules = [
356
+ modifyContentByTemplate(sourcePath, projectFilesSource, null, templateOptions, modifyContent),
357
+ updateDevextremeConfig(sourcePath),
358
+ updateAppModule(host, appPath),
359
+ addBuildThemeScript(),
360
+ () => addCustomThemeStyles(host, options, sourcePath) as any,
361
+ addViewportToBody(sourcePath),
362
+ addPackagesToDependency(options.globalNgCliVersion)
363
+ ];
364
+
365
+ if (options.updateBudgets) {
366
+ rules.push(() => updateBudgets(host, options) as any);
367
+ }
368
+
369
+ if (!options.skipInstall) {
370
+ rules.push((_: Tree, context: SchematicContext) => {
371
+ context.addTask(new NodePackageInstallTask());
372
+ });
373
+ }
374
+
375
+ if (override) {
376
+ if (project === defaultProjectName) {
377
+ rules.push(modifyContentByTemplate('./', workspaceFilesSource, 'e2e/src/app.e2e-spec.ts', { title }));
378
+ rules.push(modifyContentByTemplate('./', workspaceFilesSource, 'e2e/src/app.po.ts'));
379
+ }
380
+ }
381
+
382
+ return chain(rules);
383
+ };
384
+ }
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
4
  return new (P || (P = Promise))(function (resolve, reject) {
4
5
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
6
  function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
9
  });
9
10
  };
@@ -19,7 +20,7 @@ describe('layout', () => {
19
20
  projectRoot: '',
20
21
  inlineStyle: false,
21
22
  inlineTemplate: false,
22
- routing: true,
23
+ routing: false,
23
24
  style: 'scss',
24
25
  skipTests: false,
25
26
  skipPackageJson: false
@@ -30,16 +31,17 @@ describe('layout', () => {
30
31
  };
31
32
  const options = {
32
33
  layout: 'side-nav-outer-toolbar',
33
- resolveConflicts: 'override'
34
+ resolveConflicts: 'override',
35
+ globalNgCliVersion: '^8.0.0'
34
36
  };
35
37
  const angularSchematicsCollection = require.resolve('../../node_modules/@schematics/angular/collection.json');
36
38
  const schematicRunner = new testing_1.SchematicTestRunner('@schematics/angular', angularSchematicsCollection);
37
39
  let appTree;
38
- beforeEach(() => __awaiter(this, void 0, void 0, function* () {
40
+ beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
39
41
  appTree = yield schematicRunner.runSchematicAsync('workspace', workspaceOptions).toPromise();
40
42
  appTree = yield schematicRunner.runSchematicAsync('application', appOptions, appTree).toPromise();
41
43
  }));
42
- it('should add layout with override', () => __awaiter(this, void 0, void 0, function* () {
44
+ it('should add layout with override', () => __awaiter(void 0, void 0, void 0, function* () {
43
45
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
44
46
  const tree = yield runner.runSchematicAsync('add-layout', options, appTree).toPromise();
45
47
  expect(tree.files)
@@ -89,6 +91,12 @@ describe('layout', () => {
89
91
  expect(moduleContent)
90
92
  .toContain(`import { AuthService, ScreenService, AppInfoService } from './shared/services';`);
91
93
  expect(moduleContent).toContain('import { AppRoutingModule }');
94
+ expect(moduleContent)
95
+ .toContain('import { FooterModule, ' +
96
+ 'ResetPasswordFormModule, ' +
97
+ 'CreateAccountFormModule, ' +
98
+ 'ChangePasswordFormModule, ' +
99
+ 'LoginFormModule }');
92
100
  const testContent = tree.readContent('/e2e/src/app.e2e-spec.ts');
93
101
  expect(testContent).toMatch(/'Welcome to TestApp!'/);
94
102
  const testUtilsContent = tree.readContent('/e2e/src/app.po.ts');
@@ -101,14 +109,14 @@ describe('layout', () => {
101
109
  const navigationMenu = tree.readContent('/src/app/shared/components/side-navigation-menu/side-navigation-menu.component.ts');
102
110
  expect(navigationMenu).toContain('@ViewChild(DxTreeViewComponent, { static: true })');
103
111
  }));
104
- it('should add npm scripts', () => __awaiter(this, void 0, void 0, function* () {
112
+ it('should add npm scripts', () => __awaiter(void 0, void 0, void 0, function* () {
105
113
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
106
114
  const tree = yield runner.runSchematicAsync('add-layout', options, appTree).toPromise();
107
115
  const packageConfig = JSON.parse(tree.readContent('package.json'));
108
116
  expect(packageConfig.scripts['build-themes']).toBe('devextreme build');
109
117
  expect(packageConfig.scripts['postinstall']).toBe('npm run build-themes');
110
118
  }));
111
- it('should set static flag', () => __awaiter(this, void 0, void 0, function* () {
119
+ it('should set static flag', () => __awaiter(void 0, void 0, void 0, function* () {
112
120
  dependencies_1.removePackageJsonDependency(appTree, '@angular/core');
113
121
  dependencies_1.addPackageJsonDependency(appTree, {
114
122
  type: dependencies_1.NodeDependencyType.Default,
@@ -120,7 +128,7 @@ describe('layout', () => {
120
128
  const navigationMenu = tree.readContent('/src/app/shared/components/side-navigation-menu/side-navigation-menu.component.ts');
121
129
  expect(navigationMenu).toContain('@ViewChild(DxTreeViewComponent, { static: true })');
122
130
  }));
123
- it('should add npm scripts safely', () => __awaiter(this, void 0, void 0, function* () {
131
+ it('should add npm scripts safely', () => __awaiter(void 0, void 0, void 0, function* () {
124
132
  modify_json_file_1.modifyJSONFile(appTree, './package.json', config => {
125
133
  const scripts = config['scripts'];
126
134
  scripts['build-themes'] = 'prev value 1';
@@ -135,38 +143,44 @@ describe('layout', () => {
135
143
  expect(packageConfig.scripts['build-themes']).toBe('npm run origin-build-themes && devextreme build');
136
144
  expect(packageConfig.scripts['postinstall']).toBe('npm run origin-postinstall && npm run build-themes');
137
145
  }));
138
- it('should add angular/cdk dependency', () => __awaiter(this, void 0, void 0, function* () {
146
+ it('should add angular/cdk dependency', () => __awaiter(void 0, void 0, void 0, function* () {
139
147
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
140
148
  const tree = yield runner.runSchematicAsync('add-layout', options, appTree).toPromise();
141
149
  const packageConfig = JSON.parse(tree.readContent('package.json'));
142
150
  expect(packageConfig.dependencies['@angular/cdk']).toBeDefined();
143
151
  }));
144
- it('should update budgets if updateBudgets option is true', () => __awaiter(this, void 0, void 0, function* () {
152
+ it('should choose angular/cdk version such as angular/cli', () => __awaiter(void 0, void 0, void 0, function* () {
153
+ const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
154
+ const tree = yield runner.runSchematicAsync('add-layout', options, appTree).toPromise();
155
+ const packageConfig = JSON.parse(tree.readContent('package.json'));
156
+ expect(packageConfig.dependencies['@angular/cdk']).toBe('^8.0.0');
157
+ }));
158
+ it('should update budgets if updateBudgets option is true', () => __awaiter(void 0, void 0, void 0, function* () {
145
159
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
146
- const tree = yield runner.runSchematicAsync('add-layout', Object.assign({}, options, { updateBudgets: true }), appTree).toPromise();
160
+ const tree = yield runner.runSchematicAsync('add-layout', Object.assign(Object.assign({}, options), { updateBudgets: true }), appTree).toPromise();
147
161
  const angularContent = JSON.parse(tree.readContent('/angular.json'));
148
162
  const budgets = angularContent.projects.testApp.architect.build.configurations.production.budgets;
149
163
  expect(budgets.length).toBe(2);
150
164
  expect(budgets[0]).toEqual({
151
165
  type: 'initial',
152
166
  maximumWarning: '4mb',
153
- maximumError: '6mb'
167
+ maximumError: '7mb'
154
168
  });
155
169
  }));
156
- it('should not update budgets if updateBudgets option is not defined or false', () => __awaiter(this, void 0, void 0, function* () {
170
+ it('should not update budgets if updateBudgets option is not defined or false', () => __awaiter(void 0, void 0, void 0, function* () {
157
171
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
158
172
  const tree = yield runner.runSchematicAsync('add-layout', options, appTree).toPromise();
159
173
  const angularContent = JSON.parse(tree.readContent('/angular.json'));
160
174
  const budgets = angularContent.projects.testApp.architect.build.configurations.production.budgets;
161
175
  const defaultBudget = {
162
176
  type: 'initial',
163
- maximumWarning: '2mb',
164
- maximumError: '5mb'
177
+ maximumWarning: '500kb',
178
+ maximumError: '1mb'
165
179
  };
166
180
  expect(budgets.length).toBe(2);
167
181
  expect(budgets[0]).toEqual(defaultBudget);
168
182
  }));
169
- it('should add layout without override', () => __awaiter(this, void 0, void 0, function* () {
183
+ it('should add layout without override', () => __awaiter(void 0, void 0, void 0, function* () {
170
184
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
171
185
  options.resolveConflicts = 'createNew';
172
186
  const tree = yield runner.runSchematicAsync('add-layout', options, appTree).toPromise();
@@ -183,7 +197,7 @@ describe('layout', () => {
183
197
  const appInfo = tree.readContent('/src/app/shared/services/app-info.service.ts');
184
198
  expect(appInfo).toContain(`return 'TestApp';`);
185
199
  }));
186
- it('should add routing to layout', () => __awaiter(this, void 0, void 0, function* () {
200
+ it('should add routing to layout', () => __awaiter(void 0, void 0, void 0, function* () {
187
201
  let newAppTree = yield schematicRunner.runSchematicAsync('workspace', workspaceOptions).toPromise();
188
202
  appOptions.routing = false;
189
203
  newAppTree = yield schematicRunner.runSchematicAsync('application', appOptions, newAppTree).toPromise();
@@ -192,7 +206,7 @@ describe('layout', () => {
192
206
  expect(tree.files).toContain('/src/app/app-routing.module.ts');
193
207
  const moduleContent = tree.readContent('/src/app/app-routing.module.ts');
194
208
  expect(moduleContent)
195
- .toMatch(/imports:\s\[RouterModule\.forRoot\(routes\)\],/);
209
+ .toMatch(/imports:\s\[RouterModule\.forRoot\(routes, { useHash: true }\)\],/);
196
210
  expect(moduleContent)
197
211
  .toContain(`{
198
212
  path: 'login-form',
@@ -200,7 +214,7 @@ describe('layout', () => {
200
214
  canActivate: [ AuthGuardService ]
201
215
  }`);
202
216
  }));
203
- it('should use selected layout', () => __awaiter(this, void 0, void 0, function* () {
217
+ it('should use selected layout', () => __awaiter(void 0, void 0, void 0, function* () {
204
218
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
205
219
  options.layout = 'side-nav-inner-toolbar';
206
220
  options.resolveConflicts = 'override';
@@ -208,31 +222,31 @@ describe('layout', () => {
208
222
  const content = tree.readContent('/src/app/app.component.html');
209
223
  expect(content).toContain('app-side-nav-inner-toolbar title="{{appInfo.title}}"');
210
224
  }));
211
- it('should consider the `project` option', () => __awaiter(this, void 0, void 0, function* () {
212
- appTree = yield schematicRunner.runSchematicAsync('application', Object.assign({}, appOptions, { name: 'testApp2', projectRoot: 'projects/testApp2' }), appTree).toPromise();
225
+ it('should consider the `project` option', () => __awaiter(void 0, void 0, void 0, function* () {
226
+ appTree = yield schematicRunner.runSchematicAsync('application', Object.assign(Object.assign({}, appOptions), { name: 'testApp2', projectRoot: 'projects/testApp2' }), appTree).toPromise();
213
227
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
214
- const tree = yield runner.runSchematicAsync('add-layout', Object.assign({}, options, { project: 'testApp2' }), appTree).toPromise();
228
+ const tree = yield runner.runSchematicAsync('add-layout', Object.assign(Object.assign({}, options), { project: 'testApp2' }), appTree).toPromise();
215
229
  expect(tree.files)
216
230
  .toContain('/devextreme.json');
217
231
  expect(tree.files)
218
232
  .toContain('/projects/testApp2/src/themes/metadata.base.json');
219
233
  }));
220
- it('should merge build commands in devextreme.json file', () => __awaiter(this, void 0, void 0, function* () {
221
- appTree = yield schematicRunner.runSchematicAsync('application', Object.assign({}, appOptions, { name: 'testApp2', prefix: 'app2', projectRoot: 'projects/testApp2' }), appTree).toPromise();
234
+ it('should merge build commands in devextreme.json file', () => __awaiter(void 0, void 0, void 0, function* () {
235
+ appTree = yield schematicRunner.runSchematicAsync('application', Object.assign(Object.assign({}, appOptions), { name: 'testApp2', prefix: 'app2', projectRoot: 'projects/testApp2' }), appTree).toPromise();
222
236
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
223
237
  let tree = yield runner.runSchematicAsync('add-layout', options, appTree).toPromise();
224
- tree = yield runner.runSchematicAsync('add-layout', Object.assign({}, options, { project: 'testApp2' }), appTree).toPromise();
238
+ tree = yield runner.runSchematicAsync('add-layout', Object.assign(Object.assign({}, options), { project: 'testApp2' }), appTree).toPromise();
225
239
  const appContent = tree.readContent('projects/testApp2/src/app/app.component.ts');
226
240
  expect(appContent).toContain('selector: \'app2-root\',');
227
241
  const content = tree.readContent('/devextreme.json');
228
242
  expect(content).toContain('"inputFile": "src/themes/metadata.base.json",');
229
243
  expect(content).toContain('"inputFile": "projects/testApp2/src/themes/metadata.base.json",');
230
244
  }));
231
- it('should add e2e tests only for default project', () => __awaiter(this, void 0, void 0, function* () {
232
- appTree = yield schematicRunner.runSchematicAsync('application', Object.assign({}, appOptions, { name: 'testApp2', projectRoot: 'projects/testApp2' }), appTree).toPromise();
245
+ it('should add e2e tests only for default project', () => __awaiter(void 0, void 0, void 0, function* () {
246
+ appTree = yield schematicRunner.runSchematicAsync('application', Object.assign(Object.assign({}, appOptions), { name: 'testApp2', projectRoot: 'projects/testApp2' }), appTree).toPromise();
233
247
  const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
234
248
  let tree = yield runner.runSchematicAsync('add-layout', options, appTree).toPromise();
235
- tree = yield runner.runSchematicAsync('add-layout', Object.assign({}, options, { project: 'testApp2' }), appTree).toPromise();
249
+ tree = yield runner.runSchematicAsync('add-layout', Object.assign(Object.assign({}, options), { project: 'testApp2' }), appTree).toPromise();
236
250
  const testContent = tree.readContent('/e2e/src/app.e2e-spec.ts');
237
251
  expect(testContent).toContain('Welcome to TestApp!');
238
252
  const testUtilsContent = tree.readContent('/e2e/src/app.po.ts');
@@ -1 +1 @@
1
- {"version":3,"file":"index_spec.js","sourceRoot":"","sources":["index_spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index_spec.js","sourceRoot":"","sources":["index_spec.ts"],"names":[],"mappings":"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"}