mcdev 7.0.3 → 7.0.4

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 (185) hide show
  1. package/.github/ISSUE_TEMPLATE/bug.yml +1 -0
  2. package/.github/PULL_REQUEST_TEMPLATE/pr_template_release.md +1 -0
  3. package/.github/workflows/code-test.yml +48 -0
  4. package/.husky/pre-commit +1 -1
  5. package/@types/lib/Builder.d.ts +13 -13
  6. package/@types/lib/Builder.d.ts.map +1 -1
  7. package/@types/lib/Deployer.d.ts +16 -16
  8. package/@types/lib/Deployer.d.ts.map +1 -1
  9. package/@types/lib/Retriever.d.ts +15 -15
  10. package/@types/lib/Retriever.d.ts.map +1 -1
  11. package/@types/lib/cli.d.ts +1 -1
  12. package/@types/lib/cli.d.ts.map +1 -1
  13. package/@types/lib/index.d.ts +34 -34
  14. package/@types/lib/index.d.ts.map +1 -1
  15. package/@types/lib/metadataTypes/Asset.d.ts +18 -43
  16. package/@types/lib/metadataTypes/Asset.d.ts.map +1 -1
  17. package/@types/lib/metadataTypes/AttributeGroup.d.ts +3 -8
  18. package/@types/lib/metadataTypes/AttributeGroup.d.ts.map +1 -1
  19. package/@types/lib/metadataTypes/AttributeSet.d.ts +5 -21
  20. package/@types/lib/metadataTypes/AttributeSet.d.ts.map +1 -1
  21. package/@types/lib/metadataTypes/Automation.d.ts +36 -49
  22. package/@types/lib/metadataTypes/Automation.d.ts.map +1 -1
  23. package/@types/lib/metadataTypes/Campaign.d.ts +11 -18
  24. package/@types/lib/metadataTypes/Campaign.d.ts.map +1 -1
  25. package/@types/lib/metadataTypes/ContentArea.d.ts +12 -31
  26. package/@types/lib/metadataTypes/ContentArea.d.ts.map +1 -1
  27. package/@types/lib/metadataTypes/DataExtension.d.ts +23 -31
  28. package/@types/lib/metadataTypes/DataExtension.d.ts.map +1 -1
  29. package/@types/lib/metadataTypes/DataExtensionField.d.ts +12 -18
  30. package/@types/lib/metadataTypes/DataExtensionField.d.ts.map +1 -1
  31. package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts +11 -11
  32. package/@types/lib/metadataTypes/DataExtensionTemplate.d.ts.map +1 -1
  33. package/@types/lib/metadataTypes/DataExtract.d.ts +12 -28
  34. package/@types/lib/metadataTypes/DataExtract.d.ts.map +1 -1
  35. package/@types/lib/metadataTypes/DataExtractType.d.ts +10 -10
  36. package/@types/lib/metadataTypes/DataExtractType.d.ts.map +1 -1
  37. package/@types/lib/metadataTypes/DeliveryProfile.d.ts +10 -10
  38. package/@types/lib/metadataTypes/DeliveryProfile.d.ts.map +1 -1
  39. package/@types/lib/metadataTypes/Discovery.d.ts +10 -10
  40. package/@types/lib/metadataTypes/Discovery.d.ts.map +1 -1
  41. package/@types/lib/metadataTypes/Email.d.ts +13 -34
  42. package/@types/lib/metadataTypes/Email.d.ts.map +1 -1
  43. package/@types/lib/metadataTypes/EmailSend.d.ts +10 -10
  44. package/@types/lib/metadataTypes/EmailSend.d.ts.map +1 -1
  45. package/@types/lib/metadataTypes/Event.d.ts +19 -16
  46. package/@types/lib/metadataTypes/Event.d.ts.map +1 -1
  47. package/@types/lib/metadataTypes/FileLocation.d.ts +10 -10
  48. package/@types/lib/metadataTypes/FileLocation.d.ts.map +1 -1
  49. package/@types/lib/metadataTypes/FileTransfer.d.ts +11 -18
  50. package/@types/lib/metadataTypes/FileTransfer.d.ts.map +1 -1
  51. package/@types/lib/metadataTypes/Filter.d.ts +10 -10
  52. package/@types/lib/metadataTypes/Filter.d.ts.map +1 -1
  53. package/@types/lib/metadataTypes/Folder.d.ts +10 -10
  54. package/@types/lib/metadataTypes/Folder.d.ts.map +1 -1
  55. package/@types/lib/metadataTypes/ImportFile.d.ts +11 -15
  56. package/@types/lib/metadataTypes/ImportFile.d.ts.map +1 -1
  57. package/@types/lib/metadataTypes/Journey.d.ts +13 -32
  58. package/@types/lib/metadataTypes/Journey.d.ts.map +1 -1
  59. package/@types/lib/metadataTypes/List.d.ts +12 -12
  60. package/@types/lib/metadataTypes/List.d.ts.map +1 -1
  61. package/@types/lib/metadataTypes/MetadataType.d.ts +23 -23
  62. package/@types/lib/metadataTypes/MetadataType.d.ts.map +1 -1
  63. package/@types/lib/metadataTypes/MobileCode.d.ts +11 -20
  64. package/@types/lib/metadataTypes/MobileCode.d.ts.map +1 -1
  65. package/@types/lib/metadataTypes/MobileKeyword.d.ts +14 -14
  66. package/@types/lib/metadataTypes/MobileKeyword.d.ts.map +1 -1
  67. package/@types/lib/metadataTypes/MobileMessage.d.ts +14 -42
  68. package/@types/lib/metadataTypes/MobileMessage.d.ts.map +1 -1
  69. package/@types/lib/metadataTypes/Query.d.ts +12 -12
  70. package/@types/lib/metadataTypes/Query.d.ts.map +1 -1
  71. package/@types/lib/metadataTypes/Role.d.ts +11 -11
  72. package/@types/lib/metadataTypes/Role.d.ts.map +1 -1
  73. package/@types/lib/metadataTypes/Script.d.ts +15 -24
  74. package/@types/lib/metadataTypes/Script.d.ts.map +1 -1
  75. package/@types/lib/metadataTypes/SendClassification.d.ts +10 -10
  76. package/@types/lib/metadataTypes/SendClassification.d.ts.map +1 -1
  77. package/@types/lib/metadataTypes/SenderProfile.d.ts +11 -19
  78. package/@types/lib/metadataTypes/SenderProfile.d.ts.map +1 -1
  79. package/@types/lib/metadataTypes/TransactionalEmail.d.ts +12 -12
  80. package/@types/lib/metadataTypes/TransactionalEmail.d.ts.map +1 -1
  81. package/@types/lib/metadataTypes/TransactionalMessage.d.ts +11 -32
  82. package/@types/lib/metadataTypes/TransactionalMessage.d.ts.map +1 -1
  83. package/@types/lib/metadataTypes/TransactionalPush.d.ts +12 -21
  84. package/@types/lib/metadataTypes/TransactionalPush.d.ts.map +1 -1
  85. package/@types/lib/metadataTypes/TransactionalSMS.d.ts +12 -18
  86. package/@types/lib/metadataTypes/TransactionalSMS.d.ts.map +1 -1
  87. package/@types/lib/metadataTypes/TriggeredSend.d.ts +13 -18
  88. package/@types/lib/metadataTypes/TriggeredSend.d.ts.map +1 -1
  89. package/@types/lib/metadataTypes/User.d.ts +22 -40
  90. package/@types/lib/metadataTypes/User.d.ts.map +1 -1
  91. package/@types/lib/metadataTypes/Verification.d.ts +13 -13
  92. package/@types/lib/metadataTypes/Verification.d.ts.map +1 -1
  93. package/@types/lib/metadataTypes/definitions/Event.definition.d.ts +7 -1
  94. package/@types/lib/util/auth.d.ts +19 -18
  95. package/@types/lib/util/auth.d.ts.map +1 -1
  96. package/@types/lib/util/businessUnit.d.ts +17 -17
  97. package/@types/lib/util/businessUnit.d.ts.map +1 -1
  98. package/@types/lib/util/cache.d.ts +24 -32
  99. package/@types/lib/util/cache.d.ts.map +1 -1
  100. package/@types/lib/util/cli.d.ts +27 -27
  101. package/@types/lib/util/cli.d.ts.map +1 -1
  102. package/@types/lib/util/config.d.ts +20 -20
  103. package/@types/lib/util/config.d.ts.map +1 -1
  104. package/@types/lib/util/devops.d.ts +21 -21
  105. package/@types/lib/util/devops.d.ts.map +1 -1
  106. package/@types/lib/util/file.d.ts +179 -18
  107. package/@types/lib/util/file.d.ts.map +1 -1
  108. package/@types/lib/util/init.config.d.ts +19 -19
  109. package/@types/lib/util/init.config.d.ts.map +1 -1
  110. package/@types/lib/util/init.d.ts +20 -20
  111. package/@types/lib/util/init.d.ts.map +1 -1
  112. package/@types/lib/util/init.git.d.ts +2 -2
  113. package/@types/lib/util/init.git.d.ts.map +1 -1
  114. package/@types/lib/util/init.npm.d.ts +2 -2
  115. package/@types/lib/util/init.npm.d.ts.map +1 -1
  116. package/@types/lib/util/replaceContentBlockReference.d.ts +28 -28
  117. package/@types/lib/util/replaceContentBlockReference.d.ts.map +1 -1
  118. package/@types/lib/util/util.d.ts +33 -37
  119. package/@types/lib/util/util.d.ts.map +1 -1
  120. package/@types/types/mcdev.d.d.ts +73 -52
  121. package/@types/types/mcdev.d.d.ts.map +1 -1
  122. package/eslint.config.js +0 -1
  123. package/lib/Deployer.js +1 -1
  124. package/lib/Retriever.js +4 -1
  125. package/lib/cli.js +209 -278
  126. package/lib/index.js +89 -43
  127. package/lib/metadataTypes/Asset.js +1 -0
  128. package/lib/metadataTypes/DataExtension.js +3 -3
  129. package/lib/metadataTypes/DataExtensionField.js +0 -1
  130. package/lib/metadataTypes/Event.js +199 -35
  131. package/lib/metadataTypes/Folder.js +1 -1
  132. package/lib/metadataTypes/Journey.js +10 -2
  133. package/lib/metadataTypes/MetadataType.js +3 -4
  134. package/lib/metadataTypes/Role.js +9 -7
  135. package/lib/metadataTypes/SenderProfile.js +1 -0
  136. package/lib/metadataTypes/TransactionalEmail.js +2 -2
  137. package/lib/metadataTypes/TriggeredSend.js +1 -0
  138. package/lib/metadataTypes/User.js +31 -27
  139. package/lib/metadataTypes/definitions/Event.definition.js +8 -8
  140. package/lib/util/auth.js +0 -1
  141. package/lib/util/cli.js +0 -1
  142. package/lib/util/devops.js +2 -3
  143. package/lib/util/file.js +7 -10
  144. package/lib/util/replaceContentBlockReference.js +3 -1
  145. package/package.json +11 -9
  146. package/test/general.test.js +20 -2
  147. package/test/mockRoot/.mcdevrc.json +1 -1
  148. package/test/mockRoot/deploy/testInstance/testBU/event/testExisting_event.event-meta.json +201 -0
  149. package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withExistingDE.event-meta.json +232 -0
  150. package/test/mockRoot/deploy/testInstance/testBU/event/testNew_event_withSchema.event-meta.json +193 -0
  151. package/test/resources/9999999/dataExtension/retrieve-CustomerKey=testNew_event_withSchema-response.xml +50 -0
  152. package/test/resources/9999999/dataExtension/retrieve-createdViaEvent-response.xml +50 -0
  153. package/test/resources/9999999/dataExtension/retrieve-response.xml +48 -0
  154. package/test/resources/9999999/dataExtension/retrieve_event_withSchema-expected.json +219 -0
  155. package/test/resources/9999999/dataExtension/update-afterCreatedViaEvent-response.xml +55 -0
  156. package/test/resources/9999999/dataExtension/update-callout-afterCreatedViaEvent-expected.xml +1 -0
  157. package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKey=testNew_event_withSchema-response.xml +461 -0
  158. package/test/resources/9999999/dataExtensionField/retrieve-DataExtension.CustomerKeyINtestExisting_dataExtension,testNew_dataExtension-response.xml +133 -0
  159. package/test/resources/9999999/dataExtensionField/retrieve-response.xml +870 -0
  160. package/test/resources/9999999/event/build-expected.json +228 -0
  161. package/test/resources/9999999/event/get-expected.json +235 -0
  162. package/test/resources/9999999/event/post_withExistingDE-callout-expected.json +17 -0
  163. package/test/resources/9999999/event/post_withExistingDE-expected.json +21 -0
  164. package/test/resources/9999999/event/post_withSchema-callout-expected.json +196 -0
  165. package/test/resources/9999999/event/post_withSchema-expected.json +232 -0
  166. package/test/resources/9999999/event/put-callout-expected.json +202 -0
  167. package/test/resources/9999999/event/put-expected.json +233 -0
  168. package/test/resources/9999999/event/template-expected.json +228 -0
  169. package/test/resources/9999999/interaction/v1/eventDefinitions/get-response.json +252 -2
  170. package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/delete-response.txt +0 -0
  171. package/test/resources/9999999/interaction/v1/eventDefinitions/key_testExisting_event/put-response.json +241 -0
  172. package/test/resources/9999999/interaction/v1/eventDefinitions/post_withExistingDE-response.json +26 -0
  173. package/test/resources/9999999/interaction/v1/eventDefinitions/post_withSchema-response.json +241 -0
  174. package/test/resources/9999999/interaction/v1/interactions/0175b971-71a3-4d8e-98ac-48121f3fbf4f/delete-response.txt +1 -0
  175. package/test/type.asset.test.js +0 -3
  176. package/test/type.automation.test.js +1 -1
  177. package/test/type.dataExtension.test.js +4 -4
  178. package/test/type.event.test.js +287 -6
  179. package/test/type.journey.test.js +13 -0
  180. package/test/type.user.test.js +1 -1
  181. package/test/utils.js +18 -6
  182. package/tsconfig.json +6 -1
  183. package/{jsconfig.json → tsconfig.npmScripts.json} +1 -1
  184. package/tsconfig.precommit.json +26 -0
  185. package/types/mcdev.d.js +12 -13
