@tellescope/sdk 1.256.6 → 1.256.7

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 (115) hide show
  1. package/lib/cjs/enduser.d.ts +1 -1
  2. package/lib/cjs/enduser.d.ts.map +1 -1
  3. package/lib/cjs/enduser.js +1 -0
  4. package/lib/cjs/enduser.js.map +1 -1
  5. package/lib/cjs/tests/api_tests/calendar_event_create_and_bulk_triggers.test.d.ts +6 -0
  6. package/lib/cjs/tests/api_tests/calendar_event_create_and_bulk_triggers.test.d.ts.map +1 -0
  7. package/lib/cjs/tests/api_tests/calendar_event_create_and_bulk_triggers.test.js +505 -0
  8. package/lib/cjs/tests/api_tests/calendar_event_create_and_bulk_triggers.test.js.map +1 -0
  9. package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts +6 -0
  10. package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts.map +1 -0
  11. package/lib/cjs/tests/api_tests/configurations_public_read.test.js +173 -0
  12. package/lib/cjs/tests/api_tests/configurations_public_read.test.js.map +1 -0
  13. package/lib/cjs/tests/api_tests/form_started_trigger.test.d.ts.map +1 -1
  14. package/lib/cjs/tests/api_tests/form_started_trigger.test.js +87 -24
  15. package/lib/cjs/tests/api_tests/form_started_trigger.test.js.map +1 -1
  16. package/lib/cjs/tests/api_tests/form_translations.test.d.ts +6 -0
  17. package/lib/cjs/tests/api_tests/form_translations.test.d.ts.map +1 -0
  18. package/lib/cjs/tests/api_tests/form_translations.test.js +259 -0
  19. package/lib/cjs/tests/api_tests/form_translations.test.js.map +1 -0
  20. package/lib/cjs/tests/api_tests/group_event_attendee_status_triggers.test.d.ts.map +1 -1
  21. package/lib/cjs/tests/api_tests/group_event_attendee_status_triggers.test.js +340 -124
  22. package/lib/cjs/tests/api_tests/group_event_attendee_status_triggers.test.js.map +1 -1
  23. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -0
  24. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -0
  25. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js +277 -0
  26. package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js.map +1 -0
  27. package/lib/cjs/tests/api_tests/purchase_made_trigger.test.d.ts.map +1 -1
  28. package/lib/cjs/tests/api_tests/purchase_made_trigger.test.js +262 -78
  29. package/lib/cjs/tests/api_tests/purchase_made_trigger.test.js.map +1 -1
  30. package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts +31 -0
  31. package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts.map +1 -0
  32. package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js +230 -0
  33. package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js.map +1 -0
  34. package/lib/cjs/tests/api_tests/security/public_endpoint_auth_field_lock.test.d.ts.map +1 -1
  35. package/lib/cjs/tests/api_tests/security/public_endpoint_auth_field_lock.test.js +206 -198
  36. package/lib/cjs/tests/api_tests/security/public_endpoint_auth_field_lock.test.js.map +1 -1
  37. package/lib/cjs/tests/api_tests/stripe_webhook_triggers.test.d.ts.map +1 -1
  38. package/lib/cjs/tests/api_tests/stripe_webhook_triggers.test.js +343 -80
  39. package/lib/cjs/tests/api_tests/stripe_webhook_triggers.test.js.map +1 -1
  40. package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
  41. package/lib/cjs/tests/api_tests/welle_partner_token.test.js +74 -35
  42. package/lib/cjs/tests/api_tests/welle_partner_token.test.js.map +1 -1
  43. package/lib/cjs/tests/stripe_webhook_helpers.d.ts +134 -0
  44. package/lib/cjs/tests/stripe_webhook_helpers.d.ts.map +1 -1
  45. package/lib/cjs/tests/stripe_webhook_helpers.js +126 -1
  46. package/lib/cjs/tests/stripe_webhook_helpers.js.map +1 -1
  47. package/lib/cjs/tests/tests.d.ts.map +1 -1
  48. package/lib/cjs/tests/tests.js +238 -212
  49. package/lib/cjs/tests/tests.js.map +1 -1
  50. package/lib/esm/enduser.d.ts +1 -1
  51. package/lib/esm/enduser.d.ts.map +1 -1
  52. package/lib/esm/enduser.js +1 -0
  53. package/lib/esm/enduser.js.map +1 -1
  54. package/lib/esm/tests/api_tests/calendar_event_create_and_bulk_triggers.test.d.ts +6 -0
  55. package/lib/esm/tests/api_tests/calendar_event_create_and_bulk_triggers.test.d.ts.map +1 -0
  56. package/lib/esm/tests/api_tests/calendar_event_create_and_bulk_triggers.test.js +501 -0
  57. package/lib/esm/tests/api_tests/calendar_event_create_and_bulk_triggers.test.js.map +1 -0
  58. package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts +6 -0
  59. package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts.map +1 -0
  60. package/lib/esm/tests/api_tests/configurations_public_read.test.js +169 -0
  61. package/lib/esm/tests/api_tests/configurations_public_read.test.js.map +1 -0
  62. package/lib/esm/tests/api_tests/form_started_trigger.test.d.ts.map +1 -1
  63. package/lib/esm/tests/api_tests/form_started_trigger.test.js +87 -24
  64. package/lib/esm/tests/api_tests/form_started_trigger.test.js.map +1 -1
  65. package/lib/esm/tests/api_tests/form_translations.test.d.ts +6 -0
  66. package/lib/esm/tests/api_tests/form_translations.test.d.ts.map +1 -0
  67. package/lib/esm/tests/api_tests/form_translations.test.js +255 -0
  68. package/lib/esm/tests/api_tests/form_translations.test.js.map +1 -0
  69. package/lib/esm/tests/api_tests/group_event_attendee_status_triggers.test.d.ts.map +1 -1
  70. package/lib/esm/tests/api_tests/group_event_attendee_status_triggers.test.js +340 -124
  71. package/lib/esm/tests/api_tests/group_event_attendee_status_triggers.test.js.map +1 -1
  72. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -0
  73. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -0
  74. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js +273 -0
  75. package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js.map +1 -0
  76. package/lib/esm/tests/api_tests/purchase_made_trigger.test.d.ts.map +1 -1
  77. package/lib/esm/tests/api_tests/purchase_made_trigger.test.js +262 -78
  78. package/lib/esm/tests/api_tests/purchase_made_trigger.test.js.map +1 -1
  79. package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts +31 -0
  80. package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts.map +1 -0
  81. package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js +226 -0
  82. package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js.map +1 -0
  83. package/lib/esm/tests/api_tests/security/public_endpoint_auth_field_lock.test.d.ts.map +1 -1
  84. package/lib/esm/tests/api_tests/security/public_endpoint_auth_field_lock.test.js +206 -198
  85. package/lib/esm/tests/api_tests/security/public_endpoint_auth_field_lock.test.js.map +1 -1
  86. package/lib/esm/tests/api_tests/stripe_webhook_triggers.test.d.ts.map +1 -1
  87. package/lib/esm/tests/api_tests/stripe_webhook_triggers.test.js +344 -81
  88. package/lib/esm/tests/api_tests/stripe_webhook_triggers.test.js.map +1 -1
  89. package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
  90. package/lib/esm/tests/api_tests/welle_partner_token.test.js +74 -35
  91. package/lib/esm/tests/api_tests/welle_partner_token.test.js.map +1 -1
  92. package/lib/esm/tests/stripe_webhook_helpers.d.ts +134 -0
  93. package/lib/esm/tests/stripe_webhook_helpers.d.ts.map +1 -1
  94. package/lib/esm/tests/stripe_webhook_helpers.js +119 -0
  95. package/lib/esm/tests/stripe_webhook_helpers.js.map +1 -1
  96. package/lib/esm/tests/tests.d.ts.map +1 -1
  97. package/lib/esm/tests/tests.js +238 -212
  98. package/lib/esm/tests/tests.js.map +1 -1
  99. package/lib/tsconfig.tsbuildinfo +1 -1
  100. package/package.json +10 -10
  101. package/src/enduser.ts +4 -2
  102. package/src/tests/api_tests/calendar_event_create_and_bulk_triggers.test.ts +293 -0
  103. package/src/tests/api_tests/configurations_public_read.test.ts +116 -0
  104. package/src/tests/api_tests/form_started_trigger.test.ts +49 -1
  105. package/src/tests/api_tests/form_translations.test.ts +205 -0
  106. package/src/tests/api_tests/group_event_attendee_status_triggers.test.ts +135 -0
  107. package/src/tests/api_tests/mdi_trigger_refill.test.ts +184 -0
  108. package/src/tests/api_tests/purchase_made_trigger.test.ts +137 -0
  109. package/src/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.ts +144 -0
  110. package/src/tests/api_tests/security/public_endpoint_auth_field_lock.test.ts +16 -6
  111. package/src/tests/api_tests/stripe_webhook_triggers.test.ts +221 -0
  112. package/src/tests/api_tests/welle_partner_token.test.ts +49 -6
  113. package/src/tests/stripe_webhook_helpers.ts +116 -0
  114. package/src/tests/tests.ts +27 -12
  115. package/test_generated.pdf +0 -0
