@pega/custom-dx-components 0.242.35 → 0.242.37

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 (52) hide show
  1. package/package.json +2 -2
  2. package/src/cli.js +6 -0
  3. package/src/constants.js +1 -0
  4. package/src/tasks/build-lib/helper.js +0 -1
  5. package/src/tasks/create-lib/index.js +5 -3
  6. package/src/tasks/create-version/index.js +3 -1
  7. package/src/tasks/delete-lib/index.js +4 -1
  8. package/src/tasks/delete-version/index.js +3 -1
  9. package/src/tasks/export-archive/index.js +58 -41
  10. package/src/tasks/import-archive/index.js +5 -1
  11. package/src/tasks/import-comp/helper.js +2 -4
  12. package/src/tasks/import-comp/index.js +1 -2
  13. package/src/tasks/index.js +1 -0
  14. package/src/tasks/init/template/package.json.mustache +6 -5
  15. package/src/tasks/list/helper.js +8 -0
  16. package/src/tasks/list-lib/index.js +27 -11
  17. package/src/tasks/list-pub/index.js +18 -14
  18. package/src/tasks/move/helper.js +6 -3
  19. package/src/tasks/move/index.js +86 -17
  20. package/src/tasks/publish/helper.js +8 -5
  21. package/src/tasks/publish/index.js +4 -4
  22. package/src/tasks/publish-all/helper.js +16 -10
  23. package/src/tasks/quarantine/index.js +84 -0
  24. package/src/tasks/rename-lib/index.js +0 -1
  25. package/src/tasks/revert-webpack/index.js +0 -2
  26. package/src/tasks/set-perm/index.js +18 -2
  27. package/src/tasks/store/index.js +4 -1
  28. package/src/tasks/switch-lib/index.js +3 -1
  29. package/src/tasks/switch-version/index.js +3 -1
  30. package/src/util.js +50 -6
  31. package/tests/functional/localCreateAllListDeleteAll.test.js +56 -10
  32. package/tests/functional/localCreateBuildAllDeleteAll.test.js +56 -48
  33. package/tests/functional/localCreateBuildDelete.test.js +57 -10
  34. package/tests/functional/localCreateListDelete.test.js +55 -102
  35. package/tests/functional/localCreatePublishAllDeleteAll.test.js +68 -61
  36. package/tests/functional/localCreatePublishDelete.test.js +62 -21
  37. package/tests/functional/localCreateRenameDelete.test.js +55 -140
  38. package/tests/functional/localLibCreateLibAlreadyDeleteLib.test.js +118 -0
  39. package/tests/functional/localLibCreateLibBuildLibDeleteLib.test.js +241 -0
  40. package/tests/functional/localLibCreateLibBuildLibListPubDeleteLib.test.js +246 -0
  41. package/tests/functional/localLibCreateLibDeleteLib.test.js +161 -0
  42. package/tests/functional/localLibCreateLibExportImportLib.test.js +242 -0
  43. package/tests/functional/localLibCreateLibExportLib.test.js +219 -0
  44. package/tests/functional/localLibCreateLibImportCompDeleteLib.test.js +131 -0
  45. package/tests/functional/localLibCreateLibListDeleteLib.test.js +261 -0
  46. package/tests/functional/localLibCreateLibListMoveDeleteLib.test.js +236 -0
  47. package/tests/functional/localLibCreateLibListSwitchDeleteLib.test.js +237 -0
  48. package/tests/functional/localLibCreateLibPermDeleteLib.test.js +144 -0
  49. package/tests/functional/localLibCreateLibStatusDeleteLib.test.js +194 -0
  50. package/tests/functional/localLibCreateLibValidateDeleteLib.test.js +217 -0
  51. package/tests/functional/localLibCreateLibVersionDeleteLib.test.js +453 -0
  52. package/tests/functional/localPromoteRevertWP.test.js +83 -38
