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