@@ -44,7 +44,7 @@ var host = process.env.API_URL || "http://localhost:8080";
44
44
  var purchase_made_trigger_tests = function (_a) {
45
45
  var sdk = _a.sdk, sdkNonAdmin = _a.sdkNonAdmin;
46
46
  return __awaiter(void 0, void 0, void 0, function () {
47
- var product1, product2, product3, t1, t2, t3, t4, t5, t6, t7, t8, t9, enduser1, enduser2, enduser3, enduser4, enduser5, enduser6, enduser7, enduser8, enduser9, enduser10, enduser11, enduser12, enduser13, enduser14, purchase1, purchase2, purchase3, purchase4, purchase5, purchase6, purchase7, purchase8, purchase9, purchase10, purchase11, purchase12, purchase13, purchase14;
47
+ var product1, product2, product3, t1, t2, t3, t4, t5, t6, t7, t8, t9, enduser1, enduser2, enduser3, enduser4, enduser5, enduser6, enduser7, enduser8, enduser9, enduser10, enduser11, enduser12, enduser13, enduser14, t10, t11, t12, enduser15, enduser16, enduser17, enduser18, enduser19, enduser20, purchase1, purchase2, purchase3, purchase4, purchase5, purchase6, purchase7, purchase8, purchase9, purchase10, purchase11, purchase12, purchase13, purchase14, purchase15, purchase16, purchase17, purchase18, purchase19, purchase20;
48
48
  return __generator(this, function (_b) {
49
49
  switch (_b.label) {
50
50
  case 0:
@@ -194,10 +194,58 @@ var purchase_made_trigger_tests = function (_a) {
194
194
  case 25:
195
195
  enduser13 = _b.sent();
196
196
  return [4 /*yield*/, sdk.api.endusers.createOne({})
197
- // Test 1: Purchase without specific filters (should trigger t1 for any purchase)
197
+ // couponCodes filter triggers
198
198
  ];
199
199
  case 26:
200
200
  enduser14 = _b.sent();
201
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
202
+ event: { type: 'Purchase Made', info: { couponCodes: ['SUMMER20'] } },
203
+ action: { type: 'Add Tags', info: { tags: ['Purchase-Coupon-Summer20'] } },
204
+ status: 'Active',
205
+ title: "Purchase - Coupon SUMMER20"
206
+ })
207
+ // Empty couponCodes array should behave like no filter
208
+ ];
209
+ case 27:
210
+ t10 = _b.sent();
211
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
212
+ event: { type: 'Purchase Made', info: { couponCodes: [] } },
213
+ action: { type: 'Add Tags', info: { tags: ['Purchase-Coupon-Empty'] } },
214
+ status: 'Active',
215
+ title: "Purchase - Empty couponCodes Array"
216
+ })
217
+ // Combined filter: title AND coupon must both match
218
+ ];
219
+ case 28:
220
+ t11 = _b.sent();
221
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
222
+ event: { type: 'Purchase Made', info: { titles: ['Premium Course Package'], couponCodes: ['SUMMER20'] } },
223
+ action: { type: 'Add Tags', info: { tags: ['Purchase-Title-And-Coupon'] } },
224
+ status: 'Active',
225
+ title: "Purchase - Title and Coupon"
226
+ })];
227
+ case 29:
228
+ t12 = _b.sent();
229
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
230
+ case 30:
231
+ enduser15 = _b.sent();
232
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
233
+ case 31:
234
+ enduser16 = _b.sent();
235
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
236
+ case 32:
237
+ enduser17 = _b.sent();
238
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
239
+ case 33:
240
+ enduser18 = _b.sent();
241
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
242
+ case 34:
243
+ enduser19 = _b.sent();
244
+ return [4 /*yield*/, sdk.api.endusers.createOne({})
245
+ // Test 1: Purchase without specific filters (should trigger t1 for any purchase)
246
+ ];
247
+ case 35:
248
+ enduser20 = _b.sent();
201
249
  return [4 /*yield*/, sdk.api.purchases.createOne({
202
250
  enduserId: enduser1.id,
203
251
  productId: product1.id,
@@ -205,15 +253,15 @@ var purchase_made_trigger_tests = function (_a) {
205
253
  cost: { amount: 9999, currency: 'USD' },
206
254
  processor: 'Stripe'
207
255
  })];
208
- case 27:
256
+ case 36:
209
257
  purchase1 = _b.sent();
210
258
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // Brief wait for trigger processing
211
- case 28:
259
+ case 37:
212
260
  _b.sent(); // Brief wait for trigger processing
213
261
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Any Purchase", function () { return sdk.api.endusers.getOne(enduser1.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Any')); } })
214
262
  // Test 2: Purchase with exact title match
215
263
  ];
