@pega/custom-dx-components 0.25.21 → 0.25.23

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 (46) hide show
  1. package/package.json +2 -2
  2. package/src/tasks/build-jest-assets/index.js +0 -1
  3. package/src/tasks/build-lib/helper.js +0 -2
  4. package/src/tasks/build-lib/index.js +3 -3
  5. package/src/tasks/delete/helper.js +0 -1
  6. package/src/tasks/delete/index.js +5 -1
  7. package/src/tasks/delete-lib/helper.js +0 -1
  8. package/src/tasks/delete-pub/helper.js +7 -2
  9. package/src/tasks/delete-version/index.js +0 -1
  10. package/src/tasks/export-archive/helper.js +7 -1
  11. package/src/tasks/export-archive/index.js +10 -34
  12. package/src/tasks/import-archive/helper.js +19 -5
  13. package/src/tasks/import-archive/index.js +247 -35
  14. package/src/tasks/import-comp/helper.js +0 -2
  15. package/src/tasks/init/template/package.json.mustache +1 -1
  16. package/src/tasks/init/template/tasks.config.json +1 -1
  17. package/src/tasks/list/helper.js +17 -2
  18. package/src/tasks/list-lib/index.js +10 -1
  19. package/src/tasks/list-pub/helper.js +2 -4
  20. package/src/tasks/list-pub/index.js +15 -2
  21. package/src/tasks/publish/helper.js +0 -1
  22. package/src/tasks/publish/index.js +13 -1
  23. package/src/tasks/publish-all/index.js +10 -1
  24. package/src/tasks/publish-archive/index.js +51 -83
  25. package/src/tasks/publish-lib/index.js +0 -23
  26. package/src/tasks/rename/index.js +9 -1
  27. package/src/tasks/restore/index.js +19 -13
  28. package/src/tasks/set-perm/index.js +0 -2
  29. package/src/tasks/show-help/index.js +1 -5
  30. package/src/tasks/show-status/index.js +19 -6
  31. package/src/tasks/store/index.js +39 -18
  32. package/src/tasks/switch-lib/helper.js +0 -1
  33. package/src/util.js +6 -77
  34. package/tests/assets/library/components/create/shared/create-nonce.ts +1 -0
  35. package/tests/assets/library/components/createAll/Constellation/Pega_DXIL_MyDate/date.ts +0 -24
  36. package/tests/assets/library/components/createAll/Constellation/Pega_DXIL_MySearchbox/repeat-utils.ts +0 -4
  37. package/tests/assets/library/components/createAll/Constellation/shared/create-nonce.ts +1 -0
  38. package/tests/functional/localCreateBuildAllDeleteAll.test.js +8 -8
  39. package/tests/functional/localCreateBuildDelete.test.js +8 -8
  40. package/tests/functional/localCreateListDelete.test.js +8 -8
  41. package/tests/functional/localCreatePublishAllDeleteAll.test.js +8 -8
  42. package/tests/functional/localCreatePublishDelete.test.js +8 -8
  43. package/tests/functional/localCreateRenameDelete.test.js +8 -8
  44. package/tests/functional/localLibCreateLibBuildLibDeleteLib.test.js +1 -1
  45. package/tests/functional/localLibCreateLibBuildLibListPubDeleteLib.test.js +1 -1
  46. package/tests/functional/localLibCreateLibStoreRestoreDeleteLib.test.js +376 -0