@@ -0,0 +1,194 @@
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 isLibraryBased = tasksConfigJSON['libraryMode'];
16
+ const savedLibraryBased = isLibraryBased;
17
+ const savedOrganization = packageJSON.organization;
18
+
19
+ const serverType = tasksConfigJSON['server-config'].serverType;
20
+ const serverDir = serverType === 'launchpad' ? 'Launchpad' : 'Constellation';
21
+ let compType = isLibraryBased ? "library" : "original";
22
+
23
+
24
+ describe(`createLib showStatus and deleteLib: ${serverDir} - ${compType}` , () => {
25
+
26
+ beforeAll( async() => {
27
+
28
+ // make libraryBased
29
+ isLibraryBased = true;
30
+ tasksConfigJSON['libraryMode'] = isLibraryBased;
31
+ compType = isLibraryBased ? "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
+ afterAll( async() => {
55
+
56
+ //restore
57
+ isLibraryBased = savedLibraryBased
58
+ tasksConfigJSON['libraryMode'] = isLibraryBased;
59
+
60
+ fs.writeFileSync(tasksConfigDir, JSON.stringify(tasksConfigJSON, null, 4), { encoding: 'utf8' });
61
+
62
+ // return organzation
63
+ packageJSON.organization = savedOrganization;
64
+ fs.writeFileSync(packageJSONDir, JSON.stringify(packageJSON, null, 4), { encoding: 'utf8' });
65
+
66
+ const componentsDir = path.join(path.resolve('../../..'), 'src/components');
67
+ if (fs.existsSync(componentsDir)) {
68
+ fs.rmSync(componentsDir, { recursive: true, force: true, maxRetries: 2 });
69
+ fs.mkdirSync(componentsDir, { recursive: true });
70
+ }
71
+
72
+ const storeDir = path.join(path.resolve('../../..'), 'store');
73
+ if (fs.existsSync(storeDir)) {
74
+ fs.rmSync(storeDir, { recursive: true, force: true, maxRetries: 2 });
75
+ }
76
+
77
+ await new Promise((r) => setTimeout(r, 2000));
78
+
79
+ });
80
+
81
+
82
+ it(`npm run createLib - ${isLibraryBased}`, async() => {
83
+
84
+ const script = `npm run createLib DXIL 0.0.1 N --prefix ../../..`;
85
+ const compConf = path.join("store", "Pega_DXIL","0.0.1-dev", "componentsconfig.json");
86
+
87
+ const { stdout, stderr } = await exec(script);
88
+ expect(stdout).toContain('Library Pega_DXIL/0.0.1-dev has been created!');
89
+
90
+ const doesExist = fs.existsSync(path.resolve('../../..', compConf));
91
+
92
+ expect(doesExist).toBeTruthy();
93
+
94
+ }, 30000);
95
+
96
+ it('npm run createAll', async () => {
97
+ const script = `npm run createAll "My" 0.0.1 DXIL "" Pega Jest --prefix ../../..`;
98
+
99
+ const { stdout, stderr } = await exec(script);
100
+ // console.log(stdout);
101
+ expect(stdout).not.toBeNull();
102
+ expect(stderr).not.toBeNull();
103
+
104
+ // want message to contain component name
105
+ expect(stdout).toContain('created Pega_DXIL_My');
106
+
107
+ // don't want message with already exists
108
+ expect(stdout).not.toContain('already exists');
109
+
110
+ // check to see file exists
111
+
112
+ // pick one
113
+ const newFileName = 'Pega_DXIL_MyBoolean';
114
+
115
+ // const fileDir = path.resolve(`src/components/${newFileName}`);
116
+ const createFile = path.resolve(
117
+ '../../..',
118
+ path.join(`src/components/${newFileName}`, 'index.tsx')
119
+ );
120
+ const doesExist = fs.existsSync(createFile);
121
+ expect(doesExist).toBeTruthy();
122
+
123
+ // if (doesExist) {
124
+ // // remove it
125
+ // fs.rmdirSync(fileDir, { recursive: true });
126
+ // }
127
+ }, 10000);
128
+
129
+ it('npm run list', async () => {
130
+ const script = 'npm run list --prefix ../../..';
131
+ const { stdout, stderr } = await exec(script);
132
+
133
+ expect(stderr).not.toBeNull();
134
+
135
+ // console.log(stdout);
136
+ expect(stdout).not.toBeNull();
137
+ expect(stdout).toContain('Pega_DXIL_MyText');
138
+ expect(stdout).toContain('Pega_DXIL_MyTextInput');
139
+ expect(stdout).toContain('Pega_DXIL_MyParagraph');
140
+ expect(stdout).toContain('Pega_DXIL_MyEmail');
141
+ expect(stdout).toContain('Pega_DXIL_MyPhone');
142
+ expect(stdout).toContain('Pega_DXIL_MyURL');
143
+ expect(stdout).toContain('Pega_DXIL_MyInteger');
144
+ expect(stdout).toContain('Pega_DXIL_MyDecimal');
145
+ expect(stdout).toContain('Pega_DXIL_MyCurrency');
146
+ expect(stdout).toContain('Pega_DXIL_MyPercentage');
147
+ expect(stdout).toContain('Pega_DXIL_MyBoolean');
148
+ expect(stdout).toContain('Pega_DXIL_MyDate');
149
+ expect(stdout).toContain('Pega_DXIL_MyDateTime');
150
+ expect(stdout).toContain('Pega_DXIL_MyTimeOfDay');
151
+ expect(stdout).toContain('Pega_DXIL_MyPicklist');
152
+ expect(stdout).toContain('Pega_DXIL_MySearchbox');
153
+ expect(stdout).toContain('Pega_DXIL_MyRadiobuttons');
154
+ expect(stdout).toContain('Pega_DXIL_MyDetails');
155
+ expect(stdout).toContain('Pega_DXIL_MyTwoColumnDetails');
156
+ expect(stdout).toContain('Pega_DXIL_MyForm');
157
+ expect(stdout).toContain('Pega_DXIL_MyTwoColumnForm');
158
+ expect(stdout).toContain('Pega_DXIL_MyPage');
159
+ expect(stdout).toContain('Pega_DXIL_MyCaseWidget');
160
+ expect(stdout).toContain('Pega_DXIL_MyPageWidget');
161
+ expect(stdout).toContain('Pega_DXIL_MyPageCaseWidget');
162
+ // done();
163
+ }, 10000);
164
+
165
+ it(`npm run deleteLib- ${isLibraryBased}`, async() => {
166
+
167
+ const script = `npm run showStatus --prefix ../../..`;
168
+ const { stdout, stderr } = await exec(script);
169
+
170
+ expect(stdout).toContain('Organization:');
171
+ expect(stdout).toContain('Pega');
172
+ expect(stdout).toContain('Library:');
173
+ expect(stdout).toContain('DXIL');
174
+ expect(stdout).toContain('Version:');
175
+ expect(stdout).toContain('0.0.1-dev');
176
+ expect(stdout).toContain('Permanent:');
177
+ expect(stdout).toContain('false');
178
+ expect(stdout).toContain('Component count:');
179
+ expect(stdout).toContain('26');
180
+
181
+ }, 30000);
182
+
183
+ it(`npm run deleteLib- ${isLibraryBased}`, async() => {
184
+
185
+ const script = `npm run deleteLib Pega_DXIL 0.0.1-dev --prefix ../../..`;
186
+ const { stdout, stderr } = await exec(script);
187
+
188
+ expect(stdout).toContain('Pega_DXIL is deleted from Local.');
189
+
190
+
191
+ }, 30000);
192
+
193
+
194
+ });
@@ -0,0 +1,217 @@
1
+ // import { exec } from 'child_process';
2
+ const path = require('path');
3
+ const fs = require('fs');
4
+ const util = require('node:util');
5
+ const error = require('console');
6
+ const exec = util.promisify(require('node:child_process').exec);
7
+
8
+ const tasksConfigDir = path.resolve('../../..', 'tasks.config.json');
9
+ const tasksConfigData = fs.readFileSync(tasksConfigDir, { encoding: 'utf8' });
10
+ let tasksConfigJSON = JSON.parse(tasksConfigData);
11
+
12
+ const packageJSONDir = path.resolve('../../..', 'package.json');
13
+ const packageJSONData = fs.readFileSync(packageJSONDir, { encoding: 'utf8'});
14
+ let packageJSON = JSON.parse(packageJSONData);
15
+
16
+ let isLibraryBased = tasksConfigJSON['libraryMode'];
17
+ const savedLibraryBased = isLibraryBased;
18
+ const savedOrganization = packageJSON.organization;
19
+
20
+ const serverType = tasksConfigJSON['server-config'].serverType;
21
+ const serverDir = serverType === 'launchpad' ? 'Launchpad' : 'Constellation';
22
+ let compType = isLibraryBased ? "library" : "original";
23
+
24
+
25
+ describe(`createLib create validate deleteLib: ${serverDir} - ${compType}` , () => {
26
+
27
+ beforeAll( async() => {
28
+
29
+ // make libraryBased
30
+ isLibraryBased = true;
31
+ tasksConfigJSON['libraryMode'] = isLibraryBased;
32
+ compType = isLibraryBased ? "library" : "original";
33
+ fs.writeFileSync(tasksConfigDir, JSON.stringify(tasksConfigJSON, null, 4), { encoding: 'utf8' });
34
+
35
+ const storeDir = path.join(path.resolve('../../..'), 'store');
36
+ if (fs.existsSync(storeDir)) {
37
+ fs.rmSync(storeDir, { recursive: true, force: true, maxRetries: 2 });
38
+ }
39
+
40
+ // make organzation Pega
41
+ packageJSON.organization = "Pega";
42
+ fs.writeFileSync(packageJSONDir, JSON.stringify(packageJSON, null, 4), { encoding: 'utf8' });
43
+
44
+
45
+ const componentsDir = path.join(path.resolve('../../..'), 'src/components');
46
+ if (fs.existsSync(componentsDir)) {
47
+ fs.rmSync(componentsDir, { recursive: true, force: true, maxRetries: 2 });
48
+ fs.mkdirSync(componentsDir, { recursive: true });
49
+ }
50
+
51
+ await new Promise((r) => setTimeout(r, 2000));
52
+
53
+
54
+ });
55
+
56
+ afterAll( async() => {
57
+
58
+ //restore
59
+ isLibraryBased = savedLibraryBased
60
+ tasksConfigJSON['libraryMode'] = isLibraryBased;
61
+
62
+ fs.writeFileSync(tasksConfigDir, JSON.stringify(tasksConfigJSON, null, 4), { encoding: 'utf8' });
63
+
64
+ // return organzation
65
+ packageJSON.organization = savedOrganization;
66
+ fs.writeFileSync(packageJSONDir, JSON.stringify(packageJSON, null, 4), { encoding: 'utf8' });
67
+
68
+ const componentsDir = path.join(path.resolve('../../..'), 'src/components');
69
+ if (fs.existsSync(componentsDir)) {
70
+ fs.rmSync(componentsDir, { recursive: true, force: true, maxRetries: 2 });
71
+ fs.mkdirSync(componentsDir, { recursive: true });
72
+ }
73
+
74
+ await new Promise((r) => setTimeout(r, 2000));
75
+
76
+ });
77
+
78
+
79
+ it(`npm run createLib - ${isLibraryBased}`, async() => {
80
+
81
+ const script = `npm run createLib DXIL 0.0.1 N --prefix ../../..`;
82
+ const compConf = path.join("store", "Pega_DXIL","0.0.1-dev", "componentsconfig.json");
83
+
84
+ const { stdout, stderr } = await exec(script);
85
+ expect(stdout).toContain('Library Pega_DXIL/0.0.1-dev has been created!');
86
+
87
+ const doesExist = fs.existsSync(path.resolve('../../..', compConf));
88
+
89
+ expect(doesExist).toBeTruthy();
90
+
91
+ }, 30000);
92
+
93
+ it('npm run create Local text', async () => {
94
+ const fileName = 'MyTestText';
95
+ const newFileName = `Pega_DXIL_${fileName}`;
96
+ const script = `npm run create Field Text ${fileName} "My Test Text" 0.0.1 DXIL "" "My Test Text Description" Pega --prefix ../../..`;
97
+
98
+ const { stdout, stderr } = await exec(script);
99
+ // console.log(stdout);
100
+ expect(stdout).not.toBeNull();
101
+ expect(stderr).not.toBeNull();
102
+
103
+ // want message to contain component name
104
+ expect(stdout).toContain(newFileName);
105
+
106
+ // don't want message with already exists
107
+ expect(stdout).not.toContain('already exists');
108
+
109
+ // check to see file exists
110
+
111
+ // const fileDir = path.resolve(`src/components/${newFileName}`);
112
+ const createFile = path.resolve(
113
+ '../../..',
114
+ path.join(`src/components/${newFileName}`, 'index.tsx')
115
+ );
116
+ const doesExist = fs.existsSync(createFile);
117
+ expect(doesExist).toBeTruthy();
118
+
119
+ // if (doesExist) {
120
+ // // remove it
121
+ // fs.rmdirSync(fileDir, { recursive: true });
122
+ // }
123
+ }, 10000);
124
+
125
+ it('npm run create Local page', async () => {
126
+ const fileName = 'MyTestPage';
127
+ const newFileName = `Pega_DXIL_${fileName}`;
128
+ const script = `npm run create Widget PAGE ${fileName} "My Test Page" 0.0.1 DXIL "" "My Test Page Description" Pega --prefix ../../..`;
129
+
130
+ const { stdout, stderr } = await exec(script);
131
+ // console.log(stdout);
132
+ expect(stdout).not.toBeNull();
133
+ expect(stderr).not.toBeNull();
134
+
135
+ // want message to contain component name
136
+ expect(stdout).toContain(newFileName);
137
+
138
+ // don't want message with already exists
139
+ expect(stdout).not.toContain('already exists');
140
+
141
+ // check to see file exists
142
+
143
+ // const fileDir = path.resolve(`src/components/${newFileName}`);
144
+ const createFile = path.resolve(
145
+ '../../..',
146
+ path.join(`src/components/${newFileName}`, 'index.tsx')
147
+ );
148
+ const doesExist = fs.existsSync(createFile);
149
+ expect(doesExist).toBeTruthy();
150
+
151
+ // if (doesExist) {
152
+ // // remove it
153
+ // fs.rmdirSync(fileDir, { recursive: true });
154
+ // }
155
+ }, 10000);
156
+
157
+ it('npm run create Local details', async () => {
158
+ const fileName = 'MyTestDetails';
159
+ const newFileName = `Pega_DXIL_${fileName}`;
160
+ const script = `npm run create Template DETAILS ${fileName} "My Test Details" 0.0.1 DXIL "" "My Test Details Description" Pega --prefix ../../..`;
161
+
162
+ const { stdout, stderr } = await exec(script);
163
+ // console.log(stdout);
164
+ expect(stdout).not.toBeNull();
165
+ expect(stderr).not.toBeNull();
166
+
167
+ // want message to contain component name
168
+ expect(stdout).toContain(newFileName);
169
+
170
+ // don't want message with already exists
171
+ expect(stdout).not.toContain('already exists');
172
+
173
+ // check to see file exists
174
+
175
+ // const fileDir = path.resolve(`src/components/${newFileName}`);
176
+ const createFile = path.resolve(
177
+ '../../..',
178
+ path.join(`src/components/${newFileName}`, 'index.tsx')
179
+ );
180
+ const doesExist = fs.existsSync(createFile);
181
+ expect(doesExist).toBeTruthy();
182
+
183
+ // if (doesExist) {
184
+ // // remove it
185
+ // fs.rmdirSync(fileDir, { recursive: true });
186
+ // }
187
+ }, 10000);
188
+
189
+ it(`npm run valdidateAll - ${isLibraryBased}`, async() => {
190
+
191
+ const script = `npm run validateAll --prefix ../../..`;
192
+ const { stdout, stderr } = await exec(script);
193
+
194
+ expect(stdout).toContain('Pega_DXIL_MyTestText schema is valid');
195
+ expect(stdout).toContain('Pega_DXIL_MyTestPage schema is valid');
196
+ expect(stdout).toContain('Pega_DXIL_MyTestDetails schema is valid');
197
+
198
+ expect(stdout).toContain('Validation compile...');
199
+ expect(stdout).toContain('Done.');
200
+
201
+ }, 200000);
202
+
203
+
204
+ it(`npm run deleteLib - ${isLibraryBased}`, async() => {
205
+
206
+ const script = `npm run deleteLib Pega_DXIL 0.0.1-dev --prefix ../../..`;
207
+ const { stdout, stderr } = await exec(script);
208
+ expect(stdout).toContain('Pega_DXIL is deleted from Local.');
209
+
210
+ }, 30000);
211
+
212
+
213
+
214
+
215
+
216
+
217
+ });