216
- case 29:
264
+ case 38:
217
265
  _b.sent();
218
266
  return [4 /*yield*/, sdk.api.purchases.createOne({
219
267
  enduserId: enduser2.id,
@@ -222,15 +270,15 @@ var purchase_made_trigger_tests = function (_a) {
222
270
  cost: { amount: 9999, currency: 'USD' },
223
271
  processor: 'Stripe'
224
272
  })];
225
- case 30:
273
+ case 39:
226
274
  purchase2 = _b.sent();
227
275
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
228
- case 31:
276
+ case 40:
229
277
  _b.sent();
230
278
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Exact Title Match", function () { return sdk.api.endusers.getOne(enduser2.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Exact-Title')); } })
231
279
  // Test 3: Purchase with product ID match
232
280
  ];
233
- case 32:
281
+ case 41:
234
282
  _b.sent();
235
283
  return [4 /*yield*/, sdk.api.purchases.createOne({
236
284
  enduserId: enduser3.id,
@@ -239,15 +287,15 @@ var purchase_made_trigger_tests = function (_a) {
239
287
  cost: { amount: 4999, currency: 'USD' },
240
288
  processor: 'Stripe'
241
289
  })];
242
- case 33:
290
+ case 42:
243
291
  purchase3 = _b.sent();
244
292
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
245
- case 34:
293
+ case 43:
246
294
  _b.sent();
247
295
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Product ID Match", function () { return sdk.api.endusers.getOne(enduser3.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Product-ID')); } })
248
296
  // Test 4: Purchase with case-insensitive partial title match - "course"
249
297
  ];
