@ihk-gfi/lux-components-update 11.13.0 → 13.0.1

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 (230) hide show
  1. package/README.md +2 -4
  2. package/package.json +14 -17
  3. package/src/add-lux-components/files/app/app.component.html +1 -1
  4. package/src/add-lux-components/files/app/app.component.ts +4 -1
  5. package/src/add-lux-components/files/locale/messages.en.xlf +489 -235
  6. package/src/add-lux-components/files/locale/messages.xlf +451 -218
  7. package/src/add-lux-components/files/scripts/.browserslistrc +10 -7
  8. package/src/add-lux-components/files/src/index.html +31 -0
  9. package/src/add-lux-components/index.js +151 -78
  10. package/src/add-lux-components/index.js.map +1 -1
  11. package/src/add-lux-components/index.ts +141 -66
  12. package/src/add-lux-components/index_spec.js +4 -4
  13. package/src/add-lux-components/index_spec.js.map +1 -1
  14. package/src/add-lux-components/index_spec.ts +1 -1
  15. package/src/add-lux-components/schema.json +1 -1
  16. package/src/collection.json +8 -88
  17. package/src/update-dependencies/index.d.ts +1 -1
  18. package/src/update-dependencies/index.js +82 -65
  19. package/src/update-dependencies/index.js.map +1 -1
  20. package/src/update-dependencies/index.ts +112 -95
  21. package/src/update-dependencies/schema.json +1 -1
  22. package/src/update-en-messages/index.d.ts +2 -0
  23. package/src/update-en-messages/index.js +75 -0
  24. package/src/update-en-messages/index.js.map +1 -0
  25. package/src/update-en-messages/index.ts +78 -0
  26. package/src/{update110100 → update-en-messages}/schema.json +3 -3
  27. package/src/updates/update130000/files/root/.browserslistrc +20 -0
  28. package/src/updates/update130000/index.d.ts +27 -0
  29. package/src/updates/update130000/index.js +296 -0
  30. package/src/updates/update130000/index.js.map +1 -0
  31. package/src/updates/update130000/index.ts +346 -0
  32. package/src/{migrate-to-eslint → updates/update130000}/index_spec.d.ts +0 -0
  33. package/src/updates/update130000/index_spec.js +574 -0
  34. package/src/updates/update130000/index_spec.js.map +1 -0
  35. package/src/updates/update130000/index_spec.ts +665 -0
  36. package/src/{update → updates/update130000}/schema.json +1 -1
  37. package/src/utility/dependencies.js +16 -14
  38. package/src/utility/dependencies.js.map +1 -1
  39. package/src/utility/dependencies.ts +6 -4
  40. package/src/utility/files.d.ts +5 -1
  41. package/src/utility/files.js +27 -16
  42. package/src/utility/files.js.map +1 -1
  43. package/src/utility/files.ts +16 -3
  44. package/src/utility/html.js +88 -25
  45. package/src/utility/html.js.map +1 -1
  46. package/src/utility/html.ts +105 -29
  47. package/src/{migrate-to-webcomponent/index_spec.d.ts → utility/html_spec.d.ts} +0 -0
  48. package/src/utility/html_spec.js +560 -0
  49. package/src/utility/html_spec.js.map +1 -0
  50. package/src/utility/html_spec.ts +575 -0
  51. package/src/utility/json.d.ts +46 -1
  52. package/src/utility/json.js +174 -4
  53. package/src/utility/json.js.map +1 -1
  54. package/src/utility/json.ts +198 -3
  55. package/src/{update/index_spec.d.ts → utility/json_spec.d.ts} +0 -0
  56. package/src/utility/json_spec.js +326 -0
  57. package/src/utility/json_spec.js.map +1 -0
  58. package/src/utility/json_spec.ts +376 -0
  59. package/src/utility/typescript.js +16 -16
  60. package/src/utility/typescript.js.map +1 -1
  61. package/src/utility/typescript_spec.js +36 -36
  62. package/src/utility/typescript_spec.js.map +1 -1
  63. package/src/utility/util.d.ts +2 -2
  64. package/src/utility/util.js +16 -14
  65. package/src/utility/util.js.map +1 -1
  66. package/src/utility/util.ts +7 -5
  67. package/src/utility/validation.js +11 -11
  68. package/src/utility/validation.js.map +1 -1
  69. package/src/migrate-to-eslint/files/.eslintrc.json +0 -68
  70. package/src/migrate-to-eslint/files/.prettierrc +0 -25
  71. package/src/migrate-to-eslint/index.d.ts +0 -6
  72. package/src/migrate-to-eslint/index.js +0 -149
  73. package/src/migrate-to-eslint/index.js.map +0 -1
  74. package/src/migrate-to-eslint/index.ts +0 -181
  75. package/src/migrate-to-eslint/index_spec.js +0 -129
  76. package/src/migrate-to-eslint/index_spec.js.map +0 -1
  77. package/src/migrate-to-eslint/index_spec.ts +0 -152
  78. package/src/migrate-to-eslint/schema.json +0 -23
  79. package/src/migrate-to-webcomponent/index.d.ts +0 -10
  80. package/src/migrate-to-webcomponent/index.js +0 -278
  81. package/src/migrate-to-webcomponent/index.js.map +0 -1
  82. package/src/migrate-to-webcomponent/index.ts +0 -331
  83. package/src/migrate-to-webcomponent/index_spec.js +0 -580
  84. package/src/migrate-to-webcomponent/index_spec.js.map +0 -1
  85. package/src/migrate-to-webcomponent/index_spec.ts +0 -703
  86. package/src/migrate-to-webcomponent/schema.json +0 -23
  87. package/src/update/files/locale/messages.en.xlf +0 -940
  88. package/src/update/files/locale/messages.xlf +0 -815
  89. package/src/update/files/scripts/move-de-files.js +0 -15
  90. package/src/update/index.d.ts +0 -23
  91. package/src/update/index.js +0 -635
  92. package/src/update/index.js.map +0 -1
  93. package/src/update/index.ts +0 -712
  94. package/src/update/index_spec.js +0 -984
  95. package/src/update/index_spec.js.map +0 -1
  96. package/src/update/index_spec.ts +0 -1139
  97. package/src/update110001/index.d.ts +0 -2
  98. package/src/update110001/index.js +0 -42
  99. package/src/update110001/index.js.map +0 -1
  100. package/src/update110001/index.ts +0 -40
  101. package/src/update110001/index_spec.d.ts +0 -1
  102. package/src/update110001/index_spec.js +0 -67
  103. package/src/update110001/index_spec.js.map +0 -1
  104. package/src/update110001/index_spec.ts +0 -72
  105. package/src/update110001/schema.json +0 -23
  106. package/src/update110100/index.d.ts +0 -2
  107. package/src/update110100/index.js +0 -27
  108. package/src/update110100/index.js.map +0 -1
  109. package/src/update110100/index.ts +0 -24
  110. package/src/update110100/index_spec.d.ts +0 -1
  111. package/src/update110100/index_spec.js +0 -69
  112. package/src/update110100/index_spec.js.map +0 -1
  113. package/src/update110100/index_spec.ts +0 -73
  114. package/src/update110101/index.d.ts +0 -2
  115. package/src/update110101/index.js +0 -24
  116. package/src/update110101/index.js.map +0 -1
  117. package/src/update110101/index.ts +0 -21
  118. package/src/update110101/index_spec.d.ts +0 -1
  119. package/src/update110101/index_spec.js +0 -65
  120. package/src/update110101/index_spec.js.map +0 -1
  121. package/src/update110101/index_spec.ts +0 -69
  122. package/src/update110101/schema.json +0 -23
  123. package/src/update110200/index.d.ts +0 -2
  124. package/src/update110200/index.js +0 -24
  125. package/src/update110200/index.js.map +0 -1
  126. package/src/update110200/index.ts +0 -21
  127. package/src/update110200/index_spec.d.ts +0 -1
  128. package/src/update110200/index_spec.js +0 -65
  129. package/src/update110200/index_spec.js.map +0 -1
  130. package/src/update110200/index_spec.ts +0 -69
  131. package/src/update110200/schema.json +0 -23
  132. package/src/update110300/index.d.ts +0 -2
  133. package/src/update110300/index.js +0 -133
  134. package/src/update110300/index.js.map +0 -1
  135. package/src/update110300/index.ts +0 -148
  136. package/src/update110300/index_spec.d.ts +0 -1
  137. package/src/update110300/index_spec.js +0 -121
  138. package/src/update110300/index_spec.js.map +0 -1
  139. package/src/update110300/index_spec.ts +0 -139
  140. package/src/update110300/schema.json +0 -23
  141. package/src/update110400/index.d.ts +0 -2
  142. package/src/update110400/index.js +0 -28
  143. package/src/update110400/index.js.map +0 -1
  144. package/src/update110400/index.ts +0 -28
  145. package/src/update110400/index_spec.d.ts +0 -1
  146. package/src/update110400/index_spec.js +0 -66
  147. package/src/update110400/index_spec.js.map +0 -1
  148. package/src/update110400/index_spec.ts +0 -70
  149. package/src/update110400/schema.json +0 -23
  150. package/src/update110500/index.d.ts +0 -2
  151. package/src/update110500/index.js +0 -28
  152. package/src/update110500/index.js.map +0 -1
  153. package/src/update110500/index.ts +0 -28
  154. package/src/update110500/index_spec.d.ts +0 -1
  155. package/src/update110500/index_spec.js +0 -66
  156. package/src/update110500/index_spec.js.map +0 -1
  157. package/src/update110500/index_spec.ts +0 -70
  158. package/src/update110500/schema.json +0 -23
  159. package/src/update110600/index.d.ts +0 -2
  160. package/src/update110600/index.js +0 -28
  161. package/src/update110600/index.js.map +0 -1
  162. package/src/update110600/index.ts +0 -28
  163. package/src/update110600/index_spec.d.ts +0 -1
  164. package/src/update110600/index_spec.js +0 -66
  165. package/src/update110600/index_spec.js.map +0 -1
  166. package/src/update110600/index_spec.ts +0 -70
  167. package/src/update110600/schema.json +0 -23
  168. package/src/update110700/index.d.ts +0 -2
  169. package/src/update110700/index.js +0 -45
  170. package/src/update110700/index.js.map +0 -1
  171. package/src/update110700/index.ts +0 -47
  172. package/src/update110700/index_spec.d.ts +0 -1
  173. package/src/update110700/index_spec.js +0 -108
  174. package/src/update110700/index_spec.js.map +0 -1
  175. package/src/update110700/index_spec.ts +0 -122
  176. package/src/update110700/schema.json +0 -23
  177. package/src/update110800/index.d.ts +0 -2
  178. package/src/update110800/index.js +0 -32
  179. package/src/update110800/index.js.map +0 -1
  180. package/src/update110800/index.ts +0 -33
  181. package/src/update110800/index_spec.d.ts +0 -1
  182. package/src/update110800/index_spec.js +0 -70
  183. package/src/update110800/index_spec.js.map +0 -1
  184. package/src/update110800/index_spec.ts +0 -75
  185. package/src/update110800/schema.json +0 -23
  186. package/src/update110900/index.d.ts +0 -4
  187. package/src/update110900/index.js +0 -111
  188. package/src/update110900/index.js.map +0 -1
  189. package/src/update110900/index.ts +0 -123
  190. package/src/update110900/index_spec.d.ts +0 -1
  191. package/src/update110900/index_spec.js +0 -311
  192. package/src/update110900/index_spec.js.map +0 -1
  193. package/src/update110900/index_spec.ts +0 -341
  194. package/src/update110900/schema.json +0 -23
  195. package/src/update111000/index.d.ts +0 -2
  196. package/src/update111000/index.js +0 -27
  197. package/src/update111000/index.js.map +0 -1
  198. package/src/update111000/index.ts +0 -27
  199. package/src/update111000/index_spec.d.ts +0 -1
  200. package/src/update111000/index_spec.js +0 -65
  201. package/src/update111000/index_spec.js.map +0 -1
  202. package/src/update111000/index_spec.ts +0 -70
  203. package/src/update111000/schema.json +0 -23
  204. package/src/update111100/index.d.ts +0 -2
  205. package/src/update111100/index.js +0 -389
  206. package/src/update111100/index.js.map +0 -1
  207. package/src/update111100/index.ts +0 -405
  208. package/src/update111100/index_spec.d.ts +0 -1
  209. package/src/update111100/index_spec.js +0 -66
  210. package/src/update111100/index_spec.js.map +0 -1
  211. package/src/update111100/index_spec.ts +0 -70
  212. package/src/update111100/schema.json +0 -23
  213. package/src/update111200/index.d.ts +0 -2
  214. package/src/update111200/index.js +0 -59
  215. package/src/update111200/index.js.map +0 -1
  216. package/src/update111200/index.ts +0 -75
  217. package/src/update111200/index_spec.d.ts +0 -1
  218. package/src/update111200/index_spec.js +0 -67
  219. package/src/update111200/index_spec.js.map +0 -1
  220. package/src/update111200/index_spec.ts +0 -71
  221. package/src/update111200/schema.json +0 -23
  222. package/src/update111300/index.d.ts +0 -2
  223. package/src/update111300/index.js +0 -27
  224. package/src/update111300/index.js.map +0 -1
  225. package/src/update111300/index.ts +0 -27
  226. package/src/update111300/index_spec.d.ts +0 -1
  227. package/src/update111300/index_spec.js +0 -65
  228. package/src/update111300/index_spec.js.map +0 -1
  229. package/src/update111300/index_spec.ts +0 -69
  230. package/src/update111300/schema.json +0 -23