@@ -0,0 +1,376 @@
1
+ // import { exec } from 'child_process';
2
+ const path = require('path');
3
+ const fs = require('fs');
4
+ const util = require('node:util');
5
+ const exec = util.promisify(require('node:child_process').exec);
6
+
7
+ const tasksConfigDir = path.resolve('../../..', 'tasks.config.json');
8
+ const tasksConfigData = fs.readFileSync(tasksConfigDir, { encoding: 'utf8' });
9
+ let tasksConfigJSON = JSON.parse(tasksConfigData);
10
+
11
+ const packageJSONDir = path.resolve('../../..', 'package.json');
12
+ const packageJSONData = fs.readFileSync(packageJSONDir, { encoding: 'utf8'});
13
+ let packageJSON = JSON.parse(packageJSONData);
14
+
15
+ let isLibraryBasedCL = tasksConfigJSON['libraryModeCL'];
16
+ const savedLibraryBased = isLibraryBasedCL;
17
+ const savedOrganization = packageJSON.organization;
18
+
19
+ const serverType = tasksConfigJSON['server-config'].serverType;
20
+ const serverDir = serverType === 'launchpad' ? 'Launchpad' : 'Constellation';
21
+ let compType = isLibraryBasedCL ? "library" : "original";
22
+
23
+
24
+ describe(`createLib createAll list createLibVersion(with copy) switchLibe list deleteLibVersion(all) : ${serverDir} - ${compType}` , () => {
25
+
26
+ beforeAll( async() => {
27
+
28
+ // make libraryBased
29
+ isLibraryBasedCL = true;
30
+ tasksConfigJSON['libraryModeCL'] = isLibraryBasedCL;
31
+ compType = isLibraryBasedCL ? "library" : "original";
32
+ fs.writeFileSync(tasksConfigDir, JSON.stringify(tasksConfigJSON, null, 4), { encoding: 'utf8' });
33
+
34
+ const storeDir = path.join(path.resolve('../../..'), 'store');
35
+ if (fs.existsSync(storeDir)) {
36
+ fs.rmSync(storeDir, { recursive: true, force: true, maxRetries: 2 });
37
+ }
38
+
39
+ // make organzation Pega
40
+ packageJSON.organization = "Pega";
41
+ fs.writeFileSync(packageJSONDir, JSON.stringify(packageJSON, null, 4), { encoding: 'utf8' });
42
+
43
+
44
+ const componentsDir = path.join(path.resolve('../../..'), 'src/components');
45
+ if (fs.existsSync(componentsDir)) {
46
+ fs.rmSync(componentsDir, { recursive: true, force: true, maxRetries: 2 });
47
+ fs.mkdirSync(componentsDir, { recursive: true });
48
+ }
49
+
50
+ await new Promise((r) => setTimeout(r, 2000));
51
+
52
+
53
+ });
54
+
55
+ afterAll( async() => {
56
+
57
+ //restore
58
+ isLibraryBasedCL = savedLibraryBased
59
+ tasksConfigJSON['libraryModeCL'] = isLibraryBasedCL;
60
+
61
+ fs.writeFileSync(tasksConfigDir, JSON.stringify(tasksConfigJSON, null, 4), { encoding: 'utf8' });
62
+
63
+ // return organzation
64
+ packageJSON.organization = savedOrganization;
65
+ fs.writeFileSync(packageJSONDir, JSON.stringify(packageJSON, null, 4), { encoding: 'utf8' });
66
+
67
+ const componentsDir = path.join(path.resolve('../../..'), 'src/components');
68
+ if (fs.existsSync(componentsDir)) {
69
+ fs.rmSync(componentsDir, { recursive: true, force: true, maxRetries: 2 });
70
+ fs.mkdirSync(componentsDir, { recursive: true });
71
+ }
72
+
73
+ const storeDir = path.join(path.resolve('../../..'), 'store');
74
+ if (fs.existsSync(storeDir)) {
75
+ fs.rmSync(storeDir, { recursive: true, force: true, maxRetries: 2 });
76
+ }
77
+
78
+ await new Promise((r) => setTimeout(r, 2000));
79
+
80
+ });
81
+
82
+
83
+ it(`npm run createLib - ${isLibraryBasedCL}`, async() => {
84
+
85
+ const script = `npm run createLib DXIL 0.0.1 N Original --prefix ../../..`;
86
+ const compConf = path.join("store", "Pega_DXIL","0.0.1", "componentsconfig.json");
87
+
88
+ const { stdout, stderr } = await exec(script);
89
+ expect(stdout).toContain('Library Pega_DXIL/0.0.1 has been created!');
90
+
91
+ const doesExist = fs.existsSync(path.resolve('../../..', compConf));
92
+
93
+ expect(doesExist).toBeTruthy();
94
+
95
+ }, 30000);
96
+
97
+ it('npm run createAll', async () => {
98
+ const script = `npm run createAll "My" 0.0.1 DXIL "" Pega Jest --prefix ../../..`;
99
+
100
+ const { stdout, stderr } = await exec(script);
101
+ // console.log(stdout);
102
+ expect(stdout).not.toBeNull();
103
+ expect(stderr).not.toBeNull();
104
+
105
+ // want message to contain component name
106
+ expect(stdout).toContain('created Pega_DXIL_My');
107
+
108
+ // don't want message with already exists
109
+ expect(stdout).not.toContain('already exists');
110
+
111
+ // check to see file exists
112
+
113
+ // pick one
114
+ const newFileName = 'Pega_DXIL_MyBoolean';
115
+
116
+ // const fileDir = path.resolve(`src/components/${newFileName}`);
117
+ const createFile = path.resolve(
118
+ '../../..',
119
+ path.join(`src/components/${newFileName}`, 'index.tsx')
120
+ );
121
+ const doesExist = fs.existsSync(createFile);
122
+ expect(doesExist).toBeTruthy();
123
+
124
+ // if (doesExist) {
125
+ // // remove it
126
+ // fs.rmdirSync(fileDir, { recursive: true });
127
+ // }
128
+ }, 90000);
129
+
130
+ it('npm run list', async () => {
131
+ const script = 'npm run list --prefix ../../..';
132
+ const { stdout, stderr } = await exec(script);
133
+
134
+ expect(stderr).not.toBeNull();
135
+
136
+ // console.log(stdout);
137
+ expect(stdout).not.toBeNull();
138
+ expect(stdout).toContain('Pega_DXIL_MyText');
139
+ expect(stdout).toContain('Pega_DXIL_MyTextInput');
140
+ expect(stdout).toContain('Pega_DXIL_MyParagraph');
141
+ expect(stdout).toContain('Pega_DXIL_MyEmail');
142
+ expect(stdout).toContain('Pega_DXIL_MyPhone');
143
+ expect(stdout).toContain('Pega_DXIL_MyURL');
144
+ expect(stdout).toContain('Pega_DXIL_MyInteger');
145
+ expect(stdout).toContain('Pega_DXIL_MyDecimal');
146
+ expect(stdout).toContain('Pega_DXIL_MyCurrency');
147
+ expect(stdout).toContain('Pega_DXIL_MyPercentage');
148
+ expect(stdout).toContain('Pega_DXIL_MyBoolean');
149
+ expect(stdout).toContain('Pega_DXIL_MyDate');
150
+ expect(stdout).toContain('Pega_DXIL_MyDateTime');
151
+ expect(stdout).toContain('Pega_DXIL_MyTimeOfDay');
152
+ expect(stdout).toContain('Pega_DXIL_MyPicklist');
153
+ expect(stdout).toContain('Pega_DXIL_MySearchbox');
154
+ expect(stdout).toContain('Pega_DXIL_MyRadiobuttons');
155
+ expect(stdout).toContain('Pega_DXIL_MyDetails');
156
+ expect(stdout).toContain('Pega_DXIL_MyTwoColumnDetails');
157
+ expect(stdout).toContain('Pega_DXIL_MyForm');
158
+ expect(stdout).toContain('Pega_DXIL_MyTwoColumnForm');
159
+ expect(stdout).toContain('Pega_DXIL_MyPage');
160
+ expect(stdout).toContain('Pega_DXIL_MyCaseWidget');
161
+ expect(stdout).toContain('Pega_DXIL_MyPageWidget');
162
+ expect(stdout).toContain('Pega_DXIL_MyPageCaseWidget');
163
+ // done();
164
+ }, 10000);
165
+
166
+ it('compare created to default', async () => {
167
+ const compList = [
168
+ 'Pega_DXIL_MyText',
169
+ 'Pega_DXIL_MyTextInput',
170
+ 'Pega_DXIL_MyParagraph',
171
+ 'Pega_DXIL_MyEmail',
172
+ 'Pega_DXIL_MyPhone',
173
+ 'Pega_DXIL_MyURL',
174
+ 'Pega_DXIL_MyInteger',
175
+ 'Pega_DXIL_MyDecimal',
176
+ 'Pega_DXIL_MyCurrency',
177
+ 'Pega_DXIL_MyPercentage',
178
+ 'Pega_DXIL_MyBoolean',
179
+ 'Pega_DXIL_MyDate',
180
+ 'Pega_DXIL_MyDateTime',
181
+ 'Pega_DXIL_MyTimeOfDay',
182
+ 'Pega_DXIL_MyPicklist',
183
+ 'Pega_DXIL_MySearchbox',
184
+ 'Pega_DXIL_MyRadiobuttons',
185
+ 'Pega_DXIL_MyDetails',
186
+ 'Pega_DXIL_MyTwoColumnDetails',
187
+ 'Pega_DXIL_MyForm',
188
+ 'Pega_DXIL_MyTwoColumnForm',
189
+ 'Pega_DXIL_MyPage',
190
+ 'Pega_DXIL_MyCaseWidget',
191
+ 'Pega_DXIL_MyPageWidget',
192
+ 'Pega_DXIL_MyPageCaseWidget'
193
+ ];
194
+
195
+ compList.forEach(component => {
196
+ const componentDir = path.resolve('../../..', `src/components/${component}`);
197
+ const assetDir = path.resolve(`tests/assets/${compType}/components/createAll/${serverDir}/${component}`);
198
+ // get files of directory
199
+ const componentFiles = fs.readdirSync(componentDir);
200
+
201
+ // get files of assets
202
+ // const assetFiles = fs.readdirSync(assetDir);
203
+
204
+ // compare
205
+ componentFiles.forEach(file => {
206
+ const componentFilePath = path.join(componentDir, file);
207
+ const assetFilePath = path.join(assetDir, file);
208
+
209
+ let componentFileData = fs.readFileSync(componentFilePath, { encoding: 'utf8' });
210
+ let assetFileData = fs.readFileSync(assetFilePath, { encoding: 'utf8' });
211
+
212
+ // so that we don't have to generate all new assets, change "version"
213
+ // from 0.0.1 to 0.0.1 for now
214
+ if (file === "config.json") {
215
+ expect(componentFileData).toContain("0.0.1");
216
+ // componentFileData = componentFileData.replace("0.0.1", "0.0.1");
217
+
218
+ // normalize
219
+ componentFileData = JSON.stringify(JSON.parse(componentFileData));
220
+ assetFileData = JSON.stringify(JSON.parse(assetFileData));
221
+ }
222
+
223
+ expect(componentFileData).toEqual(assetFileData);
224
+ });
225
+ });
226
+ }, 10000);
227
+
228
+
229
+
230
+
231
+
232
+ it(`npm run store all - ${isLibraryBasedCL}`, async() => {
233
+
234
+ const script = `npm run storeLibVersion Y --prefix ../../..`;
235
+ const { stdout, stderr } = await exec(script);
236
+
237
+ expect(stdout).toContain('Components Stored');
238
+
239
+ }, 30000);
240
+
241
+ it(`npm run delete all - ${isLibraryBasedCL}`, async() => {
242
+
243
+ const script = `npm run deleteAll Local Y --prefix ../../..`;
244
+ const { stdout, stderr } = await exec(script);
245
+
246
+ expect(stdout).toContain('Pega_DXIL_MyText is deleted from Local');
247
+ expect(stdout).toContain('Pega_DXIL_MyPageCaseWidget is deleted from Local');
248
+
249
+
250
+ }, 30000);
251
+
252
+
253
+ it(`npm run restore all - ${isLibraryBasedCL}`, async() => {
254
+
255
+ const script = `npm run restoreLibVersion Y --prefix ../../..`;
256
+ const { stdout, stderr } = await exec(script);
257
+
258
+ expect(stdout).toContain('Components restored');
259
+
260
+
261
+ }, 30000);
262
+
263
+
264
+ it('npm run list of restored', async () => {
265
+ const script = 'npm run list --prefix ../../..';
266
+ const { stdout, stderr } = await exec(script);
267
+
268
+ expect(stderr).not.toBeNull();
269
+
270
+ // console.log(stdout);
271
+ expect(stdout).not.toBeNull();
272
+ expect(stdout).toContain('Pega_DXIL_MyText');
273
+ expect(stdout).toContain('Pega_DXIL_MyTextInput');
274
+ expect(stdout).toContain('Pega_DXIL_MyParagraph');
275
+ expect(stdout).toContain('Pega_DXIL_MyEmail');
276
+ expect(stdout).toContain('Pega_DXIL_MyPhone');
277
+ expect(stdout).toContain('Pega_DXIL_MyURL');
278
+ expect(stdout).toContain('Pega_DXIL_MyInteger');
279
+ expect(stdout).toContain('Pega_DXIL_MyDecimal');
280
+ expect(stdout).toContain('Pega_DXIL_MyCurrency');
281
+ expect(stdout).toContain('Pega_DXIL_MyPercentage');
282
+ expect(stdout).toContain('Pega_DXIL_MyBoolean');
283
+ expect(stdout).toContain('Pega_DXIL_MyDate');
284
+ expect(stdout).toContain('Pega_DXIL_MyDateTime');
285
+ expect(stdout).toContain('Pega_DXIL_MyTimeOfDay');
286
+ expect(stdout).toContain('Pega_DXIL_MyPicklist');
287
+ expect(stdout).toContain('Pega_DXIL_MySearchbox');
288
+ expect(stdout).toContain('Pega_DXIL_MyRadiobuttons');
289
+ expect(stdout).toContain('Pega_DXIL_MyDetails');
290
+ expect(stdout).toContain('Pega_DXIL_MyTwoColumnDetails');
291
+ expect(stdout).toContain('Pega_DXIL_MyForm');
292
+ expect(stdout).toContain('Pega_DXIL_MyTwoColumnForm');
293
+ expect(stdout).toContain('Pega_DXIL_MyPage');
294
+ expect(stdout).toContain('Pega_DXIL_MyCaseWidget');
295
+ expect(stdout).toContain('Pega_DXIL_MyPageWidget');
296
+ expect(stdout).toContain('Pega_DXIL_MyPageCaseWidget');
297
+ // done();
298
+ }, 10000);
299
+
300
+ it('compare created to default', async () => {
301
+ const compList = [
302
+ 'Pega_DXIL_MyText',
303
+ 'Pega_DXIL_MyTextInput',
304
+ 'Pega_DXIL_MyParagraph',
305
+ 'Pega_DXIL_MyEmail',
306
+ 'Pega_DXIL_MyPhone',
307
+ 'Pega_DXIL_MyURL',
308
+ 'Pega_DXIL_MyInteger',
309
+ 'Pega_DXIL_MyDecimal',
310
+ 'Pega_DXIL_MyCurrency',
311
+ 'Pega_DXIL_MyPercentage',
312
+ 'Pega_DXIL_MyBoolean',
313
+ 'Pega_DXIL_MyDate',
314
+ 'Pega_DXIL_MyDateTime',
315
+ 'Pega_DXIL_MyTimeOfDay',
316
+ 'Pega_DXIL_MyPicklist',
317
+ 'Pega_DXIL_MySearchbox',
318
+ 'Pega_DXIL_MyRadiobuttons',
319
+ 'Pega_DXIL_MyDetails',
320
+ 'Pega_DXIL_MyTwoColumnDetails',
321
+ 'Pega_DXIL_MyForm',
322
+ 'Pega_DXIL_MyTwoColumnForm',
323
+ 'Pega_DXIL_MyPage',
324
+ 'Pega_DXIL_MyCaseWidget',
325
+ 'Pega_DXIL_MyPageWidget',
326
+ 'Pega_DXIL_MyPageCaseWidget'
327
+ ];
328
+
329
+ compList.forEach(component => {
330
+ const componentDir = path.resolve('../../..', `src/components/${component}`);
331
+ const assetDir = path.resolve(`tests/assets/${compType}/components/createAll/${serverDir}/${component}`);
332
+ // get files of directory
333
+ const componentFiles = fs.readdirSync(componentDir);
334
+
335
+ // get files of assets
336
+ // const assetFiles = fs.readdirSync(assetDir);
337
+
338
+ // compare
339
+ componentFiles.forEach(file => {
340
+ const componentFilePath = path.join(componentDir, file);
341
+ const assetFilePath = path.join(assetDir, file);
342
+
343
+ let componentFileData = fs.readFileSync(componentFilePath, { encoding: 'utf8' });
344
+ let assetFileData = fs.readFileSync(assetFilePath, { encoding: 'utf8' });
345
+
346
+ // so that we don't have to generate all new assets, change "version"
347
+ // from 0.0.2 to 0.0.1 for now
348
+ if (file === "config.json") {
349
+ expect(componentFileData).toContain("0.0.1");
350
+
351
+ // normalize
352
+ componentFileData = JSON.stringify(JSON.parse(componentFileData));
353
+ assetFileData = JSON.stringify(JSON.parse(assetFileData));
354
+ }
355
+
356
+ expect(componentFileData).toEqual(assetFileData);
357
+ });
358
+ });
359
+ }, 10000);
360
+
361
+
362
+
363
+
364
+
365
+
366
+ it(`npm run deleteLibVersion ALL - ${isLibraryBasedCL}`, async() => {
367
+
368
+ const script = `npm run deleteLibVersion Pega_DXIL ALL Y --prefix ../../..`;
369
+ const { stdout, stderr } = await exec(script);
370
+
371
+ expect(stdout).toContain('Pega_DXIL is deleted from Local.');
372
+
373
+ }, 30000);
374
+
375
+
376
+ });