250
- case 35:
298
+ case 44:
251
299
  _b.sent();
252
300
  return [4 /*yield*/, sdk.api.purchases.createOne({
253
301
  enduserId: enduser4.id,
@@ -256,15 +304,15 @@ var purchase_made_trigger_tests = function (_a) {
256
304
  cost: { amount: 9999, currency: 'USD' },
257
305
  processor: 'Stripe'
258
306
  })];
259
- case 36:
307
+ case 45:
260
308
  purchase4 = _b.sent();
261
309
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
262
- case 37:
310
+ case 46:
263
311
  _b.sent();
264
312
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Partial Title Match (case insensitive 'course')", function () { return sdk.api.endusers.getOne(enduser4.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Partial-Course')); } })
265
313
  // Test 5: Purchase with case-insensitive partial title match - "ANALYTICS" (uppercase)
266
314
  ];
267
- case 38:
315
+ case 47:
268
316
  _b.sent();
269
317
  return [4 /*yield*/, sdk.api.purchases.createOne({
270
318
  enduserId: enduser5.id,
@@ -273,15 +321,15 @@ var purchase_made_trigger_tests = function (_a) {
273
321
  cost: { amount: 14999, currency: 'USD' },
274
322
  processor: 'Stripe'
275
323
  })];
276
- case 39:
324
+ case 48:
277
325
  purchase5 = _b.sent();
278
326
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
279
- case 40:
327
+ case 49:
280
328
  _b.sent();
281
329
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Partial Title Match (case insensitive 'ANALYTICS')", function () { return sdk.api.endusers.getOne(enduser5.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Partial-Analytics')); } })
282
330
  // Test 6: Purchase that should NOT match partial filter
283
331
  ];
284
- case 41:
332
+ case 50:
285
333
  _b.sent();
286
334
  return [4 /*yield*/, sdk.api.purchases.createOne({
287
335
  enduserId: enduser6.id,
@@ -290,15 +338,15 @@ var purchase_made_trigger_tests = function (_a) {
290
338
  cost: { amount: 4999, currency: 'USD' },
291
339
  processor: 'Stripe'
292
340
  })];
293
- case 42:
341
+ case 51:
294
342
  purchase6 = _b.sent();
295
343
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
296
- case 43:
344
+ case 52:
297
345
  _b.sent();
298
346
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - No Partial Title Match", function () { return sdk.api.endusers.getOne(enduser6.id); }, { onResult: function (e) { var _a, _b, _c; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Any')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Purchase-Partial-Course')) && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('Purchase-Partial-Analytics')); } })
299
347
  // Test 7: Purchase with mixed case partial match
300
348
  ];