@@ -0,0 +1,665 @@
1
+ import { callRule, SchematicContext } from '@angular-devkit/schematics';
2
+ import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing';
3
+ import * as path from 'path';
4
+ import { of as observableOf } from 'rxjs';
5
+ import { getPackageJsonDependency, NodeDependencyType, updatePackageJsonDependency } from '../../utility/dependencies';
6
+ import { appOptions, workspaceOptions } from '../../utility/test';
7
+ import { UtilConfig } from '../../utility/util';
8
+ import {
9
+ copyFiles,
10
+ fixEmptyStyles,
11
+ fixKarmaConf,
12
+ removeDatepickerDefaultLocale,
13
+ removeLuxSelectedFilesAlwaysUseArray,
14
+ update,
15
+ updateAngularJson, updateIndexHtml,
16
+ updateMajorVersion,
17
+ updatePackageJson, updateTsConfigJson
18
+ } from './index';
19
+
20
+ const collectionPath = path.join(__dirname, '../../collection.json');
21
+
22
+ describe('update130000', () => {
23
+ let appTree: UnitTestTree;
24
+ let runner: SchematicTestRunner;
25
+ let context: SchematicContext;
26
+
27
+ const testOptions: any = {};
28
+
29
+ beforeEach(async () => {
30
+ runner = new SchematicTestRunner('schematics', collectionPath);
31
+
32
+ appTree = await runner.runExternalSchematicAsync('@schematics/angular', 'workspace', workspaceOptions).toPromise();
33
+ appTree = await runner
34
+ .runExternalSchematicAsync('@schematics/angular', 'application', appOptions, appTree)
35
+ .toPromise();
36
+
37
+ UtilConfig.defaultWaitMS = 0;
38
+
39
+ const collection = runner.engine.createCollection(collectionPath);
40
+ const schematic = runner.engine.createSchematic('update', collection);
41
+ context = runner.engine.createContext(schematic);
42
+
43
+ testOptions.project = appOptions.name;
44
+ testOptions.path = workspaceOptions.newProjectRoot + '/' + appOptions.name;
45
+ testOptions.verbose = true;
46
+ });
47
+
48
+ describe('[Rule] update130000', () => {
49
+ it('Sollte einen Fehler werfen, wenn Version < n - 1', () => {
50
+ updatePackageJsonDependency(appTree, {
51
+ type : NodeDependencyType.Default,
52
+ version: '11.14.0',
53
+ name : '@ihk-gfi/lux-components'
54
+ });
55
+ Object.defineProperty(process.versions, 'node', {
56
+ get: () => '16.14.1'
57
+ });
58
+
59
+ callRule(update(testOptions), observableOf(appTree), context).subscribe(
60
+ (success) => {
61
+ },
62
+ (reason) => expect(reason.toString()).toContain('wird nicht unterstützt.')
63
+ );
64
+ });
65
+
66
+ it('Sollte LUX-Components 13 einrichten', (done) => {
67
+ appTree.overwrite(
68
+ '/package.json',
69
+ `
70
+ {
71
+ "name": "Lorem ipsum",
72
+ "version": "0.0.32",
73
+ "scripts": {
74
+ "build": "tsc -p tsconfig.json",
75
+ "test": "npm run build && jasmine src/**/*_spec.js"
76
+ },
77
+ "keywords": [
78
+ "schematics",
79
+ "lux-components"
80
+ ],
81
+ "dependencies": {
82
+ "@ihk-gfi/lux-components": "11.14.0"
83
+ }
84
+ }
85
+ `
86
+ );
87
+
88
+ callRule(update(testOptions), observableOf(appTree), context).subscribe(
89
+ () => {
90
+ expect(getPackageJsonDependency(appTree, '@ihk-gfi/lux-components').version).toEqual(
91
+ '' + updateMajorVersion + '.0.0'
92
+ );
93
+ done();
94
+ },
95
+ (reason) => expect(reason).toBeUndefined()
96
+ );
97
+ });
98
+ });
99
+
100
+ describe('[Rule] copyFiles', () => {
101
+ it('Sollte die Dateien kopieren', (done) => {
102
+ callRule(copyFiles(testOptions), observableOf(appTree), context).subscribe(
103
+ (success) => {
104
+ expect(success.exists(testOptions.path + '/.browserslistrc')).toBeTrue();
105
+ done();
106
+ },
107
+ (reason) => expect(reason).toBeUndefined()
108
+ );
109
+ });
110
+ });
111
+
112
+ describe('[Rule] fixKarmaConf', () => {
113
+ it('Sollte die Datei karma.conf.js anpassen', (done) => {
114
+ appTree.overwrite(
115
+ testOptions.path + '/karma.conf.js',
116
+ `
117
+ // Karma configuration file, see link for more information
118
+ // https://karma-runner.github.io/1.0/config/configuration-file.html
119
+
120
+ module.exports = function (config) {
121
+ config.set({
122
+ basePath: '',
123
+ frameworks: ['jasmine', '@angular-devkit/build-angular'],
124
+ plugins: [
125
+ require('karma-jasmine'),
126
+ require('karma-chrome-launcher'),
127
+ require('karma-jasmine-html-reporter'),
128
+ require('karma-coverage-istanbul-reporter'),
129
+ require('@angular-devkit/build-angular/plugins/karma')
130
+ ],
131
+ client:{
132
+ clearContext: false // leave Jasmine Spec Runner output visible in browser
133
+ },
134
+ coverageIstanbulReporter: {
135
+ dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ],
136
+ fixWebpackSourcePaths: true
137
+ },
138
+
139
+ reporters: ['progress', 'kjhtml'],
140
+ port: 9876,
141
+ colors: true,
142
+ logLevel: config.LOG_INFO,
143
+ autoWatch: true,
144
+ browsers: ['Chrome'],
145
+ singleRun: false
146
+ });
147
+ };
148
+
149
+ `
150
+ );
151
+
152
+ callRule(fixKarmaConf(testOptions), observableOf(appTree), context).subscribe(
153
+ (success) => {
154
+ const content = success?.toString();
155
+
156
+ expect(content).not.toContain('require(\'karma-coverage-istanbul-reporter\'),');
157
+ expect(content).not.toContain('require(\'karma-coverage\'),');
158
+ done();
159
+ },
160
+ (reason) => expect(reason).toBeUndefined()
161
+ );
162
+ });
163
+ });
164
+
165
+ describe('[Rule] updateAngularJson', () => {
166
+ it('Sollte die Datei "angular.json" anpassen', (done) => {
167
+ appTree.overwrite('/angular.json', testAngularJson);
168
+
169
+ callRule(updateAngularJson(testOptions), observableOf(appTree), context).subscribe(
170
+ (success) => {
171
+ const angularJson = success.read('/angular.json');
172
+ expect(angularJson).toBeDefined();
173
+
174
+ const content = angularJson?.toString();
175
+
176
+ expect(content).toContain('"glob": "material-design-icons.css*"');
177
+ expect(content).toContain('"glob": "*(*min.css|*min.css.map)"');
178
+ expect(content).not.toContain('"glob": "*.css",');
179
+ expect(content).not.toContain('"tsConfig": "src/tsconfig.app.ie.json"');
180
+ done();
181
+ },
182
+ (reason) => expect(reason).toBeUndefined()
183
+ );
184
+ });
185
+ });
186
+
187
+ describe('[Rule] updatePackageJson', () => {
188
+ it('Sollte die Datei "package.json" anpassen', (done) => {
189
+ appTree.overwrite(
190
+ '/package.json',
191
+ `
192
+ {
193
+ "name": "Lorem ipsum",
194
+ "version": "0.0.32",
195
+ "scripts": {
196
+ "build": "tsc -p tsconfig.json",
197
+ "test": "npm run build && jasmine src/**/*_spec.js"
198
+ },
199
+ "keywords": [
200
+ "schematics",
201
+ "lux-components"
202
+ ],
203
+ "scripts": {
204
+ "xi18n": "ng extract-i18n --output-path src/locale --ivy"
205
+ },
206
+ "dependencies": {
207
+ "@ihk-gfi/lux-components": "11.7.0"
208
+ }
209
+ }
210
+ `
211
+ );
212
+
213
+ callRule(updatePackageJson(testOptions), observableOf(appTree), context).subscribe(
214
+ (success) => {
215
+ const packageJson = success.read('/package.json');
216
+ expect(packageJson).toBeDefined();
217
+ expect(packageJson?.toString()).toContain('"xi18n": "ng extract-i18n --output-path src/locale"');
218
+ done();
219
+ },
220
+ (reason) => expect(reason).toBeUndefined()
221
+ );
222
+ });
223
+ });
224
+
225
+ describe('[Rule] updateTsConfigJson', () => {
226
+ it('Sollte die Datei "tsconfig.json" anpassen', (done) => {
227
+ appTree.overwrite(
228
+ '/tsconfig.json',
229
+ `
230
+
231
+ {
232
+ "compilerOptions": {
233
+ "baseUrl": "tslint.json",
234
+ "lib": [
235
+ "es2018",
236
+ "dom"
237
+ ],
238
+ "declaration": true,
239
+ "module": "commonjs",
240
+ "moduleResolution": "node",
241
+ }
242
+ }
243
+ `
244
+ );
245
+
246
+ callRule(updateTsConfigJson(testOptions), observableOf(appTree), context).subscribe(
247
+ (success) => {
248
+ const packageJson = success.read('/tsconfig.json');
249
+ expect(packageJson).toBeDefined();
250
+ expect(packageJson?.toString()).toContain('"allowSyntheticDefaultImports": true,');
251
+ done();
252
+ },
253
+ (reason) => expect(reason).toBeUndefined()
254
+ );
255
+ });
256
+ });
257
+
258
+ describe('[Rule] updateIndexHtml', () => {
259
+ it('Sollte die Datei "index.html" anpassen', (done) => {
260
+ appTree.create(
261
+ '/src/index.html',
262
+ `
263
+ <!doctype html>
264
+ <html lang="de">
265
+ <head>
266
+ <meta charset="utf-8">
267
+ <title>LUX Blueprint</title>
268
+ <base href="/">
269
+
270
+ <meta name="viewport" content="width=device-width, initial-scale=1">
271
+ <link rel="icon" type="image/x-icon" href="favicon.ico">
272
+ <link rel="stylesheet" href="assets/icons/fontawesome/css/all.css">
273
+ <link rel="stylesheet" href="assets/icons/material-icons/material-design-icons.css">
274
+ <style>
275
+ .lux-no-js {
276
+ color: red;
277
+ font-size: 20px;
278
+ border: 1px solid red;
279
+ padding: 10px;
280
+ }
281
+ </style>
282
+ </head>
283
+ <body style="margin: 0">
284
+ <noscript>
285
+ <div id="no-js" class="lux-no-js">
286
+ <p><b>Achtung, Javascript ist deaktiviert.</b></p>
287
+ <p>Bitte aktivieren Sie Javascript in Ihrem Browser, damit die Applikation funktionsf&auml;hig ist.</p>
288
+ </div>
289
+ </noscript>
290
+ <lux-bp></lux-bp>
291
+ </body>
292
+ </html>
293
+ `
294
+ );
295
+
296
+ callRule(updateIndexHtml(testOptions), observableOf(appTree), context).subscribe(
297
+ (success) => {
298
+ const indexHtml = success.read('/src/index.html');
299
+
300
+ expect(indexHtml).toBeDefined();
301
+ expect(indexHtml?.toString()).toContain('<link rel="stylesheet preload" as="style" type="text/css" href="assets/icons/fontawesome/css/all.css">');
302
+ expect(indexHtml?.toString()).toContain('<link rel="stylesheet preload" as="style" type="text/css" href="assets/icons/material-icons/material-design-icons.css">');
303
+ done();
304
+ },
305
+ (reason) => expect(reason).toBeUndefined()
306
+ );
307
+ });
308
+ });
309
+
310
+ describe('[Rule] removeLuxSelectedFilesAlwaysUseArray', () => {
311
+ it('Sollte die Datei "package.json" anpassen', (done) => {
312
+ appTree.create(testOptions.path + '/src/app/abc.component.html', templateRemoveLuxSelectedFilesAlwaysUseArray);
313
+
314
+ callRule(removeLuxSelectedFilesAlwaysUseArray(testOptions), observableOf(appTree), context).subscribe(
315
+ (success) => {
316
+ const componentHtml = success.read(testOptions.path + '/src/app/abc.component.html')?.toString();
317
+ expect(componentHtml).toBeDefined();
318
+ expect(componentHtml?.toString()).not.toContain('alwaysUseArray');
319
+
320
+ done();
321
+ },
322
+ (reason) => expect(reason).toBeUndefined()
323
+ );
324
+ });
325
+ });
326
+
327
+ describe('[Rule] fixEmptyStyles', () => {
328
+ it('Sollte die leeren Styles korrigieren', (done) => {
329
+ const filePath1 = testOptions.path + '/src/app/fix-empty-styles1.component.ts';
330
+ appTree.create(filePath1, templateFixEmptyStyles1);
331
+
332
+ const filePath2 = testOptions.path + '/src/app/fix-empty-styles2.component.ts';
333
+ appTree.create(filePath2, templateFixEmptyStyles2);
334
+
335
+ const filePath3 = testOptions.path + '/src/app/fix-empty-styles3.component.ts';
336
+ appTree.create(filePath3, templateFixEmptyStyles3);
337
+
338
+ const filePath4 = testOptions.path + '/src/app/fix-empty-styles4.component.ts';
339
+ appTree.create(filePath4, templateFixEmptyStyles4);
340
+
341
+ callRule(fixEmptyStyles(testOptions), observableOf(appTree), context).subscribe(
342
+ (success) => {
343
+ expect(success.read(filePath1)?.toString()).toContain('styles: []');
344
+ expect(success.read(filePath2)?.toString()).toContain('styles: []');
345
+ expect(success.read(filePath3)?.toString()).toContain('styles: []');
346
+ expect(success.read(filePath4)?.toString()).toContain('styles: []');
347
+
348
+ done();
349
+ },
350
+ (reason) => expect(reason).toBeUndefined()
351
+ );
352
+ });
353
+ });
354
+
355
+ describe('[Rule] removeDatepickerDefaultLocale', () => {
356
+ it('Sollte die Defaultlocale "de-DE" entfernen', (done) => {
357
+ const filePath = testOptions.path + '/src/app/datepicker-default-locale.component.html';
358
+ appTree.create(filePath, templateRemoveDatepickerDefaultLocale);
359
+
360
+ callRule(removeDatepickerDefaultLocale(testOptions), observableOf(appTree), context).subscribe(
361
+ (success) => {
362
+ expect(success.read(filePath)?.toString()).not.toContain('luxLocale="de-DE"');
363
+
364
+ done();
365
+ },
366
+ (reason) => expect(reason).toBeUndefined()
367
+ );
368
+ });
369
+ });
370
+ });
371
+
372
+ const testAngularJson = `
373
+ {
374
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
375
+ "version": 1,
376
+ "newProjectRoot": "projects",
377
+ "projects": {
378
+ "bar": {
379
+ "root": "",
380
+ "sourceRoot": "src",
381
+ "projectType": "application",
382
+ "i18n": {
383
+ "sourceLocale": {
384
+ "code": "de",
385
+ "baseHref": "/"
386
+ },
387
+ "locales": {
388
+ "en": "src/locale/messages.en.xlf"
389
+ }
390
+ },
391
+ "architect": {
392
+ "build": {
393
+ "builder": "ngx-build-plus:browser",
394
+ "options": {
395
+ "outputPath": "dist",
396
+ "index": "src/index.html",
397
+ "main": "src/main.ts",
398
+ "tsConfig": "src/tsconfig.app.json",
399
+ "polyfills": "src/polyfills.ts",
400
+ "assets": [
401
+ "src/assets",
402
+ {
403
+ "glob": "**/*",
404
+ "input": "./node_modules/pdfjs-dist/cmaps/",
405
+ "output": "./assets/cmaps"
406
+ },
407
+ {
408
+ "glob": "*.css",
409
+ "input": "./node_modules/@ihk-gfi/lux-components-theme/prebuilt-themes",
410
+ "output": "./assets/themes"
411
+ },
412
+ {
413
+ "glob": "material-design-icons.css",
414
+ "input": "./node_modules/material-design-icons-iconfont/dist",
415
+ "output": "./assets/icons/material-icons"
416
+ }
417
+ ],
418
+ "styles": [
419
+ "src/styles.scss"
420
+ ],
421
+ "scripts": [
422
+ {
423
+ "bundleName": "polyfill-webcomp",
424
+ "input": "node_modules/@webcomponents/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js"
425
+ },
426
+ {
427
+ "bundleName": "polyfill-webcomp-es5",
428
+ "input": "node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js"
429
+ }
430
+ ],
431
+ "allowedCommonJsDependencies": [
432
+ "hammerjs",
433
+ "ng2-pdf-viewer"
434
+ ],
435
+ "localize": [
436
+ "de"
437
+ ],
438
+ "i18nMissingTranslation": "error",
439
+ "extraWebpackConfig": "webpack.config.js"
440
+ },
441
+ "configurations": {
442
+ "production": {
443
+ "budgets": [
444
+ {
445
+ "type": "anyComponentStyle",
446
+ "maximumWarning": "6kb"
447
+ }
448
+ ],
449
+ "optimization": true,
450
+ "outputHashing": "all",
451
+ "sourceMap": false,
452
+ "namedChunks": false,
453
+ "aot": true,
454
+ "extractLicenses": true,
455
+ "vendorChunk": false,
456
+ "buildOptimizer": true,
457
+ "fileReplacements": [
458
+ {
459
+ "replace": "src/environments/environment.ts",
460
+ "with": "src/environments/environment.prod.ts"
461
+ }
462
+ ]
463
+ },
464
+ "es5": {
465
+ "budgets": [
466
+ {
467
+ "type": "anyComponentStyle",
468
+ "maximumWarning": "6kb"
469
+ }
470
+ ],
471
+ "tsConfig": "src/tsconfig.app.ie.json"
472
+ },
473
+ "en": {
474
+ "localize": [
475
+ "en"
476
+ ],
477
+ "aot": true,
478
+ "outputPath": "dist/en",
479
+ "i18nMissingTranslation": "error"
480
+ }
481
+ }
482
+ },
483
+ "serve": {
484
+ "builder": "ngx-build-plus:dev-server",
485
+ "options": {
486
+ "browserTarget": "bar:build"
487
+ },
488
+ "configurations": {
489
+ "production": {
490
+ "browserTarget": "bar:build:production"
491
+ },
492
+ "es5": {
493
+ "browserTarget": "bar:build:es5"
494
+ },
495
+ "en": {
496
+ "browserTarget": "bar:build:en"
497
+ }
498
+ }
499
+ },
500
+ "extract-i18n": {
501
+ "builder": "@angular-devkit/build-angular:extract-i18n",
502
+ "options": {
503
+ "browserTarget": "bar:build"
504
+ }
505
+ },
506
+ "test": {
507
+ "builder": "ngx-build-plus:karma",
508
+ "options": {
509
+ "main": "src/test.ts",
510
+ "karmaConfig": "./karma.conf.js",
511
+ "polyfills": "src/polyfills.ts",
512
+ "tsConfig": "src/tsconfig.spec.json",
513
+ "scripts": [],
514
+ "styles": [
515
+ "src/styles.scss"
516
+ ],
517
+ "assets": [
518
+ "src/assets",
519
+ {
520
+ "glob": "**/*",
521
+ "input": "./node_modules/pdfjs-dist/cmaps/",
522
+ "output": "./assets/cmaps"
523
+ },
524
+ {
525
+ "glob": "*.css",
526
+ "input": "./node_modules/@ihk-gfi/lux-components-theme/prebuilt-themes",
527
+ "output": "./assets/themes"
528
+ }
529
+ ]
530
+ }
531
+ },
532
+ "lint": {
533
+ "builder": "@angular-eslint/builder:lint",
534
+ "options": {
535
+ "lintFilePatterns": [
536
+ "src/**/*.ts",
537
+ "src/**/*.html"
538
+ ]
539
+ }
540
+ }
541
+ }
542
+ },
543
+ "bar-e2e": {
544
+ "root": "e2e",
545
+ "sourceRoot": "e2e",
546
+ "projectType": "application",
547
+ "architect": {
548
+ "e2e": {
549
+ "builder": "@angular-devkit/build-angular:protractor",
550
+ "options": {
551
+ "protractorConfig": "./protractor.conf.js",
552
+ "devServerTarget": "bar:serve"
553
+ }
554
+ }
555
+ }
556
+ }
557
+ },
558
+ "defaultProject": "bar",
559
+ "cli": {
560
+ "defaultCollection": "@angular-eslint/schematics"
561
+ },
562
+ "schematics": {
563
+ "@schematics/angular:component": {
564
+ "prefix": "bp",
565
+ "style": "scss"
566
+ },
567
+ "@schematics/angular:directive": {
568
+ "prefix": "bp"
569
+ }
570
+ }
571
+ }
572
+
573
+ `;
574
+
575
+ const templateRemoveLuxSelectedFilesAlwaysUseArray = `
576
+ <div fxFlex="auto" fxLayout="column">
577
+ <h3>Ohne ReactiveForm</h3>
578
+ <lux-file-list
579
+ testDirective
580
+ [luxLabel]="label"
581
+ [luxDownloadActionConfig]="downloadActionConfig"
582
+ [luxMaximumExtended]="maximumExtended"
583
+ [luxCapture]="capture"
584
+ [luxAccept]="accept"
585
+ [luxHint]=""
586
+ [luxHintShowOnlyOnFocus]="hintShowOnlyOnFocus"
587
+ [luxDnDActive]="dndActive"
588
+ [luxSelectedFiles]="selected"
589
+ [luxContentsAsBlob]="contentAsBlob"
590
+ [luxUploadReportProgress]="reportProgress"
591
+ (luxSelectedFilesChange)="onSelectedChange($event)"
592
+ [luxSelectedFilesAlwaysUseArray]="alwaysUseArray"
593
+ (luxFocusIn)="log(showOutputEvents, 'luxFocusIn', $event)"
594
+ (luxFocusOut)="log(showOutputEvents, 'luxFocusOut', $event)"
595
+ #filelistexamplewithoutform
596
+ >
597
+ </lux-file-list>
598
+ </div>
599
+ `;
600
+
601
+ const templateFixEmptyStyles1 = `
602
+ import { Component, ContentChild, TemplateRef } from '@angular/core';
603
+
604
+ @Component({
605
+ selector: 'lux-detail-view',
606
+ template: '',
607
+ styles: ['']
608
+ })
609
+ export class LuxDetailViewComponent {
610
+ @ContentChild(TemplateRef) tempRef: TemplateRef<any>;
611
+
612
+ constructor() {}
613
+ }
614
+ `;
615
+
616
+ const templateFixEmptyStyles2 = `
617
+ import { Component, ContentChild, TemplateRef } from '@angular/core';
618
+
619
+ @Component({
620
+ selector:'lux-detail-view',
621
+ template:'',
622
+ styles:['']
623
+ })
624
+ export class LuxDetailViewComponent {
625
+ @ContentChild(TemplateRef) tempRef: TemplateRef<any>;
626
+
627
+ constructor() {}
628
+ }
629
+ `;
630
+
631
+ const templateFixEmptyStyles3 = `
632
+ import { Component, ContentChild, TemplateRef } from '@angular/core';
633
+
634
+ @Component({
635
+ selector:'lux-detail-view',
636
+ template:'',
637
+ styles: ['']
638
+ })
639
+ export class LuxDetailViewComponent {
640
+ @ContentChild(TemplateRef) tempRef: TemplateRef<any>;
641
+
642
+ constructor() {}
643
+ }
644
+ `;
645
+
646
+ const templateFixEmptyStyles4 = `
647
+ import { Component, ContentChild, TemplateRef } from "@angular/core";
648
+
649
+ @Component({
650
+ selector: "lux-detail-view",
651
+ template: "",
652
+ styles: [""]
653
+ })
654
+ export class LuxDetailViewComponent {
655
+ @ContentChild(TemplateRef) tempRef: TemplateRef<any>;
656
+
657
+ constructor() {}
658
+ }
659
+ `;
660
+
661
+ const templateRemoveDatepickerDefaultLocale = `
662
+ <lux-datepicker luxLabel="Datepicker" [luxCustomFilter]="myFilter" luxLocale="de-DE"></lux-datepicker>
663
+ <lux-datepicker luxLabel="Datepicker" luxMaxDate="02/02/2002" luxMinDate="02.02.2000" luxLocale="de-DE" [(luxValue)]="value"></lux-datepicker>
664
+ <lux-datepicker luxLocale="de-DE" luxLabel="Datepicker" luxControlBinding="datepicker"></lux-datepicker>
665
+ `;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/schema",
3
- "id": "luxUpdateSchema",
3
+ "$id": "luxUpdateSchema",
4
4
  "title": "Aktualisiert das LUX-Componentsprojekt",
5
5
  "type": "object",
6
6
  "description": "Aktualisiert das LUX-Componentsprojekt",