@@ -0,0 +1,241 @@
1
+ {
2
+ "id": "b9cb2b05-738d-4f49-b53d-28e3bbe52d12",
3
+ "type": "APIEvent",
4
+ "name": "testNew_event_withSchema",
5
+ "description": "created on deploy",
6
+ "createdDate": "0001-01-01T00:00:00",
7
+ "createdBy": 0,
8
+ "modifiedDate": "0001-01-01T00:00:00",
9
+ "modifiedBy": 0,
10
+ "mode": "Production",
11
+ "eventDefinitionKey": "testNew_event_withSchema",
12
+ "dataExtensionId": "4342972c-a43c-ef11-a5c8-5cba2c702db8",
13
+ "dataExtensionName": "testNew_event_withSchema - 2024-07-08T014814443",
14
+ "schema": {
15
+ "id": "4342972c-a43c-ef11-a5c8-5cba2c702db8",
16
+ "name": "testNew_event_withSchema - 2024-07-08T014814443",
17
+ "fields": [
18
+ {
19
+ "name": "ContactId",
20
+ "dataType": "Text",
21
+ "maxLength": "18",
22
+ "isNullable": false,
23
+ "isPrimaryKey": true,
24
+ "isDevicePreference": false
25
+ },
26
+ {
27
+ "name": "Type",
28
+ "dataType": "Text",
29
+ "maxLength": "50",
30
+ "isNullable": false,
31
+ "isPrimaryKey": false,
32
+ "isDevicePreference": false
33
+ },
34
+ {
35
+ "name": "Status",
36
+ "dataType": "Text",
37
+ "maxLength": "50",
38
+ "isNullable": false,
39
+ "isPrimaryKey": true,
40
+ "isDevicePreference": false
41
+ },
42
+ {
43
+ "name": "Respondent",
44
+ "dataType": "Text",
45
+ "maxLength": "256",
46
+ "isNullable": true,
47
+ "isPrimaryKey": false,
48
+ "isDevicePreference": false
49
+ },
50
+ {
51
+ "name": "FirstName",
52
+ "dataType": "Text",
53
+ "maxLength": "256",
54
+ "isNullable": true,
55
+ "isPrimaryKey": false,
56
+ "isDevicePreference": false
57
+ },
58
+ {
59
+ "name": "LastName",
60
+ "dataType": "Text",
61
+ "maxLength": "256",
62
+ "isNullable": true,
63
+ "isPrimaryKey": false,
64
+ "isDevicePreference": false
65
+ },
66
+ {
67
+ "name": "PreferredLanguage",
68
+ "dataType": "Text",
69
+ "maxLength": "50",
70
+ "isNullable": true,
71
+ "isPrimaryKey": false,
72
+ "isDevicePreference": false
73
+ },
74
+ {
75
+ "name": "TouchPoint",
76
+ "dataType": "Text",
77
+ "maxLength": "256",
78
+ "isNullable": true,
79
+ "isPrimaryKey": false,
80
+ "isDevicePreference": false
81
+ },
82
+ {
83
+ "name": "Datestamp",
84
+ "dataType": "Date",
85
+ "isNullable": true,
86
+ "defaultValue": "GetDate()",
87
+ "isPrimaryKey": false,
88
+ "isDevicePreference": false
89
+ },
90
+ {
91
+ "name": "StartDate",
92
+ "dataType": "Date",
93
+ "isNullable": true,
94
+ "defaultValue": "",
95
+ "isPrimaryKey": false,
96
+ "isDevicePreference": false
97
+ },
98
+ {
99
+ "name": "EndDate",
100
+ "dataType": "Date",
101
+ "isNullable": true,
102
+ "isPrimaryKey": false,
103
+ "isDevicePreference": false
104
+ },
105
+ {
106
+ "name": "BroadcastedNotificationDate",
107
+ "dataType": "Date",
108
+ "isNullable": true,
109
+ "defaultValue": "",
110
+ "isPrimaryKey": false,
111
+ "isDevicePreference": false
112
+ },
113
+ {
114
+ "name": "FirstReminderDate",
115
+ "dataType": "Date",
116
+ "isNullable": true,
117
+ "isPrimaryKey": false,
118
+ "isDevicePreference": false
119
+ },
120
+ {
121
+ "name": "SecondReminderDate",
122
+ "dataType": "Date",
123
+ "isNullable": true,
124
+ "isPrimaryKey": false,
125
+ "isDevicePreference": false
126
+ },
127
+ {
128
+ "name": "Title",
129
+ "dataType": "Text",
130
+ "maxLength": "256",
131
+ "isNullable": true,
132
+ "isPrimaryKey": false,
133
+ "isDevicePreference": false
134
+ },
135
+ {
136
+ "name": "DisplayName",
137
+ "dataType": "Text",
138
+ "maxLength": "256",
139
+ "isNullable": true,
140
+ "isPrimaryKey": false,
141
+ "isDevicePreference": false
142
+ },
143
+ {
144
+ "name": "Text",
145
+ "dataType": "Text",
146
+ "maxLength": "256",
147
+ "isNullable": true,
148
+ "isPrimaryKey": false,
149
+ "isDevicePreference": false
150
+ },
151
+ {
152
+ "name": "Description",
153
+ "dataType": "Text",
154
+ "maxLength": "4000",
155
+ "isNullable": true,
156
+ "isPrimaryKey": false,
157
+ "isDevicePreference": false
158
+ },
159
+ {
160
+ "name": "Channel",
161
+ "dataType": "Text",
162
+ "maxLength": "256",
163
+ "isNullable": true,
164
+ "isPrimaryKey": false,
165
+ "isDevicePreference": false
166
+ },
167
+ {
168
+ "name": "FirstReminderChannel",
169
+ "dataType": "Text",
170
+ "maxLength": "256",
171
+ "isNullable": true,
172
+ "isPrimaryKey": false,
173
+ "isDevicePreference": false
174
+ },
175
+ {
176
+ "name": "SecondReminderChannel",
177
+ "dataType": "Text",
178
+ "maxLength": "256",
179
+ "isNullable": true,
180
+ "isPrimaryKey": false,
181
+ "isDevicePreference": false
182
+ },
183
+ {
184
+ "name": "Email",
185
+ "dataType": "Email",
186
+ "maxLength": "",
187
+ "isNullable": true,
188
+ "isPrimaryKey": false,
189
+ "isDevicePreference": false
190
+ },
191
+ {
192
+ "name": "ArticleOrTaskID",
193
+ "dataType": "Text",
194
+ "maxLength": "18",
195
+ "isNullable": false,
196
+ "isPrimaryKey": true,
197
+ "isDevicePreference": false
198
+ },
199
+ {
200
+ "name": "Points",
201
+ "dataType": "Number",
202
+ "maxLength": "",
203
+ "isNullable": true,
204
+ "isPrimaryKey": false,
205
+ "isDevicePreference": false
206
+ },
207
+ {
208
+ "name": "TaskType",
209
+ "dataType": "Text",
210
+ "maxLength": "255",
211
+ "isNullable": true,
212
+ "isPrimaryKey": false,
213
+ "isDevicePreference": false
214
+ },
215
+ {
216
+ "name": "TaskArea",
217
+ "dataType": "Text",
218
+ "maxLength": "255",
219
+ "isNullable": true,
220
+ "isPrimaryKey": false,
221
+ "isDevicePreference": false
222
+ }
223
+ ],
224
+ "sendableCustomObjectField": "ContactId",
225
+ "sendableSubscriberField": "_SubscriberKey",
226
+ "isPlatformObject": false
227
+ },
228
+ "filterDefinitionId": "00000000-0000-0000-0000-000000000000",
229
+ "arguments": {
230
+ "serializedObjectType": 11,
231
+ "eventDefinitionKey": "testNew_event_withSchema",
232
+ "eventDefinitionId": "b9cb2b05-738d-4f49-b53d-28e3bbe52d12",
233
+ "dataExtensionId": "00000000-0000-0000-0000-000000000000"
234
+ },
235
+ "metaData": {},
236
+ "interactionCount": 0,
237
+ "isVisibleInPicker": true,
238
+ "category": "Event",
239
+ "publishedInteractionCount": 0,
240
+ "automationId": "00000000-0000-0000-0000-000000000000"
241
+ }
@@ -492,7 +492,6 @@ describe('type: asset', () => {
492
492
  assert.equal(process.exitCode, 0, 'resolveId should not have thrown an error');
493
493
  assert.deepEqual(
494
494
  resolveIdJson,
495
- // @ts-expect-error bad typing of assert.deepEqual
496
495
  await testUtils.getExpectedJson('9999999', 'asset', 'resolveId-1295064-noPath'),
497
496
  'returned response was not equal expected'
498
497
  );
@@ -521,7 +520,6 @@ describe('type: asset', () => {
521
520
  assert.equal(process.exitCode, 0, 'resolveId should not have thrown an error');
522
521
  assert.deepEqual(
523
522
  resolveIdJson,
524
- // @ts-expect-error bad typing of assert.deepEqual
525
523
  await testUtils.getExpectedJson('9999999', 'asset', 'resolveId-1295064-withPath'),
526
524
  'returned response was not equal expected'
527
525
  );
@@ -536,7 +534,6 @@ describe('type: asset', () => {
536
534
  // IMPORTANT: this will throw a false "TEST-ERROR" but our testing framework currently needs to not find the file to throw a 404
537
535
  assert.deepEqual(
538
536
  resolveIdJson,
539
- // @ts-expect-error bad typing of assert.deepEqual
540
537
  await testUtils.getExpectedJson('9999999', 'asset', 'resolveId-1234-notFound'),
541
538
  'returned response was not equal expected'
542
539
  );
@@ -162,7 +162,7 @@ describe('type: automation', () => {
162
162
  'five cached automation expected'
163
163
  );
164
164
 
165
- // const scheduleCalloutList = testUtils.getSoapCallout('Schedule');
165
+ // const scheduleCalloutList = testUtils.getSoapCallouts('Schedule');
166
166
  // const objectIds = {
167
167
  // testNew_automation: 'a8afb0e2-b00a-4c88-ad2e-1f7f8788c560',
168
168
  // testExisting_automation: '08afb0e2-b00a-4c88-ad2e-1f7f8788c560',
@@ -27,8 +27,8 @@ describe('type: dataExtension', () => {
27
27
  const result = cache.getCache();
28
28
  assert.equal(
29
29
  result.dataExtension ? Object.keys(result.dataExtension).length : 0,
30
- 5,
31
- 'only 5 dataExtension expected'
30
+ 7,
31
+ 'only 7 dataExtension expected'
32
32
  );
33
33
  assert.deepEqual(
34
34
  await testUtils.getActualJson('testExisting_dataExtension', 'dataExtension'),
@@ -116,8 +116,8 @@ describe('type: dataExtension', () => {
116
116
  const result = cache.getCache();
117
117
  assert.equal(
118
118
  result.dataExtension ? Object.keys(result.dataExtension).length : 0,
119
- 7,
120
- '7 dataExtensions expected'
119
+ 9,
120
+ '9 dataExtensions expected'
121
121
  );
122
122
  // insert
123
123
  assert.deepEqual(
@@ -1,13 +1,12 @@
1
1
  import * as chai from 'chai';
2
2
  const assert = chai.assert;
3
- // const expect = chai.expect;
3
+ const expect = chai.expect;
4
4
 
5
5
  import chaiFiles from 'chai-files';
6
- // import cache from '../lib/util/cache.js';
6
+ import cache from '../lib/util/cache.js';
7
7
  import * as testUtils from './utils.js';
8
8
  import handler from '../lib/index.js';
9
9
  chai.use(chaiFiles);
10
- // const file = chaiFiles.file;
11
10
 
12
11
  describe('type: event', () => {
13
12
  beforeEach(() => {
@@ -18,12 +17,192 @@ describe('type: event', () => {
18
17
  testUtils.mockReset();
19
18
  });
20
19
 
21
- describe('Retrieve ================', () => {});
20
+ describe('Retrieve ================', () => {
21
+ it('Should retrieve a event', async () => {
22
+ // WHEN
23
+ await handler.retrieve('testInstance/testBU', ['event']);
24
+ // THEN
25
+ assert.equal(process.exitCode, 0, 'retrieve should not have thrown an error');
26
+ // get results from cache
27
+ const result = cache.getCache();
28
+ assert.equal(
29
+ result.event ? Object.keys(result.event).length : 0,
30
+ 4,
31
+ 'only 4 event expected'
32
+ );
33
+ assert.deepEqual(
34
+ await testUtils.getActualJson('testExisting_event', 'event'),
35
+ await testUtils.getExpectedJson('9999999', 'event', 'get'),
36
+ 'returned JSON was not equal expected'
37
+ );
38
+ assert.equal(
39
+ testUtils.getAPIHistoryLength(),
40
+ 4,
41
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
42
+ );
43
+ return;
44
+ });
45
+ });
22
46
 
23
47
  describe('Deploy ================', () => {
24
48
  beforeEach(() => {
25
49
  testUtils.mockSetup(true);
26
50
  });
51
+
52
+ it('Should create an event & dataExtension via schema', async () => {
53
+ // prepare
54
+ await testUtils.copyFile(
55
+ 'interaction/v1/eventDefinitions/post_withSchema-response.json',
56
+ 'interaction/v1/eventDefinitions/post-response.json'
57
+ );
58
+ await testUtils.copyFile(
59
+ 'dataExtension/retrieve-createdViaEvent-response.xml',
60
+ 'dataExtension/retrieve-response.xml'
61
+ );
62
+ await testUtils.copyFile(
63
+ 'dataExtension/update-afterCreatedViaEvent-response.xml',
64
+ 'dataExtension/update-response.xml'
65
+ );
66
+
67
+ await handler.deploy('testInstance/testBU', ['event'], ['testNew_event_withSchema']);
68
+ // THEN
69
+ assert.equal(process.exitCode, 0, 'deploy should not have thrown an error');
70
+ // get results from cache
71
+ const result = cache.getCache();
72
+ assert.equal(
73
+ result.event ? Object.keys(result.event).length : 0,
74
+ 5,
75
+ '5 events expected'
76
+ );
77
+ // get callouts
78
+ const createCallout = testUtils.getRestCallout(
79
+ 'post',
80
+ '/interaction/v1/eventDefinitions/'
81
+ );
82
+ // confirm created item
83
+ assert.deepEqual(
84
+ createCallout,
85
+ await testUtils.getExpectedJson('9999999', 'event', 'post_withSchema-callout'),
86
+ 'create-payload JSON was not equal expected'
87
+ );
88
+ assert.deepEqual(
89
+ await testUtils.getActualJson('testNew_event_withSchema', 'event'),
90
+ await testUtils.getExpectedJson('9999999', 'event', 'post_withSchema'),
91
+ 'returned new-JSON was not equal expected for insert event'
92
+ );
93
+ // confirm we changed the dataExtension key correctly
94
+ const updateCalloutDE = testUtils.getSoapCallouts('Update', 'DataExtension');
95
+ expect(updateCalloutDE[0]).to.equal(
96
+ await testUtils.getExpectedFile(
97
+ '9999999',
98
+ 'dataExtension',
99
+ 'update-callout-afterCreatedViaEvent',
100
+ 'xml'
101
+ )
102
+ );
103
+
104
+ // confirm created dataExtension
105
+ assert.deepEqual(
106
+ await testUtils.getActualJson('testNew_event_withSchema', 'dataExtension'),
107
+ await testUtils.getExpectedJson(
108
+ '9999999',
109
+ 'dataExtension',
110
+ 'retrieve_event_withSchema'
111
+ ),
112
+
113
+ 'returned metadata was not equal expected'
114
+ );
115
+
116
+ // check number of API calls
117
+ assert.equal(
118
+ testUtils.getAPIHistoryLength(),
119
+ 14,
120
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
121
+ );
122
+ return;
123
+ });
124
+
125
+ it('Should create an event with pre-Existing dataExtension', async () => {
126
+ // prepare
127
+ await testUtils.copyFile(
128
+ 'interaction/v1/eventDefinitions/post_withExistingDE-response.json',
129
+ 'interaction/v1/eventDefinitions/post-response.json'
130
+ );
131
+
132
+ await handler.deploy(
133
+ 'testInstance/testBU',
134
+ ['event'],
135
+ ['testNew_event_withExistingDE']
136
+ );
137
+ // THEN
138
+ assert.equal(process.exitCode, 0, 'deploy should not have thrown an error');
139
+ // get results from cache
140
+ const result = cache.getCache();
141
+ assert.equal(
142
+ result.event ? Object.keys(result.event).length : 0,
143
+ 5,
144
+ '5 events expected'
145
+ );
146
+ // get callouts
147
+ const createCallout = testUtils.getRestCallout(
148
+ 'post',
149
+ '/interaction/v1/eventDefinitions/'
150
+ );
151
+ // confirm created item
152
+ assert.deepEqual(
153
+ createCallout,
154
+ await testUtils.getExpectedJson('9999999', 'event', 'post_withExistingDE-callout'),
155
+ 'create-payload JSON was not equal expected'
156
+ );
157
+ assert.deepEqual(
158
+ await testUtils.getActualJson('testNew_event_withExistingDE', 'event'),
159
+ await testUtils.getExpectedJson('9999999', 'event', 'post_withExistingDE'),
160
+ 'returned new-JSON was not equal expected for insert event'
161
+ );
162
+ // check number of API calls
163
+ assert.equal(
164
+ testUtils.getAPIHistoryLength(),
165
+ 5,
166
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
167
+ );
168
+ return;
169
+ });
170
+
171
+ it('Should update an event', async () => {
172
+ await handler.deploy('testInstance/testBU', ['event'], ['testExisting_event']);
173
+ // THEN
174
+ assert.equal(process.exitCode, 0, 'deploy should not have thrown an error');
175
+ // get results from cache
176
+ const result = cache.getCache();
177
+ assert.equal(
178
+ result.event ? Object.keys(result.event).length : 0,
179
+ 4,
180
+ '4 events expected'
181
+ );
182
+ // get callouts
183
+ const updateCallout = testUtils.getRestCallout(
184
+ 'put',
185
+ '/interaction/v1/eventDefinitions/%'
186
+ );
187
+ // confirm updated item
188
+ assert.deepEqual(
189
+ updateCallout,
190
+ await testUtils.getExpectedJson('9999999', 'event', 'put-callout'),
191
+ 'update-payload JSON was not equal expected'
192
+ );
193
+ assert.deepEqual(
194
+ await testUtils.getActualJson('testExisting_event', 'event'),
195
+ await testUtils.getExpectedJson('9999999', 'event', 'put'),
196
+ 'returned existing-JSON was not equal expected for update event'
197
+ );
198
+ // check number of API calls
199
+ assert.equal(
200
+ testUtils.getAPIHistoryLength(),
201
+ 5,
202
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
203
+ );
204
+ return;
205
+ });
27
206
  });
28
207
 
29
208
  describe('FixKeys ================', () => {
@@ -54,9 +233,111 @@ describe('type: event', () => {
54
233
  });
55
234
  });
56
235
 
57
- describe('Templating ================', () => {});
236
+ describe('Templating ================', () => {
237
+ it('Should create a event template via retrieveAsTemplate and build it', async () => {
238
+ // GIVEN there is a template
239
+ const result = await handler.retrieveAsTemplate(
240
+ 'testInstance/testBU',
241
+ 'event',
242
+ ['testExisting_event'],
243
+ 'testSourceMarket'
244
+ );
245
+ // WHEN
246
+ assert.equal(process.exitCode, 0, 'retrieveAsTemplate should not have thrown an error');
247
+ assert.equal(
248
+ result.event ? Object.keys(result.event).length : 0,
249
+ 1,
250
+ 'only one event expected'
251
+ );
252
+ assert.deepEqual(
253
+ await testUtils.getActualTemplateJson('testExisting_event', 'event'),
254
+ await testUtils.getExpectedJson('9999999', 'event', 'template'),
255
+ 'returned template JSON of retrieveAsTemplate was not equal expected'
256
+ );
257
+ // THEN
258
+ await handler.buildDefinition(
259
+ 'testInstance/testBU',
260
+ 'event',
261
+ ['testExisting_event'],
262
+ 'testTargetMarket'
263
+ );
264
+ assert.equal(process.exitCode, 0, 'buildDefinition should not have thrown an error');
265
+
266
+ assert.deepEqual(
267
+ await testUtils.getActualDeployJson('testTemplated_event', 'event'),
268
+ await testUtils.getExpectedJson('9999999', 'event', 'build'),
269
+ 'returned deployment JSON was not equal expected'
270
+ );
58
271
 
59
- describe('Delete ================', () => {});
272
+ assert.equal(
273
+ testUtils.getAPIHistoryLength(),
274
+ 4,
275
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
276
+ );
277
+ return;
278
+ });
279
+
280
+ it('Should create a event template via buildTemplate and build it', async () => {
281
+ // download first before we test buildTemplate
282
+ await handler.retrieve('testInstance/testBU', ['event']);
283
+ // GIVEN there is a template
284
+ const result = await handler.buildTemplate(
285
+ 'testInstance/testBU',
286
+ 'event',
287
+ ['testExisting_event'],
288
+ 'testSourceMarket'
289
+ );
290
+ // WHEN
291
+ assert.equal(process.exitCode, 0, 'buildTemplate should not have thrown an error');
292
+
293
+ assert.equal(
294
+ result.event ? Object.keys(result.event).length : 0,
295
+ 1,
296
+ 'only one event expected'
297
+ );
298
+ assert.deepEqual(
299
+ await testUtils.getActualTemplateJson('testExisting_event', 'event'),
300
+ await testUtils.getExpectedJson('9999999', 'event', 'template'),
301
+ 'returned template JSON of buildTemplate was not equal expected'
302
+ );
303
+ // THEN
304
+ await handler.buildDefinition(
305
+ 'testInstance/testBU',
306
+ 'event',
307
+ ['testExisting_event'],
308
+ 'testTargetMarket'
309
+ );
310
+ assert.equal(process.exitCode, 0, 'buildDefinition should not have thrown an error');
311
+
312
+ assert.deepEqual(
313
+ await testUtils.getActualDeployJson('testTemplated_event', 'event'),
314
+ await testUtils.getExpectedJson('9999999', 'event', 'build'),
315
+ 'returned deployment JSON was not equal expected'
316
+ );
317
+
318
+ assert.equal(
319
+ testUtils.getAPIHistoryLength(),
320
+ 4,
321
+ 'Unexpected number of requests made. Run testUtils.logAPIHistoryDebug() to see the requests'
322
+ );
323
+ return;
324
+ });
325
+ });
326
+
327
+ describe('Delete ================', () => {
328
+ it('Should delete the item', async () => {
329
+ // WHEN
330
+ const isDeleted = await handler.deleteByKey(
331
+ 'testInstance/testBU',
332
+ 'event',
333
+ 'testExisting_event'
334
+ );
335
+ // THEN
336
+ assert.equal(process.exitCode, 0, 'deleteByKey should not have thrown an error');
337
+ assert.equal(isDeleted, true, 'deleteByKey should have returned true');
338
+ return;
339
+ });
340
+ });
60
341
 
61
342
  describe('CI/CD ================', () => {});
62
343
  });
@@ -278,6 +278,19 @@ describe('type: journey', () => {
278
278
  assert.equal(isDeleted, true, 'should have deleted the item');
279
279
  return;
280
280
  });
281
+
282
+ it('Should delete 2 items with version', async () => {
283
+ // WHEN
284
+ const isDeleted = await handler.deleteByKey('testInstance/testBU', 'journey', [
285
+ 'testExisting_journey_Quicksend/1',
286
+ 'testExisting_journey_Multistep/1',
287
+ ]);
288
+ // THEN
289
+ assert.equal(process.exitCode, 0, 'delete should not have thrown an error');
290
+
291
+ assert.equal(isDeleted, true, 'should have deleted the item');
292
+ return;
293
+ });
281
294
  });
282
295
 
283
296
  describe('ReplaceContentBlockByX ================', () => {
@@ -55,7 +55,7 @@ describe('type: user', () => {
55
55
  await File.readFile(`./docs/user/testInstance.users.md`, {
56
56
  encoding: 'utf8',
57
57
  })
58
- ).replaceAll(regexFindDaysSinceLogin, [expectedDaysSinceLogin[0]]);
58
+ ).replaceAll(regexFindDaysSinceLogin, expectedDaysSinceLogin[0]);
59
59
  expect(actualFile).to.equal(expectedFile);
60
60
 
61
61
  assert.equal(