301
- case 44:
349
+ case 53:
302
350
  _b.sent();
303
351
  return [4 /*yield*/, sdk.api.purchases.createOne({
304
352
  enduserId: enduser7.id,
@@ -307,15 +355,15 @@ var purchase_made_trigger_tests = function (_a) {
307
355
  cost: { amount: 9999, currency: 'USD' },
308
356
  processor: 'Stripe'
309
357
  })];
310
- case 45:
358
+ case 54:
311
359
  purchase7 = _b.sent();
312
360
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
313
- case 46:
361
+ case 55:
314
362
  _b.sent();
315
363
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Mixed Case Partial Title Match", function () { return sdk.api.endusers.getOne(enduser7.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Partial-Course')); } })
316
364
  // Test 8: Purchase with multiple partial matches - should match 'premium'
317
365
  ];
318
- case 47:
366
+ case 56:
319
367
  _b.sent();
320
368
  return [4 /*yield*/, sdk.api.purchases.createOne({
321
369
  enduserId: enduser8.id,
@@ -324,15 +372,15 @@ var purchase_made_trigger_tests = function (_a) {
324
372
  cost: { amount: 9999, currency: 'USD' },
325
373
  processor: 'Stripe'
326
374
  })];
327
- case 48:
375
+ case 57:
328
376
  purchase8 = _b.sent();
329
377
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
330
- case 49:
378
+ case 58:
331
379
  _b.sent();
332
380
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Multiple Partial Matches (matches 'premium')", function () { return sdk.api.endusers.getOne(enduser8.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Multiple-Partial')); } })
333
381
  // Test 9: Purchase with multiple partial matches - should match 'advanced'
334
382
  ];
335
- case 50:
383
+ case 59:
336
384
  _b.sent();
337
385
  return [4 /*yield*/, sdk.api.purchases.createOne({
338
386
  enduserId: enduser9.id,
@@ -341,15 +389,15 @@ var purchase_made_trigger_tests = function (_a) {
341
389
  cost: { amount: 14999, currency: 'USD' },
342
390
  processor: 'Stripe'
343
391
  })];
344
- case 51:
392
+ case 60:
345
393
  purchase9 = _b.sent();
346
394
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
347
- case 52:
395
+ case 61:
348
396
  _b.sent();
349
397
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Multiple Partial Matches (matches 'advanced')", function () { return sdk.api.endusers.getOne(enduser9.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Multiple-Partial')); } })
350
398
  // Test 10: Comprehensive case-insensitivity - lowercase filter 'mixed' matches title 'MIXED Case'
351
399
  ];
352
- case 53:
400
+ case 62:
353
401
  _b.sent();
354
402
  return [4 /*yield*/, sdk.api.purchases.createOne({
355
403
  enduserId: enduser10.id,
@@ -358,15 +406,15 @@ var purchase_made_trigger_tests = function (_a) {
358
406
  cost: { amount: 9999, currency: 'USD' },
359
407
  processor: 'Stripe'
360
408
  })];
361
- case 54:
409
+ case 63:
362
410
  purchase10 = _b.sent();
363
411
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
364
- case 55:
412
+ case 64:
365
413
  _b.sent();
366
414
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Case Insensitive (lowercase filter 'mixed' matches 'MIXED')", function () { return sdk.api.endusers.getOne(enduser10.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Case-Test')); } })
367
415
  // Test 11: Comprehensive case-insensitivity - uppercase filter 'UPPER' matches title 'upper'
368
416
  ];
369
- case 56:
417
+ case 65:
370
418
  _b.sent();
371
419
  return [4 /*yield*/, sdk.api.purchases.createOne({
372
420
  enduserId: enduser11.id,
@@ -375,15 +423,15 @@ var purchase_made_trigger_tests = function (_a) {
375
423
  cost: { amount: 4999, currency: 'USD' },
376
424
  processor: 'Stripe'
377
425
  })];
378
- case 57:
426
+ case 66:
379
427
  purchase11 = _b.sent();
380
428
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
381
- case 58:
429
+ case 67:
382
430
  _b.sent();
383
431
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Case Insensitive (uppercase filter 'UPPER' matches 'upper')", function () { return sdk.api.endusers.getOne(enduser11.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Case-Test')); } })
384
432
  // Test 12: Comprehensive case-insensitivity - mixed case filter 'MiXeD' matches title 'MiXeD'
385
433
  ];
386
- case 59:
434
+ case 68:
387
435
  _b.sent();
388
436
  return [4 /*yield*/, sdk.api.purchases.createOne({
389
437
  enduserId: enduser12.id,
@@ -392,15 +440,15 @@ var purchase_made_trigger_tests = function (_a) {
392
440
  cost: { amount: 14999, currency: 'USD' },
393
441
  processor: 'Stripe'
394
442
  })];
395
- case 60:
443
+ case 69:
396
444
  purchase12 = _b.sent();
397
445
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
398
- case 61:
446
+ case 70:
399
447
  _b.sent();
400
448
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Case Insensitive (mixed case filter 'MiXeD' matches 'MiXeD')", function () { return sdk.api.endusers.getOne(enduser12.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Case-Test')); } })
401
449
  // Test 13: Empty titlePartialMatches array - should behave like no filter
402
450
  ];
403
- case 62:
451
+ case 71:
404
452
  _b.sent();
405
453
  return [4 /*yield*/, sdk.api.purchases.createOne({
406
454
  enduserId: enduser13.id,
@@ -409,15 +457,15 @@ var purchase_made_trigger_tests = function (_a) {
409
457
  cost: { amount: 9999, currency: 'USD' },
410
458
  processor: 'Stripe'
411
459
  })];
412
- case 63:
460
+ case 72:
413
461
  purchase13 = _b.sent();
414
462
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
415
- case 64:
463
+ case 73:
416
464
  _b.sent();
417
465
  return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Empty titlePartialMatches Array (should trigger like any purchase)", function () { return sdk.api.endusers.getOne(enduser13.id); }, { onResult: function (e) { var _a, _b; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Empty-Array')) && !!((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Purchase-Any')); } })
418
466
  // Test 14: Purchase with empty title - should NOT trigger partial match filters
419
467
  ];
420
- case 65:
468
+ case 74:
421
469
  _b.sent();
422
470
  return [4 /*yield*/, sdk.api.purchases.createOne({
423
471
  enduserId: enduser14.id,
@@ -426,108 +474,244 @@ var purchase_made_trigger_tests = function (_a) {
426
474
  cost: { amount: 4999, currency: 'USD' },
427
475
  processor: 'Stripe'
428
476
  })];
429
- case 66:
477
+ case 75:
430
478
  purchase14 = _b.sent();
431
479
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
432
- case 67:
480
+ case 76:
433
481
  _b.sent();
434
- return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Empty Title (should not trigger partial match filters)", function () { return sdk.api.endusers.getOne(enduser14.id); }, { onResult: function (e) { var _a, _b; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Any')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Purchase-No-Title-Test')); } })];
435
- case 68:
482
+ return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Empty Title (should not trigger partial match filters)", function () { return sdk.api.endusers.getOne(enduser14.id); }, { onResult: function (e) { var _a, _b; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Any')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Purchase-No-Title-Test')); } })
483
+ // Test 15: exact coupon code match fires the coupon-scoped trigger
484
+ ];
485
+ case 77:
436
486
  _b.sent();
437
- _b.label = 69;
438
- case 69:
439
- _b.trys.push([69, , 96, 97]);
487
+ return [4 /*yield*/, sdk.api.purchases.createOne({
488
+ enduserId: enduser15.id,
489
+ title: 'Coupon Test Purchase',
490
+ cost: { amount: 9999, currency: 'USD' },
491
+ processor: 'Stripe',
492
+ couponCodes: ['SUMMER20'],
493
+ })];
494
+ case 78:
495
+ purchase15 = _b.sent();
496
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
497
+ case 79:
498
+ _b.sent();
499
+ return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Coupon Code Match (exact)", function () { return sdk.api.endusers.getOne(enduser15.id); }, { onResult: function (e) { var _a, _b; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Coupon-Summer20')) && !!((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Purchase-Coupon-Empty')); } })
500
+ // Test 16: coupon match is case-sensitive — Stripe returns the canonical merchant-defined
501
+ // code, so a differently-cased value must NOT fire the coupon-scoped trigger
502
+ ];
503
+ case 80:
504
+ _b.sent();
505
+ return [4 /*yield*/, sdk.api.purchases.createOne({
506
+ enduserId: enduser16.id,
507
+ title: 'Coupon Test Purchase',
508
+ cost: { amount: 9999, currency: 'USD' },
509
+ processor: 'Stripe',
510
+ couponCodes: ['summer20'],
511
+ })];
512
+ case 81:
513
+ purchase16 = _b.sent();
514
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
515
+ case 82:
516
+ _b.sent();
517
+ return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Coupon Code Case Mismatch (case sensitive, 'summer20' vs 'SUMMER20')", function () { return sdk.api.endusers.getOne(enduser16.id); }, { onResult: function (e) { var _a, _b; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Any')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Purchase-Coupon-Summer20')); } })
518
+ // Test 17: a different coupon code does NOT fire the coupon-scoped trigger
519
+ ];
520
+ case 83:
521
+ _b.sent();
522
+ return [4 /*yield*/, sdk.api.purchases.createOne({
523
+ enduserId: enduser17.id,
524
+ title: 'Coupon Test Purchase',
525
+ cost: { amount: 9999, currency: 'USD' },
526
+ processor: 'Stripe',
527
+ couponCodes: ['WINTER10'],
528
+ })];
529
+ case 84:
530
+ purchase17 = _b.sent();
531
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
532
+ case 85:
533
+ _b.sent();
534
+ return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Non-matching Coupon Code", function () { return sdk.api.endusers.getOne(enduser17.id); }, { onResult: function (e) { var _a, _b; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Any')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Purchase-Coupon-Summer20')); } })
535
+ // Test 18: a purchase with no couponCodes never matches a coupon-scoped trigger, but
536
+ // unscoped and empty-array coupon triggers still fire (backward compat)
537
+ ];
538
+ case 86:
539
+ _b.sent();
540
+ return [4 /*yield*/, sdk.api.purchases.createOne({
541
+ enduserId: enduser18.id,
542
+ title: 'Coupon Test Purchase',
543
+ cost: { amount: 9999, currency: 'USD' },
544
+ processor: 'Stripe',
545
+ })];
546
+ case 87:
547
+ purchase18 = _b.sent();
548
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
549
+ case 88:
550
+ _b.sent();
551
+ return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - No Coupon Data (backward compat)", function () { return sdk.api.endusers.getOne(enduser18.id); }, { onResult: function (e) { var _a, _b, _c; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Any')) && !!((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Purchase-Coupon-Empty')) && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('Purchase-Coupon-Summer20')); } })
552
+ // Test 19: combined titles + couponCodes filter fires when both match
553
+ ];
554
+ case 89:
555
+ _b.sent();
556
+ return [4 /*yield*/, sdk.api.purchases.createOne({
557
+ enduserId: enduser19.id,
558
+ title: 'Premium Course Package',
559
+ cost: { amount: 9999, currency: 'USD' },
560
+ processor: 'Stripe',
561
+ couponCodes: ['SUMMER20'],
562
+ })];
563
+ case 90:
564
+ purchase19 = _b.sent();
565
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
566
+ case 91:
567
+ _b.sent();
568
+ return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Title AND Coupon Match", function () { return sdk.api.endusers.getOne(enduser19.id); }, { onResult: function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Title-And-Coupon')); } })
569
+ // Test 20: combined filter does NOT fire when the title matches but the coupon does not
570
+ ];
571
+ case 92:
572
+ _b.sent();
573
+ return [4 /*yield*/, sdk.api.purchases.createOne({
574
+ enduserId: enduser20.id,
575
+ title: 'Premium Course Package',
576
+ cost: { amount: 9999, currency: 'USD' },
577
+ processor: 'Stripe',
578
+ })];
579
+ case 93:
580
+ purchase20 = _b.sent();
581
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)];
582
+ case 94:
583
+ _b.sent();
584
+ return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - Title Matches But Coupon Missing (AND semantics)", function () { return sdk.api.endusers.getOne(enduser20.id); }, { onResult: function (e) { var _a, _b; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Purchase-Exact-Title')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Purchase-Title-And-Coupon')); } })
585
+ // Validator round-trip: couponCodes persists on the trigger's event.info
586
+ ];
587
+ case 95:
588
+ _b.sent();
589
+ // Validator round-trip: couponCodes persists on the trigger's event.info
590
+ return [4 /*yield*/, (0, testing_1.async_test)("Purchase Made - couponCodes round-trips on trigger info", function () { return sdk.api.automation_triggers.getOne(t10.id); }, { onResult: function (t) { var _a, _b; return JSON.stringify((_b = (_a = t.event) === null || _a === void 0 ? void 0 : _a.info) === null || _b === void 0 ? void 0 : _b.couponCodes) === JSON.stringify(['SUMMER20']); } })];
591
+ case 96:
592
+ // Validator round-trip: couponCodes persists on the trigger's event.info
593
+ _b.sent();
594
+ _b.label = 97;
595
+ case 97:
596
+ _b.trys.push([97, , 133, 134]);
440
597
  // Clean up test data - triggers first
441
598
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t1.id)];
442
- case 70:
599
+ case 98:
443
600
  // Clean up test data - triggers first
444
601
  _b.sent();
445
602
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t2.id)];
446
- case 71:
603
+ case 99:
447
604
  _b.sent();
448
605
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t3.id)];
449
- case 72:
606
+ case 100:
450
607
  _b.sent();
451
608
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t4.id)];
452
- case 73:
609
+ case 101:
453
610
  _b.sent();
454
611
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t5.id)];
455
- case 74:
612
+ case 102:
456
613
  _b.sent();
457
614
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t6.id)];
458
- case 75:
615
+ case 103:
459
616
  _b.sent();
460
617
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t7.id)];
461
- case 76:
618
+ case 104:
462
619
  _b.sent();
463
620
  return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t8.id)];
464
- case 77:
621
+ case 105:
622
+ _b.sent();
623
+ return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t9.id)];
624
+ case 106:
465
625
  _b.sent();
466
- return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t9.id)
626
+ return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t10.id)];
627
+ case 107:
628
+ _b.sent();
629
+ return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t11.id)];
630
+ case 108:
631
+ _b.sent();
632
+ return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(t12.id)
467
633
  // Clean up products
468
634
  ];
469
- case 78:
635
+ case 109:
470
636
  _b.sent();
471
637
  // Clean up products
472
638
  return [4 /*yield*/, sdk.api.products.deleteOne(product1.id)];
473
- case 79:
639
+ case 110:
474
640
  // Clean up products
475
641
  _b.sent();
476
642
  return [4 /*yield*/, sdk.api.products.deleteOne(product2.id)];
477
- case 80:
643
+ case 111:
478
644
  _b.sent();
479
645
  return [4 /*yield*/, sdk.api.products.deleteOne(product3.id)
480
646
  // Clean up endusers to prevent interference with other tests
481
647
  ];
482
- case 81:
648
+ case 112:
483
649
  _b.sent();
484
650
  // Clean up endusers to prevent interference with other tests
485
651
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser1.id)];
486
- case 82:
652
+ case 113:
487
653
  // Clean up endusers to prevent interference with other tests
488
654
  _b.sent();
489
655
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser2.id)];
490
- case 83:
656
+ case 114:
491
657
  _b.sent();
492
658
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser3.id)];
493
- case 84:
659
+ case 115:
494
660
  _b.sent();
495
661
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser4.id)];
496
- case 85:
662
+ case 116:
497
663
  _b.sent();
498
664
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser5.id)];
499
- case 86:
665
+ case 117:
500
666
  _b.sent();
501
667
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser6.id)];
502
- case 87:
668
+ case 118:
503
669
  _b.sent();
504
670
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser7.id)];
505
- case 88:
671
+ case 119:
506
672
  _b.sent();
507
673
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser8.id)];
508
- case 89:
674
+ case 120:
509
675
  _b.sent();
510
676
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser9.id)];
511
- case 90:
677
+ case 121:
512
678
  _b.sent();
513
679
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser10.id)];
514
- case 91:
680
+ case 122:
515
681
  _b.sent();
516
682
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser11.id)];
517
- case 92:
683
+ case 123:
518
684
  _b.sent();
519
685
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser12.id)];
520
- case 93:
686
+ case 124:
521
687
  _b.sent();
522
688
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser13.id)];
523
- case 94:
689
+ case 125:
524
690
  _b.sent();
525
691
  return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser14.id)];
526
- case 95:
692
+ case 126:
693
+ _b.sent();
694
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser15.id)];
695
+ case 127:
696
+ _b.sent();
697
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser16.id)];
698
+ case 128:
699
+ _b.sent();
700
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser17.id)];
701
+ case 129:
702
+ _b.sent();
703
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser18.id)];
704
+ case 130:
705
+ _b.sent();
706
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser19.id)];
707
+ case 131:
708
+ _b.sent();
709
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser20.id)];
710
+ case 132:
527
711
  _b.sent();
528
- return [3 /*break*/, 97];
529
- case 96: return [7 /*endfinally*/];
530
- case 97: return [2 /*return*/];
712
+ return [3 /*break*/, 134];
713
+ case 133: return [7 /*endfinally*/];
714
+ case 134: return [2 /*return*/];
531
715
  }
532
716
  });
533
717
  });