@tellescope/sdk 1.254.1 → 1.255.0

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 (38) hide show
  1. package/lib/cjs/sdk.d.ts +4 -0
  2. package/lib/cjs/sdk.d.ts.map +1 -1
  3. package/lib/cjs/sdk.js +5 -0
  4. package/lib/cjs/sdk.js.map +1 -1
  5. package/lib/cjs/tests/api_tests/order_status_equals_frequency.test.d.ts +6 -0
  6. package/lib/cjs/tests/api_tests/order_status_equals_frequency.test.d.ts.map +1 -0
  7. package/lib/cjs/tests/api_tests/order_status_equals_frequency.test.js +254 -0
  8. package/lib/cjs/tests/api_tests/order_status_equals_frequency.test.js.map +1 -0
  9. package/lib/cjs/tests/api_tests/organization_api_keys.test.d.ts +6 -0
  10. package/lib/cjs/tests/api_tests/organization_api_keys.test.d.ts.map +1 -0
  11. package/lib/cjs/tests/api_tests/organization_api_keys.test.js +226 -0
  12. package/lib/cjs/tests/api_tests/organization_api_keys.test.js.map +1 -0
  13. package/lib/cjs/tests/tests.d.ts.map +1 -1
  14. package/lib/cjs/tests/tests.js +503 -262
  15. package/lib/cjs/tests/tests.js.map +1 -1
  16. package/lib/esm/sdk.d.ts +4 -0
  17. package/lib/esm/sdk.d.ts.map +1 -1
  18. package/lib/esm/sdk.js +5 -0
  19. package/lib/esm/sdk.js.map +1 -1
  20. package/lib/esm/session.d.ts +1 -0
  21. package/lib/esm/session.d.ts.map +1 -1
  22. package/lib/esm/tests/api_tests/order_status_equals_frequency.test.d.ts +6 -0
  23. package/lib/esm/tests/api_tests/order_status_equals_frequency.test.d.ts.map +1 -0
  24. package/lib/esm/tests/api_tests/order_status_equals_frequency.test.js +250 -0
  25. package/lib/esm/tests/api_tests/order_status_equals_frequency.test.js.map +1 -0
  26. package/lib/esm/tests/api_tests/organization_api_keys.test.d.ts +6 -0
  27. package/lib/esm/tests/api_tests/organization_api_keys.test.d.ts.map +1 -0
  28. package/lib/esm/tests/api_tests/organization_api_keys.test.js +222 -0
  29. package/lib/esm/tests/api_tests/organization_api_keys.test.js.map +1 -0
  30. package/lib/esm/tests/tests.d.ts.map +1 -1
  31. package/lib/esm/tests/tests.js +503 -262
  32. package/lib/esm/tests/tests.js.map +1 -1
  33. package/lib/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +10 -10
  35. package/src/sdk.ts +11 -0
  36. package/src/tests/api_tests/organization_api_keys.test.ts +207 -0
  37. package/src/tests/tests.ts +189 -2
  38. package/test_generated.pdf +0 -0
@@ -128,6 +128,7 @@ var enduser_login_test_1 = require("./api_tests/enduser_login.test");
128
128
  var enduser_login_rate_limits_test_1 = require("./api_tests/enduser_login_rate_limits.test");
129
129
  var eom_procedure_codes_test_1 = require("./api_tests/eom_procedure_codes.test");
130
130
  var cross_org_api_key_test_1 = require("./api_tests/cross_org_api_key.test");
131
+ var organization_api_keys_test_1 = require("./api_tests/organization_api_keys.test");
131
132
  var custom_dashboards_test_1 = require("./api_tests/custom_dashboards.test");
132
133
  var message_assignment_trigger_test_1 = require("./api_tests/message_assignment_trigger.test");
133
134
  var outbound_chat_sent_trigger_test_1 = require("./api_tests/outbound_chat_sent_trigger.test");
@@ -4169,7 +4170,7 @@ var order_created_tests = function () { return __awaiter(void 0, void 0, void 0,
4169
4170
  });
4170
4171
  }); };
4171
4172
  var order_status_equals_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
4172
- var t1, t2, t3, t4, t5, t6, t7, t8, t9, e, u;
4173
+ var t1, t2, t3, t4, t5, t6, t7, t8, t9, tf1, tf2, tf3, tf4, tf5, e, u, ef;
4173
4174
  return __generator(this, function (_a) {
4174
4175
  switch (_a.label) {
4175
4176
  case 0:
@@ -4243,48 +4244,91 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4243
4244
  action: { type: 'Add Tags', info: { tags: ['Protocol Match'] } },
4244
4245
  status: 'Active',
4245
4246
  title: "Protocol Condition"
4246
- })];
4247
+ })
4248
+ // Frequency filter triggers (exact-match array filter, mirrors fills/skus). All use a dedicated
4249
+ // source/status so their assertions stay isolated from the t1-t9 incremental tag-count checks above.
4250
+ ];
4247
4251
  case 9:
4248
4252
  t9 = _a.sent();
4249
- return [4 /*yield*/, sdk.api.endusers.createOne({})];
4253
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4254
+ event: { type: 'Order Status Equals', info: { source: 'FreqSource', status: "FreqStatus" } },
4255
+ action: { type: 'Add Tags', info: { tags: ['Freq No Filter'] } },
4256
+ status: 'Active',
4257
+ title: "Frequency - no filter (backward compat)"
4258
+ })];
4250
4259
  case 10:
4260
+ tf1 = _a.sent();
4261
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4262
+ event: { type: 'Order Status Equals', info: { source: 'FreqSource', status: "FreqStatus", frequencies: ['4', '12'] } },
4263
+ action: { type: 'Add Tags', info: { tags: ['Freq Match'] } },
4264
+ status: 'Active',
4265
+ title: "Frequency - multi-value match"
4266
+ })];
4267
+ case 11:
4268
+ tf2 = _a.sent();
4269
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4270
+ event: { type: 'Order Status Equals', info: { source: 'FreqSource', status: "FreqStatus", frequencies: [] } },
4271
+ action: { type: 'Add Tags', info: { tags: ['Freq Empty All'] } },
4272
+ status: 'Active',
4273
+ title: "Frequency - empty array means all"
4274
+ })];
4275
+ case 12:
4276
+ tf3 = _a.sent();
4277
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4278
+ event: { type: 'Order Status Equals', info: { source: 'FreqSource', status: "FreqShipped", frequencies: ['4'] } },
4279
+ action: { type: 'Add Tags', info: { tags: ['Freq Status Combo'] } },
4280
+ status: 'Active',
4281
+ title: "Frequency + status combination (AND semantics)"
4282
+ })];
4283
+ case 13:
4284
+ tf4 = _a.sent();
4285
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4286
+ event: { type: 'Order Status Equals', info: { source: 'FreqSource', status: "FreqStatus", frequencies: ['12'] } },
4287
+ action: { type: 'Add Tags', info: { tags: ['Freq Match 12'] } },
4288
+ status: 'Active',
4289
+ title: "Frequency - second listed value"
4290
+ })];
4291
+ case 14:
4292
+ tf5 = _a.sent();
4293
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4294
+ case 15:
4251
4295
  e = _a.sent();
4252
4296
  return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Nooo', source: 'Source', title: 'nomatch', externalId: '1', enduserId: e.id })];
4253
- case 11:
4297
+ case 16:
4254
4298
  _a.sent();
4255
4299
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4256
- case 12:
4300
+ case 17:
4257
4301
  _a.sent(); // allow triggers to happen
4258
4302
  return [4 /*yield*/, (0, testing_1.async_test)("No tag is added (no fill)", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })];
4259
- case 13:
4303
+ case 18:
4260
4304
  _a.sent();
4261
4305
  return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Filled', source: 'Source', title: 'nomatch', externalId: '2', enduserId: e.id, fill: 'nomatch' })];
4262
- case 14:
4306
+ case 19:
4263
4307
  _a.sent();
4264
4308
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4265
- case 15:
4309
+ case 20:
4266
4310
  _a.sent(); // allow triggers to happen
4267
4311
  return [4 /*yield*/, (0, testing_1.async_test)("No tag is added (fill mistmatch)", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })];
4268
- case 16:
4312
+ case 21:
4269
4313
  _a.sent();
4270
4314
  return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Status', source: 'Source', externalId: '3', enduserId: e.id, title: "Title" })];
4271
- case 17:
4315
+ case 22:
4272
4316
  _a.sent();
4273
4317
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4274
- case 18:
4318
+ case 23:
4275
4319
  _a.sent(); // allow triggers to happen
4276
4320
  return [4 /*yield*/, (0, testing_1.async_test)("First tag is added", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4277
4321
  var _a, _b;
4278
4322
  return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length) === 1
4279
4323
  && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Source')));
4280
4324
  } })];
4281
- case 19:
4325
+ case 24:
4282
4326
  _a.sent();
4283
4327
  return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Status', source: 'Source', externalId: '4', enduserId: e.id, title: "Title", fill: '1' })];
4284
- case 20:
4328
+ case 25:
4285
4329
  _a.sent();
4286
4330
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4287
- case 21:
4331
+ case 26:
4288
4332
  _a.sent(); // allow triggers to happen
4289
4333
  return [4 /*yield*/, (0, testing_1.async_test)("Fill tag not added yet (mismatch)", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4290
4334
  var _a, _b, _c;
@@ -4292,13 +4336,13 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4292
4336
  && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Source'))
4293
4337
  && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('Fill')));
4294
4338
  } })];
4295
- case 22:
4339
+ case 27:
4296
4340
  _a.sent();
4297
4341
  return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Filled', source: 'Source', externalId: '5', enduserId: e.id, title: "Title", fill: "Fill" })];
4298
- case 23:
4342
+ case 28:
4299
4343
  _a.sent();
4300
4344
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4301
- case 24:
4345
+ case 29:
4302
4346
  _a.sent(); // allow triggers to happen
4303
4347
  return [4 /*yield*/, (0, testing_1.async_test)("Fill tag added", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4304
4348
  var _a, _b, _c;
@@ -4306,16 +4350,16 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4306
4350
  && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Source'))
4307
4351
  && ((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('Fill')));
4308
4352
  } })];
4309
- case 25:
4353
+ case 30:
4310
4354
  _a.sent();
4311
4355
  return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Status', source: 'Source', externalId: '6', enduserId: e.id, title: "Title" })];
4312
- case 26:
4356
+ case 31:
4313
4357
  u = _a.sent();
4314
4358
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: 'Update' })];
4315
- case 27:
4359
+ case 32:
4316
4360
  _a.sent();
4317
4361
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4318
- case 28:
4362
+ case 33:
4319
4363
  _a.sent(); // allow triggers to happen
4320
4364
  return [4 /*yield*/, (0, testing_1.async_test)("Status update tag added", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4321
4365
  var _a, _b, _c, _d;
@@ -4326,18 +4370,18 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4326
4370
  } })
4327
4371
  // duplicate updates get rate limited, so we need to make each update unique
4328
4372
  ];
4329
- case 29:
4373
+ case 34:
4330
4374
  _a.sent();
4331
4375
  // duplicate updates get rate limited, so we need to make each update unique
4332
4376
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: 'Toggle' })];
4333
- case 30:
4377
+ case 35:
4334
4378
  // duplicate updates get rate limited, so we need to make each update unique
4335
4379
  _a.sent();
4336
4380
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: "Update", fill: 'Update', externalId: 'avoid rate limiting' })];
4337
- case 31:
4381
+ case 36:
4338
4382
  _a.sent();
4339
4383
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4340
- case 32:
4384
+ case 37:
4341
4385
  _a.sent(); // allow triggers to happen
4342
4386
  return [4 /*yield*/, (0, testing_1.async_test)("Fill update tag added", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4343
4387
  var _a, _b, _c, _d, _f;
@@ -4347,16 +4391,16 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4347
4391
  && ((_d = e.tags) === null || _d === void 0 ? void 0 : _d.includes('Status Update'))
4348
4392
  && ((_f = e.tags) === null || _f === void 0 ? void 0 : _f.includes('Fill Update')));
4349
4393
  } })];
4350
- case 33:
4394
+ case 38:
4351
4395
  _a.sent();
4352
4396
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: 'Toggle', externalId: "also avoid rate limit 1" })];
4353
- case 34:
4397
+ case 39:
4354
4398
  _a.sent();
4355
4399
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: "Update", sku: 'SK', externalId: 'avoid rate limiting 2' })];
4356
- case 35:
4400
+ case 40:
4357
4401
  _a.sent();
4358
4402
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4359
- case 36:
4403
+ case 41:
4360
4404
  _a.sent(); // allow triggers to happen
4361
4405
  return [4 /*yield*/, (0, testing_1.async_test)("SKU update no match", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4362
4406
  var _a, _b, _c, _d, _f;
@@ -4366,16 +4410,16 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4366
4410
  && ((_d = e.tags) === null || _d === void 0 ? void 0 : _d.includes('Status Update'))
4367
4411
  && ((_f = e.tags) === null || _f === void 0 ? void 0 : _f.includes('Fill Update')));
4368
4412
  } })];
4369
- case 37:
4413
+ case 42:
4370
4414
  _a.sent();
4371
4415
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: 'Toggle', externalId: "also avoid rate limit 2" })];
4372
- case 38:
4416
+ case 43:
4373
4417
  _a.sent();
4374
4418
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: "Update", sku: 'SKU', externalId: 'avoid rate limiting 3' })];
4375
- case 39:
4419
+ case 44:
4376
4420
  _a.sent();
4377
4421
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4378
- case 40:
4422
+ case 45:
4379
4423
  _a.sent(); // allow triggers to happen
4380
4424
  return [4 /*yield*/, (0, testing_1.async_test)("SKU update tag added", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4381
4425
  var _a, _b, _c, _d, _f, _g;
@@ -4386,16 +4430,16 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4386
4430
  && ((_f = e.tags) === null || _f === void 0 ? void 0 : _f.includes('Fill Update'))
4387
4431
  && ((_g = e.tags) === null || _g === void 0 ? void 0 : _g.includes('SKU Update')));
4388
4432
  } })];
4389
- case 41:
4433
+ case 46:
4390
4434
  _a.sent();
4391
4435
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: 'Toggle', externalId: "also avoid rate limit 3" })];
4392
- case 42:
4436
+ case 47:
4393
4437
  _a.sent();
4394
4438
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: "Update", sku: '___SKU-PARTIAL--_' })];
4395
- case 43:
4439
+ case 48:
4396
4440
  _a.sent();
4397
4441
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4398
- case 44:
4442
+ case 49:
4399
4443
  _a.sent(); // allow triggers to happen
4400
4444
  return [4 /*yield*/, (0, testing_1.async_test)("SKU partial update tag added", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4401
4445
  var _a, _b, _c, _d, _f, _g, _h;
@@ -4407,16 +4451,16 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4407
4451
  && ((_g = e.tags) === null || _g === void 0 ? void 0 : _g.includes('SKU Update'))
4408
4452
  && ((_h = e.tags) === null || _h === void 0 ? void 0 : _h.includes('SKU Partial Update')));
4409
4453
  } })];
4410
- case 45:
4454
+ case 50:
4411
4455
  _a.sent();
4412
4456
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: 'Toggle', externalId: "also avoid rate limit 4" })];
4413
- case 46:
4457
+ case 51:
4414
4458
  _a.sent();
4415
4459
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: "Update", title: "TITLE-PARTIAL" })];
4416
- case 47:
4460
+ case 52:
4417
4461
  _a.sent();
4418
4462
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4419
- case 48:
4463
+ case 53:
4420
4464
  _a.sent(); // allow triggers to happen
4421
4465
  return [4 /*yield*/, (0, testing_1.async_test)("Title partial update tag added", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4422
4466
  var _a, _b, _c, _d, _f, _g, _h, _j;
@@ -4429,32 +4473,32 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4429
4473
  && ((_h = e.tags) === null || _h === void 0 ? void 0 : _h.includes('SKU Partial Update'))
4430
4474
  && ((_j = e.tags) === null || _j === void 0 ? void 0 : _j.includes('Title Partial Update')));
4431
4475
  } })];
4432
- case 49:
4476
+ case 54:
4433
4477
  _a.sent();
4434
4478
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: 'Toggle', externalId: "also avoid rate limit 5" })];
4435
- case 50:
4479
+ case 55:
4436
4480
  _a.sent();
4437
4481
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: "Update", title: "PARTIAL-A only" })];
4438
- case 51:
4482
+ case 56:
4439
4483
  _a.sent();
4440
4484
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4441
- case 52:
4485
+ case 57:
4442
4486
  _a.sent(); // allow triggers to happen
4443
4487
  return [4 /*yield*/, (0, testing_1.async_test)("Title partial AND no match (only one partial present)", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4444
4488
  var _a, _b;
4445
4489
  return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length) === 7
4446
4490
  && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Title Partial And Update')));
4447
4491
  } })];
4448
- case 53:
4492
+ case 58:
4449
4493
  _a.sent();
4450
4494
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: 'Toggle', externalId: "also avoid rate limit 6" })];
4451
- case 54:
4495
+ case 59:
4452
4496
  _a.sent();
4453
4497
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: "Update", title: "PARTIAL-A and PARTIAL-B together" })];
4454
- case 55:
4498
+ case 60:
4455
4499
  _a.sent();
4456
4500
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4457
- case 56:
4501
+ case 61:
4458
4502
  _a.sent(); // allow triggers to happen
4459
4503
  return [4 /*yield*/, (0, testing_1.async_test)("Title partial AND update tag added (both partials present)", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4460
4504
  var _a, _b, _c, _d, _f, _g, _h, _j, _k;
@@ -4468,32 +4512,32 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4468
4512
  && ((_j = e.tags) === null || _j === void 0 ? void 0 : _j.includes('Title Partial Update'))
4469
4513
  && ((_k = e.tags) === null || _k === void 0 ? void 0 : _k.includes('Title Partial And Update')));
4470
4514
  } })];
4471
- case 57:
4515
+ case 62:
4472
4516
  _a.sent();
4473
4517
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: 'Toggle', externalId: "also avoid rate limit 7" })];
4474
- case 58:
4518
+ case 63:
4475
4519
  _a.sent();
4476
4520
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: "Update", protocol: 'Protocol-Mismatch', externalId: 'avoid rate limiting 7' })];
4477
- case 59:
4521
+ case 64:
4478
4522
  _a.sent();
4479
4523
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4480
- case 60:
4524
+ case 65:
4481
4525
  _a.sent(); // allow triggers to happen
4482
4526
  return [4 /*yield*/, (0, testing_1.async_test)("Protocol no match (wrong protocol)", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4483
4527
  var _a, _b;
4484
4528
  return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length) === 8
4485
4529
  && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Protocol Match')));
4486
4530
  } })];
4487
- case 61:
4531
+ case 66:
4488
4532
  _a.sent();
4489
4533
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: 'Toggle', externalId: "also avoid rate limit 8" })];
4490
- case 62:
4534
+ case 67:
4491
4535
  _a.sent();
4492
4536
  return [4 /*yield*/, sdk.api.enduser_orders.updateOne(u.id, { status: "Update", protocol: 'Protocol-A', externalId: 'avoid rate limiting 8' })];
4493
- case 63:
4537
+ case 68:
4494
4538
  _a.sent();
4495
4539
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4496
- case 64:
4540
+ case 69:
4497
4541
  _a.sent(); // allow triggers to happen
4498
4542
  return [4 /*yield*/, (0, testing_1.async_test)("Protocol match tag added", function () { return sdk.api.endusers.getOne(e.id); }, { onResult: function (e) {
4499
4543
  var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l;
@@ -4507,8 +4551,121 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4507
4551
  && ((_j = e.tags) === null || _j === void 0 ? void 0 : _j.includes('Title Partial Update'))
4508
4552
  && ((_k = e.tags) === null || _k === void 0 ? void 0 : _k.includes('Title Partial And Update'))
4509
4553
  && ((_l = e.tags) === null || _l === void 0 ? void 0 : _l.includes('Protocol Match')));
4554
+ } })
4555
+ // --- Frequency filter coverage (fresh enduser keeps tag-count assertions isolated) ---
4556
+ ];
4557
+ case 70:
4558
+ _a.sent();
4559
+ return [4 /*yield*/, sdk.api.endusers.createOne({})
4560
+ // Order with NO frequency: no-filter trigger (tf1) and empty-array trigger (tf3) both fire;
4561
+ // populated-filter trigger (tf2) does NOT (missing frequency must never match a populated filter).
4562
+ ];
4563
+ case 71:
4564
+ ef = _a.sent();
4565
+ // Order with NO frequency: no-filter trigger (tf1) and empty-array trigger (tf3) both fire;
4566
+ // populated-filter trigger (tf2) does NOT (missing frequency must never match a populated filter).
4567
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'FreqStatus', source: 'FreqSource', externalId: 'f1', enduserId: ef.id, title: "Freq No Frequency" })];
4568
+ case 72:
4569
+ // Order with NO frequency: no-filter trigger (tf1) and empty-array trigger (tf3) both fire;
4570
+ // populated-filter trigger (tf2) does NOT (missing frequency must never match a populated filter).
4571
+ _a.sent();
4572
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4573
+ case 73:
4574
+ _a.sent(); // allow triggers to happen
4575
+ return [4 /*yield*/, (0, testing_1.async_test)("Frequency: no-filter + empty-array fire for order with no frequency (backward compat)", function () { return sdk.api.endusers.getOne(ef.id); }, { onResult: function (e) {
4576
+ var _a, _b, _c, _d;
4577
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length) === 2
4578
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Freq No Filter'))
4579
+ && ((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('Freq Empty All'))
4580
+ && !((_d = e.tags) === null || _d === void 0 ? void 0 : _d.includes('Freq Match')));
4581
+ } })
4582
+ // Order with a frequency NOT in ['4','12'] -> populated-filter trigger still does not fire.
4583
+ ];
4584
+ case 74:
4585
+ _a.sent();
4586
+ // Order with a frequency NOT in ['4','12'] -> populated-filter trigger still does not fire.
4587
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'FreqStatus', source: 'FreqSource', externalId: 'f2', enduserId: ef.id, title: "Freq 8", frequency: '8' })];
4588
+ case 75:
4589
+ // Order with a frequency NOT in ['4','12'] -> populated-filter trigger still does not fire.
4590
+ _a.sent();
4591
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4592
+ case 76:
4593
+ _a.sent(); // allow triggers to happen
4594
+ return [4 /*yield*/, (0, testing_1.async_test)("Frequency: no match (order frequency '8' not in ['4','12'])", function () { return sdk.api.endusers.getOne(ef.id); }, { onResult: function (e) {
4595
+ var _a, _b;
4596
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length) === 2
4597
+ && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Freq Match')));
4598
+ } })
4599
+ // Order with frequency '4' -> ['4','12'] trigger fires.
4600
+ ];
4601
+ case 77:
4602
+ _a.sent();
4603
+ // Order with frequency '4' -> ['4','12'] trigger fires.
4604
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'FreqStatus', source: 'FreqSource', externalId: 'f3', enduserId: ef.id, title: "Freq 4", frequency: '4' })];
4605
+ case 78:
4606
+ // Order with frequency '4' -> ['4','12'] trigger fires.
4607
+ _a.sent();
4608
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4609
+ case 79:
4610
+ _a.sent(); // allow triggers to happen
4611
+ return [4 /*yield*/, (0, testing_1.async_test)("Frequency: match (order frequency '4' is in ['4','12'])", function () { return sdk.api.endusers.getOne(ef.id); }, { onResult: function (e) {
4612
+ var _a, _b, _c;
4613
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length) === 3
4614
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Freq Match'))
4615
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('Freq Match 12')));
4616
+ } })
4617
+ // Order with frequency '12' -> the second listed value also matches (tf5 frequencies: ['12']).
4618
+ ];
4619
+ case 80:
4620
+ _a.sent();
4621
+ // Order with frequency '12' -> the second listed value also matches (tf5 frequencies: ['12']).
4622
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'FreqStatus', source: 'FreqSource', externalId: 'f4', enduserId: ef.id, title: "Freq 12", frequency: '12' })];
4623
+ case 81:
4624
+ // Order with frequency '12' -> the second listed value also matches (tf5 frequencies: ['12']).
4625
+ _a.sent();
4626
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4627
+ case 82:
4628
+ _a.sent(); // allow triggers to happen
4629
+ return [4 /*yield*/, (0, testing_1.async_test)("Frequency: second listed value '12' also matches", function () { return sdk.api.endusers.getOne(ef.id); }, { onResult: function (e) {
4630
+ var _a, _b;
4631
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length) === 4
4632
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Freq Match 12')));
4633
+ } })
4634
+ // AND semantics: frequency + status must BOTH match. Right frequency, wrong status -> no fire.
4635
+ ];
4636
+ case 83:
4637
+ _a.sent();
4638
+ // AND semantics: frequency + status must BOTH match. Right frequency, wrong status -> no fire.
4639
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'FreqShipped', source: 'FreqSource', externalId: 'f5', enduserId: ef.id, title: "Freq Combo Wrong Freq", frequency: '8' })];
4640
+ case 84:
4641
+ // AND semantics: frequency + status must BOTH match. Right frequency, wrong status -> no fire.
4642
+ _a.sent();
4643
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4644
+ case 85:
4645
+ _a.sent(); // allow triggers to happen
4646
+ return [4 /*yield*/, (0, testing_1.async_test)("Frequency + status combo: status matches but frequency does not -> no fire", function () { return sdk.api.endusers.getOne(ef.id); }, { onResult: function (e) {
4647
+ var _a, _b;
4648
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length) === 4
4649
+ && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Freq Status Combo')));
4650
+ } })
4651
+ // AND semantics: right status AND right frequency -> fires.
4652
+ ];
4653
+ case 86:
4654
+ _a.sent();
4655
+ // AND semantics: right status AND right frequency -> fires.
4656
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'FreqShipped', source: 'FreqSource', externalId: 'f6', enduserId: ef.id, title: "Freq Combo Match", frequency: '4' })];
4657
+ case 87:
4658
+ // AND semantics: right status AND right frequency -> fires.
4659
+ _a.sent();
4660
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4661
+ case 88:
4662
+ _a.sent(); // allow triggers to happen
4663
+ return [4 /*yield*/, (0, testing_1.async_test)("Frequency + status combo: both match -> fires (AND semantics)", function () { return sdk.api.endusers.getOne(ef.id); }, { onResult: function (e) {
4664
+ var _a, _b;
4665
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length) === 5
4666
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('Freq Status Combo')));
4510
4667
  } })];
4511
- case 65:
4668
+ case 89:
4512
4669
  _a.sent();
4513
4670
  return [4 /*yield*/, Promise.all([
4514
4671
  sdk.api.automation_triggers.deleteOne(t1.id),
@@ -4520,9 +4677,15 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4520
4677
  sdk.api.automation_triggers.deleteOne(t7.id),
4521
4678
  sdk.api.automation_triggers.deleteOne(t8.id),
4522
4679
  sdk.api.automation_triggers.deleteOne(t9.id),
4680
+ sdk.api.automation_triggers.deleteOne(tf1.id),
4681
+ sdk.api.automation_triggers.deleteOne(tf2.id),
4682
+ sdk.api.automation_triggers.deleteOne(tf3.id),
4683
+ sdk.api.automation_triggers.deleteOne(tf4.id),
4684
+ sdk.api.automation_triggers.deleteOne(tf5.id),
4523
4685
  sdk.api.endusers.deleteOne(e.id),
4686
+ sdk.api.endusers.deleteOne(ef.id),
4524
4687
  ])];
4525
- case 66:
4688
+ case 90:
4526
4689
  _a.sent();
4527
4690
  return [2 /*return*/];
4528
4691
  }
@@ -8049,7 +8212,7 @@ var filter_by_date_tests = function () { return __awaiter(void 0, void 0, void 0
8049
8212
  }); };
8050
8213
  exports.filter_by_date_tests = filter_by_date_tests;
8051
8214
  var self_serve_appointment_booking_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
8052
- var e1, e2, e3, event15min, event30min, event30minGroup, dayOfWeekStartingSundayIndexedByZero, enduserSDK2, enduserSDK3, nySlots, bookedAppointment, conflict, groupEvent, multiSlots, bookedMultiAppointment, conflict2, conflict3, rescheduleSlots, templatePreserveHosts, originalMultiHostAppt, rescheduledPreserveHosts, templateReplaceHosts, originalForReplace, rescheduledReplaceHosts;
8215
+ var e1, e2, e3, event15min, event30min, event30minGroup, event30minTwilio, event30minZoom, dayOfWeekStartingSundayIndexedByZero, enduserSDK2, enduserSDK3, nySlots, bookedAppointment, conflict, groupEvent, multiSlots, bookedMultiAppointment, conflict2, conflict3, rescheduleSlots, templatePreserveHosts, originalMultiHostAppt, rescheduledPreserveHosts, templateReplaceHosts, originalForReplace, rescheduledReplaceHosts, twilioSlots, bookedTwilioAppointment, zoomSlots, bookedZoomAppointment;
8053
8216
  return __generator(this, function (_a) {
8054
8217
  switch (_a.label) {
8055
8218
  case 0:
@@ -8091,11 +8254,29 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8091
8254
  confirmationEmailDisabled: true,
8092
8255
  confirmationSMSDisabled: true,
8093
8256
  enduserAttendeeLimit: 2,
8257
+ })];
8258
+ case 9:
8259
+ event30minGroup = _a.sent();
8260
+ return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
8261
+ title: 'test twilio', durationInMinutes: 30,
8262
+ confirmationEmailDisabled: true,
8263
+ confirmationSMSDisabled: true,
8264
+ enableVideoCall: true,
8265
+ videoIntegration: 'Twilio',
8266
+ })];
8267
+ case 10:
8268
+ event30minTwilio = _a.sent();
8269
+ return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
8270
+ title: 'test zoom', durationInMinutes: 30,
8271
+ confirmationEmailDisabled: true,
8272
+ confirmationSMSDisabled: true,
8273
+ enableVideoCall: true,
8274
+ videoIntegration: 'Zoom',
8094
8275
  })
8095
8276
  // ensure it doesn't match current day, to avoid errors on testing
8096
8277
  ];
8097
- case 9:
8098
- event30minGroup = _a.sent();
8278
+ case 11:
8279
+ event30minZoom = _a.sent();
8099
8280
  dayOfWeekStartingSundayIndexedByZero = (new Date().getDay() + 1) % 7;
8100
8281
  return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, {
8101
8282
  weeklyAvailabilities: [
@@ -8115,7 +8296,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8115
8296
  }, {
8116
8297
  replaceObjectFields: true,
8117
8298
  })];
8118
- case 10:
8299
+ case 12:
8119
8300
  _a.sent();
8120
8301
  return [4 /*yield*/, sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, {
8121
8302
  weeklyAvailabilities: [
@@ -8130,21 +8311,21 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8130
8311
  }, {
8131
8312
  replaceObjectFields: true,
8132
8313
  })];
8133
- case 11:
8314
+ case 13:
8134
8315
  _a.sent();
8135
8316
  enduserSDK2 = new sdk_1.EnduserSession({ host: host, businessId: businessId });
8136
8317
  return [4 /*yield*/, enduserSDK2.authenticate('sebass+ca@tellescope.com', password).catch(console.error)];
8137
- case 12:
8318
+ case 14:
8138
8319
  _a.sent();
8139
8320
  enduserSDK3 = new sdk_1.EnduserSession({ host: host, businessId: businessId });
8140
8321
  return [4 /*yield*/, enduserSDK3.authenticate('sebass+3@tellescope.com', password).catch(console.error)
8141
8322
  // NY Enduser Tests
8142
8323
  ];
8143
- case 13:
8324
+ case 15:
8144
8325
  _a.sent();
8145
8326
  // NY Enduser Tests
8146
8327
  return [4 /*yield*/, enduserSDK.authenticate('sebass+ny@tellescope.com', password).catch(console.error)];
8147
- case 14:
8328
+ case 16:
8148
8329
  // NY Enduser Tests
8149
8330
  _a.sent();
8150
8331
  return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
@@ -8153,7 +8334,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8153
8334
  to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
8154
8335
  restrictedByState: true,
8155
8336
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 2; } })];
8156
- case 15:
8337
+ case 17:
8157
8338
  _a.sent();
8158
8339
  return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction (called as user)', function () { return sdk.api.calendar_events.get_appointment_availability({
8159
8340
  calendarEventTemplateId: event30min.id,
@@ -8162,7 +8343,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8162
8343
  restrictedByState: true,
8163
8344
  state: "NY", // same state as enduserSDK
8164
8345
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 2; } })];
8165
- case 16:
8346
+ case 18:
8166
8347
  _a.sent();
8167
8348
  return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction with 15 min interval', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
8168
8349
  calendarEventTemplateId: event30min.id,
@@ -8171,7 +8352,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8171
8352
  restrictedByState: true,
8172
8353
  intervalInMinutes: 15,
8173
8354
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 3; } })];
8174
- case 17:
8355
+ case 19:
8175
8356
  _a.sent();
8176
8357
  return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction with 10 min interval', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
8177
8358
  calendarEventTemplateId: event30min.id,
@@ -8180,7 +8361,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8180
8361
  restrictedByState: true,
8181
8362
  intervalInMinutes: 10,
8182
8363
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 4; } })];
8183
- case 18:
8364
+ case 20:
8184
8365
  _a.sent();
8185
8366
  return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for no state restrictions', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
8186
8367
  calendarEventTemplateId: event30min.id,
@@ -8199,7 +8380,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8199
8380
  }
8200
8381
  return true;
8201
8382
  } })];
8202
- case 19:
8383
+ case 21:
8203
8384
  _a.sent();
8204
8385
  return [4 /*yield*/, enduserSDK.api.calendar_events.get_appointment_availability({
8205
8386
  calendarEventTemplateId: event30min.id,
@@ -8207,7 +8388,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8207
8388
  to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
8208
8389
  restrictedByState: true,
8209
8390
  })];
8210
- case 20:
8391
+ case 22:
8211
8392
  nySlots = _a.sent();
8212
8393
  return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
8213
8394
  calendarEventTemplateId: event30min.id,
@@ -8218,7 +8399,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8218
8399
  fields: "Test",
8219
8400
  }
8220
8401
  })];
8221
- case 21:
8402
+ case 23:
8222
8403
  bookedAppointment = (_a.sent()).createdEvent;
8223
8404
  (0, testing_1.assert)(bookedAppointment.attendees.length === 2, 'did not get 2 attendees', '2 attendees fo non-multi-event');
8224
8405
  return [4 /*yield*/, (0, testing_1.async_test)('double-booking prevented', function () { return enduserSDK.api.calendar_events.book_appointment({
@@ -8226,7 +8407,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8226
8407
  startTime: new Date(nySlots.availabilityBlocks[0].startTimeInMS),
8227
8408
  userId: nySlots.availabilityBlocks[0].userId,
8228
8409
  }); }, testing_1.handleAnyError)];
8229
- case 22:
8410
+ case 24:
8230
8411
  _a.sent();
8231
8412
  return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction with 1 overlapping conflict', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
8232
8413
  calendarEventTemplateId: event30min.id,
@@ -8238,7 +8419,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8238
8419
  && r.availabilityBlocks[0].startTimeInMS === nySlots.availabilityBlocks[1].startTimeInMS;
8239
8420
  } // the first slot of nySlots is booked
8240
8421
  })];
8241
- case 23:
8422
+ case 25:
8242
8423
  _a.sent();
8243
8424
  return [4 /*yield*/, sdk.api.calendar_events.createOne({
8244
8425
  title: 'conflict',
@@ -8246,7 +8427,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8246
8427
  durationInMinutes: nySlots.availabilityBlocks[1].durationInMinutes,
8247
8428
  attendees: [{ type: 'user', id: sdk.userInfo.id }]
8248
8429
  })];
8249
- case 24:
8430
+ case 26:
8250
8431
  conflict = _a.sent();
8251
8432
  return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction with 2 overlapping conflict', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
8252
8433
  calendarEventTemplateId: event30min.id,
@@ -8254,7 +8435,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8254
8435
  to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
8255
8436
  restrictedByState: true,
8256
8437
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 0; } })];
8257
- case 25:
8438
+ case 27:
8258
8439
  _a.sent();
8259
8440
  return [4 /*yield*/, (0, testing_1.async_test)('booking against conflict prevented', function () { return enduserSDK.api.calendar_events.book_appointment({
8260
8441
  calendarEventTemplateId: event30min.id,
@@ -8263,11 +8444,11 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8263
8444
  }); }, testing_1.handleAnyError)
8264
8445
  // test group bookings
8265
8446
  ];
8266
- case 26:
8447
+ case 28:
8267
8448
  _a.sent();
8268
8449
  // test group bookings
8269
8450
  return [4 /*yield*/, sdk.api.calendar_events.updateOne(conflict.id, { enduserAttendeeLimit: 2 })];
8270
- case 27:
8451
+ case 29:
8271
8452
  // test group bookings
8272
8453
  _a.sent();
8273
8454
  return [4 /*yield*/, (0, testing_1.async_test)('[group booking] different event type conflict as group still blocks availability', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
@@ -8275,52 +8456,52 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8275
8456
  from: new Date(Date.now() - 10000),
8276
8457
  to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
8277
8458
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 2; } })];
8278
- case 28:
8459
+ case 30:
8279
8460
  _a.sent();
8280
8461
  return [4 /*yield*/, sdk.api.calendar_events.deleteOne(conflict.id)];
8281
- case 29:
8462
+ case 31:
8282
8463
  _a.sent();
8283
8464
  return [4 /*yield*/, (0, testing_1.async_test)('[group booking] availability', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
8284
8465
  calendarEventTemplateId: event30minGroup.id,
8285
8466
  from: new Date(Date.now() - 10000),
8286
8467
  to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
8287
8468
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 3; } })];
8288
- case 30:
8469
+ case 32:
8289
8470
  _a.sent();
8290
8471
  return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
8291
8472
  calendarEventTemplateId: event30minGroup.id,
8292
8473
  startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
8293
8474
  userId: nySlots.availabilityBlocks[1].userId,
8294
8475
  })];
8295
- case 31:
8476
+ case 33:
8296
8477
  groupEvent = (_a.sent()).createdEvent;
8297
8478
  return [4 /*yield*/, (0, testing_1.async_test)('[group booking] more booking allowed', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
8298
8479
  calendarEventTemplateId: event30minGroup.id,
8299
8480
  from: new Date(Date.now() - 10000),
8300
8481
  to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
8301
8482
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 3; } })];
8302
- case 32:
8483
+ case 34:
8303
8484
  _a.sent();
8304
8485
  return [4 /*yield*/, (0, testing_1.async_test)('[group booking] prevent double-book same-enduser', function () { return enduserSDK.api.calendar_events.book_appointment({
8305
8486
  calendarEventTemplateId: event30minGroup.id,
8306
8487
  startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
8307
8488
  userId: nySlots.availabilityBlocks[1].userId,
8308
8489
  }); }, testing_1.handleAnyError)];
8309
- case 33:
8490
+ case 35:
8310
8491
  _a.sent();
8311
8492
  return [4 /*yield*/, (0, testing_1.async_test)('[group booking] allow other enduser to book', function () { return enduserSDK2.api.calendar_events.book_appointment({
8312
8493
  calendarEventTemplateId: event30minGroup.id,
8313
8494
  startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
8314
8495
  userId: nySlots.availabilityBlocks[1].userId,
8315
8496
  }); }, testing_1.passOnAnyResult)];
8316
- case 34:
8497
+ case 36:
8317
8498
  _a.sent();
8318
8499
  return [4 /*yield*/, (0, testing_1.async_test)('[group booking] no more booking allowed', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
8319
8500
  calendarEventTemplateId: event30minGroup.id,
8320
8501
  from: new Date(Date.now() - 10000),
8321
8502
  to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
8322
8503
  }); }, { onResult: function (r) { return r.availabilityBlocks.length === 2; } })];
8323
- case 35:
8504
+ case 37:
8324
8505
  _a.sent();
8325
8506
  return [4 /*yield*/, (0, testing_1.async_test)('[group booking] other enduser cant book over capacity', function () { return enduserSDK3.api.calendar_events.book_appointment({
8326
8507
  calendarEventTemplateId: event30minGroup.id,
@@ -8329,7 +8510,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8329
8510
  }); }, testing_1.handleAnyError)
8330
8511
  // test 'multi' flag for booking multiple providers for a given patient
8331
8512
  ];
8332
- case 36:
8513
+ case 38:
8333
8514
  _a.sent();
8334
8515
  // test 'multi' flag for booking multiple providers for a given patient
8335
8516
  return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, {
@@ -8344,7 +8525,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8344
8525
  }, {
8345
8526
  replaceObjectFields: true,
8346
8527
  })];
8347
- case 37:
8528
+ case 39:
8348
8529
  // test 'multi' flag for booking multiple providers for a given patient
8349
8530
  _a.sent();
8350
8531
  return [4 /*yield*/, sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, {
@@ -8359,7 +8540,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8359
8540
  }, {
8360
8541
  replaceObjectFields: true,
8361
8542
  })];
8362
- case 38:
8543
+ case 40:
8363
8544
  _a.sent();
8364
8545
  return [4 /*yield*/, enduserSDK.api.calendar_events.get_appointment_availability({
8365
8546
  calendarEventTemplateId: event30min.id,
@@ -8368,7 +8549,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8368
8549
  multi: true,
8369
8550
  userIds: [sdk.userInfo.id, sdkNonAdmin.userInfo.id]
8370
8551
  })];
8371
- case 39:
8552
+ case 41:
8372
8553
  multiSlots = _a.sent();
8373
8554
  (0, testing_1.assert)(multiSlots.availabilityBlocks.length === 2, 'expected 2 slots', 'multi slots are intersection of availability');
8374
8555
  return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
@@ -8377,7 +8558,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8377
8558
  userId: sdk.userInfo.id,
8378
8559
  otherUserIds: [sdkNonAdmin.userInfo.id]
8379
8560
  })];
8380
- case 40:
8561
+ case 42:
8381
8562
  bookedMultiAppointment = (_a.sent()).createdEvent;
8382
8563
  (0, testing_1.assert)((bookedMultiAppointment.attendees.length === 3
8383
8564
  && bookedMultiAppointment.attendees.filter(function (a) { return a.type === 'enduser'; }).length === 1), 'did not get valid attendees', 'Multi attendees fo multi-event');
@@ -8386,14 +8567,14 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8386
8567
  startTime: new Date(multiSlots.availabilityBlocks[0].startTimeInMS),
8387
8568
  userId: sdk.userInfo.id,
8388
8569
  }); }, testing_1.handleAnyError)];
8389
- case 41:
8570
+ case 43:
8390
8571
  _a.sent();
8391
8572
  return [4 /*yield*/, (0, testing_1.async_test)('booking against conflict prevented other user', function () { return enduserSDK.api.calendar_events.book_appointment({
8392
8573
  calendarEventTemplateId: event30min.id,
8393
8574
  startTime: new Date(multiSlots.availabilityBlocks[0].startTimeInMS),
8394
8575
  userId: sdkNonAdmin.userInfo.id,
8395
8576
  }); }, testing_1.handleAnyError)];
8396
- case 42:
8577
+ case 44:
8397
8578
  _a.sent();
8398
8579
  return [4 /*yield*/, (0, testing_1.async_test)('booking against conflict prevented 2 users', function () { return enduserSDK.api.calendar_events.book_appointment({
8399
8580
  calendarEventTemplateId: event30min.id,
@@ -8401,7 +8582,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8401
8582
  userId: sdk.userInfo.id,
8402
8583
  otherUserIds: [sdkNonAdmin.userInfo.id],
8403
8584
  }); }, testing_1.handleAnyError)];
8404
- case 43:
8585
+ case 45:
8405
8586
  _a.sent();
8406
8587
  return [4 /*yield*/, sdk.api.calendar_events.createOne({
8407
8588
  title: 'conflict',
@@ -8409,36 +8590,36 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8409
8590
  durationInMinutes: nySlots.availabilityBlocks[0].durationInMinutes,
8410
8591
  attendees: [{ type: 'user', id: sdk.userInfo.id }]
8411
8592
  })];
8412
- case 44:
8593
+ case 46:
8413
8594
  conflict2 = _a.sent();
8414
8595
  return [4 /*yield*/, sdk.api.calendar_events.updateOne(conflict2.id, { bufferEndMinutes: 30 })];
8415
- case 45:
8596
+ case 47:
8416
8597
  _a.sent();
8417
8598
  return [4 /*yield*/, (0, testing_1.async_test)('Event buffer end prevents booking', function () { return enduserSDK.api.calendar_events.book_appointment({
8418
8599
  calendarEventTemplateId: event30min.id,
8419
8600
  startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
8420
8601
  userId: nySlots.availabilityBlocks[1].userId,
8421
8602
  }); }, testing_1.handleAnyError)];
8422
- case 46:
8603
+ case 48:
8423
8604
  _a.sent();
8424
8605
  return [4 /*yield*/, sdk.api.calendar_events.updateOne(conflict2.id, { bufferEndMinutes: 0 })];
8425
- case 47:
8606
+ case 49:
8426
8607
  _a.sent();
8427
8608
  return [4 /*yield*/, sdk.api.calendar_event_templates.updateOne(event30min.id, { bufferStartMinutes: 30 })];
8428
- case 48:
8609
+ case 50:
8429
8610
  _a.sent();
8430
8611
  return [4 /*yield*/, (0, testing_1.async_test)('Template buffer start prevents booking', function () { return enduserSDK.api.calendar_events.book_appointment({
8431
8612
  calendarEventTemplateId: event30min.id,
8432
8613
  startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
8433
8614
  userId: nySlots.availabilityBlocks[1].userId,
8434
8615
  }); }, testing_1.handleAnyError)];
8435
- case 49:
8616
+ case 51:
8436
8617
  _a.sent();
8437
8618
  return [4 /*yield*/, sdk.api.calendar_event_templates.updateOne(event30min.id, { bufferStartMinutes: 0 })];
8438
- case 50:
8619
+ case 52:
8439
8620
  _a.sent();
8440
8621
  return [4 /*yield*/, sdk.api.calendar_events.deleteOne(conflict2.id)];
8441
- case 51:
8622
+ case 53:
8442
8623
  _a.sent();
8443
8624
  return [4 /*yield*/, sdk.api.calendar_events.createOne({
8444
8625
  title: 'conflict',
@@ -8446,23 +8627,23 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8446
8627
  durationInMinutes: nySlots.availabilityBlocks[1].durationInMinutes,
8447
8628
  attendees: [{ type: 'user', id: sdk.userInfo.id }]
8448
8629
  })];
8449
- case 52:
8630
+ case 54:
8450
8631
  conflict3 = _a.sent();
8451
8632
  return [4 /*yield*/, sdk.api.calendar_events.updateOne(conflict3.id, { bufferStartMinutes: 30 })];
8452
- case 53:
8633
+ case 55:
8453
8634
  _a.sent();
8454
8635
  return [4 /*yield*/, (0, testing_1.async_test)('Event buffer start prevents booking', function () { return enduserSDK.api.calendar_events.book_appointment({
8455
8636
  calendarEventTemplateId: event30min.id,
8456
8637
  startTime: new Date(nySlots.availabilityBlocks[0].startTimeInMS),
8457
8638
  userId: nySlots.availabilityBlocks[0].userId,
8458
8639
  }); }, testing_1.handleAnyError)];
8459
- case 54:
8640
+ case 56:
8460
8641
  _a.sent();
8461
8642
  return [4 /*yield*/, sdk.api.calendar_events.updateOne(conflict3.id, { bufferStartMinutes: 0 })];
8462
- case 55:
8643
+ case 57:
8463
8644
  _a.sent();
8464
8645
  return [4 /*yield*/, sdk.api.calendar_event_templates.updateOne(event30min.id, { bufferEndMinutes: 30 })];
8465
- case 56:
8646
+ case 58:
8466
8647
  _a.sent();
8467
8648
  return [4 /*yield*/, (0, testing_1.async_test)('Template buffer end prevents booking', function () { return enduserSDK.api.calendar_events.book_appointment({
8468
8649
  calendarEventTemplateId: event30min.id,
@@ -8471,17 +8652,17 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8471
8652
  }); }, testing_1.handleAnyError)
8472
8653
  // Test reschedule functionality with replaceHostOnReschedule setting
8473
8654
  ];
8474
- case 57:
8655
+ case 59:
8475
8656
  _a.sent();
8476
8657
  // Test reschedule functionality with replaceHostOnReschedule setting
8477
8658
  return [4 /*yield*/, sdk.api.calendar_event_templates.updateOne(event30min.id, { bufferEndMinutes: 0 })];
8478
- case 58:
8659
+ case 60:
8479
8660
  // Test reschedule functionality with replaceHostOnReschedule setting
8480
8661
  _a.sent();
8481
8662
  return [4 /*yield*/, sdk.api.calendar_events.deleteOne(conflict3.id)
8482
8663
  // Setup fresh availability for reschedule tests
8483
8664
  ];
8484
- case 59:
8665
+ case 61:
8485
8666
  _a.sent();
8486
8667
  // Setup fresh availability for reschedule tests
8487
8668
  return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, {
@@ -8496,7 +8677,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8496
8677
  }, {
8497
8678
  replaceObjectFields: true,
8498
8679
  })];
8499
- case 60:
8680
+ case 62:
8500
8681
  // Setup fresh availability for reschedule tests
8501
8682
  _a.sent();
8502
8683
  return [4 /*yield*/, sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, {
@@ -8511,7 +8692,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8511
8692
  }, {
8512
8693
  replaceObjectFields: true,
8513
8694
  })];
8514
- case 61:
8695
+ case 63:
8515
8696
  _a.sent();
8516
8697
  return [4 /*yield*/, enduserSDK.api.calendar_events.get_appointment_availability({
8517
8698
  calendarEventTemplateId: event30min.id,
@@ -8522,7 +8703,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8522
8703
  })
8523
8704
  // Test 1: replaceHostOnReschedule: false (old behavior - preserve all attendees)
8524
8705
  ];
8525
- case 62:
8706
+ case 64:
8526
8707
  rescheduleSlots = _a.sent();
8527
8708
  return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
8528
8709
  title: 'Preserve Hosts Template',
@@ -8531,7 +8712,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8531
8712
  confirmationSMSDisabled: true,
8532
8713
  replaceHostOnReschedule: false, // explicitly set to false
8533
8714
  })];
8534
- case 63:
8715
+ case 65:
8535
8716
  templatePreserveHosts = _a.sent();
8536
8717
  return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
8537
8718
  calendarEventTemplateId: templatePreserveHosts.id,
@@ -8539,7 +8720,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8539
8720
  userId: sdk.userInfo.id,
8540
8721
  otherUserIds: [sdkNonAdmin.userInfo.id], // book with both hosts
8541
8722
  })];
8542
- case 64:
8723
+ case 66:
8543
8724
  originalMultiHostAppt = (_a.sent()).createdEvent;
8544
8725
  (0, testing_1.assert)(originalMultiHostAppt.attendees.filter(function (a) { return a.type === 'user'; }).length === 2, 'Original appointment should have 2 user attendees', 'Original multi-host appointment created');
8545
8726
  return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
@@ -8548,7 +8729,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8548
8729
  startTime: new Date(rescheduleSlots.availabilityBlocks[1].startTimeInMS),
8549
8730
  userId: sdkNonAdmin.userInfo.id, // reschedule with different primary host
8550
8731
  })];
8551
- case 65:
8732
+ case 67:
8552
8733
  rescheduledPreserveHosts = (_a.sent()).createdEvent;
8553
8734
  return [4 /*yield*/, (0, testing_1.async_test)('[reschedule] replaceHostOnReschedule: false preserves all user attendees', function () { return sdk.api.calendar_events.getOne(rescheduledPreserveHosts.id); }, { onResult: function (event) {
8554
8735
  var userAttendees = event.attendees.filter(function (a) { return a.type === 'user'; });
@@ -8570,7 +8751,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8570
8751
  } })
8571
8752
  // Test 2: replaceHostOnReschedule: true (new behavior - replace hosts)
8572
8753
  ];
8573
- case 66:
8754
+ case 68:
8574
8755
  _a.sent();
8575
8756
  return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
8576
8757
  title: 'Replace Hosts Template',
@@ -8579,7 +8760,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8579
8760
  confirmationSMSDisabled: true,
8580
8761
  replaceHostOnReschedule: true, // new default behavior
8581
8762
  })];
8582
- case 67:
8763
+ case 69:
8583
8764
  templateReplaceHosts = _a.sent();
8584
8765
  return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
8585
8766
  calendarEventTemplateId: templateReplaceHosts.id,
@@ -8587,7 +8768,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8587
8768
  userId: sdk.userInfo.id,
8588
8769
  otherUserIds: [sdkNonAdmin.userInfo.id], // book with both hosts
8589
8770
  })];
8590
- case 68:
8771
+ case 70:
8591
8772
  originalForReplace = (_a.sent()).createdEvent;
8592
8773
  (0, testing_1.assert)(originalForReplace.attendees.filter(function (a) { return a.type === 'user'; }).length === 2, 'Original appointment should have 2 user attendees', 'Original multi-host appointment for replace test created');
8593
8774
  return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
@@ -8596,7 +8777,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8596
8777
  startTime: new Date(rescheduleSlots.availabilityBlocks[3].startTimeInMS),
8597
8778
  userId: sdkNonAdmin.userInfo.id, // reschedule with only this host
8598
8779
  })];
8599
- case 69:
8780
+ case 71:
8600
8781
  rescheduledReplaceHosts = (_a.sent()).createdEvent;
8601
8782
  return [4 /*yield*/, (0, testing_1.async_test)('[reschedule] replaceHostOnReschedule: true replaces user attendees with new host only', function () { return sdk.api.calendar_events.getOne(rescheduledReplaceHosts.id); }, { onResult: function (event) {
8602
8783
  var userAttendees = event.attendees.filter(function (a) { return a.type === 'user'; });
@@ -8616,7 +8797,7 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8616
8797
  }
8617
8798
  return true;
8618
8799
  } })];
8619
- case 70:
8800
+ case 72:
8620
8801
  _a.sent();
8621
8802
  return [4 /*yield*/, (0, testing_1.async_test)('[reschedule] replaceHostOnReschedule: true preserves enduser attendees', function () { return sdk.api.calendar_events.getOne(rescheduledReplaceHosts.id); }, { onResult: function (event) {
8622
8803
  var enduserAttendees = event.attendees.filter(function (a) { return a.type === 'enduser'; });
@@ -8632,31 +8813,88 @@ var self_serve_appointment_booking_tests = function () { return __awaiter(void 0
8632
8813
  } })
8633
8814
  // Test 3: Verify old event is marked as rescheduled
8634
8815
  ];
8635
- case 71:
8816
+ case 73:
8636
8817
  _a.sent();
8637
8818
  // Test 3: Verify old event is marked as rescheduled
8638
- return [4 /*yield*/, (0, testing_1.async_test)('[reschedule] original event marked as rescheduled', function () { return sdk.api.calendar_events.getOne(originalForReplace.id); }, { onResult: function (event) { return !!event.rescheduledAt; } })];
8639
- case 72:
8819
+ return [4 /*yield*/, (0, testing_1.async_test)('[reschedule] original event marked as rescheduled', function () { return sdk.api.calendar_events.getOne(originalForReplace.id); }, { onResult: function (event) { return !!event.rescheduledAt; } })
8820
+ // videoIntegration passthrough from template to booked event (Twilio fix + Zoom regression guard)
8821
+ // set up fresh, dedicated availability so this doesn't interfere with the slot-accounting tests above
8822
+ ];
8823
+ case 74:
8640
8824
  // Test 3: Verify old event is marked as rescheduled
8641
8825
  _a.sent();
8826
+ // videoIntegration passthrough from template to booked event (Twilio fix + Zoom regression guard)
8827
+ // set up fresh, dedicated availability so this doesn't interfere with the slot-accounting tests above
8828
+ return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, {
8829
+ weeklyAvailabilities: [
8830
+ {
8831
+ dayOfWeekStartingSundayIndexedByZero: dayOfWeekStartingSundayIndexedByZero,
8832
+ startTimeInMinutes: 60 * 9,
8833
+ endTimeInMinutes: 60 * 11, // 11am,
8834
+ },
8835
+ ],
8836
+ timezone: 'America/New_York',
8837
+ }, {
8838
+ replaceObjectFields: true,
8839
+ })];
8840
+ case 75:
8841
+ // videoIntegration passthrough from template to booked event (Twilio fix + Zoom regression guard)
8842
+ // set up fresh, dedicated availability so this doesn't interfere with the slot-accounting tests above
8843
+ _a.sent();
8844
+ return [4 /*yield*/, enduserSDK.api.calendar_events.get_appointment_availability({
8845
+ calendarEventTemplateId: event30minTwilio.id,
8846
+ from: new Date(Date.now() - 10000),
8847
+ to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
8848
+ userIds: [sdk.userInfo.id],
8849
+ })];
8850
+ case 76:
8851
+ twilioSlots = _a.sent();
8852
+ return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
8853
+ calendarEventTemplateId: event30minTwilio.id,
8854
+ startTime: new Date(twilioSlots.availabilityBlocks[0].startTimeInMS),
8855
+ userId: sdk.userInfo.id,
8856
+ })];
8857
+ case 77:
8858
+ bookedTwilioAppointment = (_a.sent()).createdEvent;
8859
+ (0, testing_1.assert)(bookedTwilioAppointment.videoIntegration === 'Twilio', 'Twilio videoIntegration not propagated to booked event', 'Twilio videoIntegration propagated to booked event');
8860
+ return [4 /*yield*/, enduserSDK.api.calendar_events.get_appointment_availability({
8861
+ calendarEventTemplateId: event30minZoom.id,
8862
+ from: new Date(Date.now() - 10000),
8863
+ to: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000),
8864
+ userIds: [sdk.userInfo.id],
8865
+ })];
8866
+ case 78:
8867
+ zoomSlots = _a.sent();
8868
+ return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
8869
+ calendarEventTemplateId: event30minZoom.id,
8870
+ startTime: new Date(zoomSlots.availabilityBlocks[0].startTimeInMS),
8871
+ userId: sdk.userInfo.id,
8872
+ })];
8873
+ case 79:
8874
+ bookedZoomAppointment = (_a.sent()).createdEvent;
8875
+ (0, testing_1.assert)(bookedZoomAppointment.videoIntegration === 'Zoom', 'Zoom videoIntegration not propagated to booked event', 'Zoom videoIntegration propagated to booked event');
8642
8876
  return [4 /*yield*/, Promise.all([
8643
8877
  sdk.api.endusers.deleteOne(e1.id),
8644
8878
  sdk.api.endusers.deleteOne(e2.id),
8645
8879
  sdk.api.endusers.deleteOne(e3.id),
8646
8880
  sdk.api.calendar_event_templates.deleteOne(event30min.id),
8647
8881
  sdk.api.calendar_event_templates.deleteOne(event30minGroup.id),
8882
+ sdk.api.calendar_event_templates.deleteOne(event30minTwilio.id),
8883
+ sdk.api.calendar_event_templates.deleteOne(event30minZoom.id),
8648
8884
  sdk.api.calendar_event_templates.deleteOne(event15min.id),
8649
8885
  sdk.api.calendar_event_templates.deleteOne(templatePreserveHosts.id),
8650
8886
  sdk.api.calendar_event_templates.deleteOne(templateReplaceHosts.id),
8651
8887
  sdk.api.calendar_events.deleteOne(bookedAppointment.id),
8652
8888
  sdk.api.calendar_events.deleteOne(bookedMultiAppointment.id),
8889
+ sdk.api.calendar_events.deleteOne(bookedTwilioAppointment.id),
8890
+ sdk.api.calendar_events.deleteOne(bookedZoomAppointment.id),
8653
8891
  sdk.api.calendar_events.deleteOne(groupEvent.id),
8654
8892
  sdk.api.calendar_events.deleteOne(originalMultiHostAppt.id),
8655
8893
  sdk.api.calendar_events.deleteOne(rescheduledPreserveHosts.id),
8656
8894
  sdk.api.calendar_events.deleteOne(originalForReplace.id),
8657
8895
  sdk.api.calendar_events.deleteOne(rescheduledReplaceHosts.id),
8658
8896
  ])];
8659
- case 73:
8897
+ case 80:
8660
8898
  _a.sent();
8661
8899
  return [2 /*return*/];
8662
8900
  }
@@ -16741,7 +16979,7 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16741
16979
  (0, testing_1.assert)((0, utilities_1.truncate_string)(null, { length: 4, showEllipsis: false }) === '', 'truncate doesnt work for non string', 'trucate works for non-string');
16742
16980
  _l.label = 2;
16743
16981
  case 2:
16744
- _l.trys.push([2, 154, , 155]);
16982
+ _l.trys.push([2, 155, , 156]);
16745
16983
  get_next_reminder_timestamp_tests();
16746
16984
  (0, exports.form_conditional_logic_tests)();
16747
16985
  return [4 /*yield*/, test_weighted_round_robin()];
@@ -16972,333 +17210,336 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16972
17210
  return [4 /*yield*/, (0, cross_org_api_key_test_1.cross_org_api_key_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16973
17211
  case 46:
16974
17212
  _l.sent();
16975
- return [4 /*yield*/, (0, organization_settings_duplicates_test_1.organization_settings_duplicates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17213
+ return [4 /*yield*/, (0, organization_api_keys_test_1.organization_api_keys_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16976
17214
  case 47:
16977
17215
  _l.sent();
16978
- return [4 /*yield*/, (0, enduser_session_invalidation_test_1.enduser_session_invalidation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17216
+ return [4 /*yield*/, (0, organization_settings_duplicates_test_1.organization_settings_duplicates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16979
17217
  case 48:
16980
17218
  _l.sent();
16981
- return [4 /*yield*/, (0, chats_analytics_test_1.chats_analytics_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17219
+ return [4 /*yield*/, (0, enduser_session_invalidation_test_1.enduser_session_invalidation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16982
17220
  case 49:
16983
17221
  _l.sent();
16984
- return [4 /*yield*/, (0, field_redaction_test_1.field_redaction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17222
+ return [4 /*yield*/, (0, chats_analytics_test_1.chats_analytics_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16985
17223
  case 50:
16986
17224
  _l.sent();
16987
- return [4 /*yield*/, (0, form_submitted_trigger_test_1.form_submitted_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17225
+ return [4 /*yield*/, (0, field_redaction_test_1.field_redaction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16988
17226
  case 51:
16989
17227
  _l.sent();
16990
- return [4 /*yield*/, (0, date_string_validation_test_1.date_string_validation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17228
+ return [4 /*yield*/, (0, form_submitted_trigger_test_1.form_submitted_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16991
17229
  case 52:
16992
17230
  _l.sent();
16993
- return [4 /*yield*/, (0, openloop_webhooks_test_1.openloop_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17231
+ return [4 /*yield*/, (0, date_string_validation_test_1.date_string_validation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16994
17232
  case 53:
16995
17233
  _l.sent();
16996
- return [4 /*yield*/, (0, mdi_webhooks_test_1.mdi_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17234
+ return [4 /*yield*/, (0, openloop_webhooks_test_1.openloop_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16997
17235
  case 54:
16998
17236
  _l.sent();
16999
- return [4 /*yield*/, (0, integrations_redacted_test_1.integrations_redacted_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17237
+ return [4 /*yield*/, (0, mdi_webhooks_test_1.mdi_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17000
17238
  case 55:
17001
17239
  _l.sent();
17002
- return [4 /*yield*/, (0, mdb_sort_test_1.mdb_sort_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17240
+ return [4 /*yield*/, (0, integrations_redacted_test_1.integrations_redacted_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17003
17241
  case 56:
17004
17242
  _l.sent();
17005
- return [4 /*yield*/, search_tests()];
17243
+ return [4 /*yield*/, (0, mdb_sort_test_1.mdb_sort_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17006
17244
  case 57:
17007
17245
  _l.sent();
17008
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17246
+ return [4 /*yield*/, search_tests()];
17009
17247
  case 58:
17010
17248
  _l.sent();
17011
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_historical_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17249
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17012
17250
  case 59:
17013
17251
  _l.sent();
17014
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_correction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17252
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_historical_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17015
17253
  case 60:
17016
17254
  _l.sent();
17017
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_review_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17255
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_correction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17018
17256
  case 61:
17019
17257
  _l.sent();
17020
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_lock_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17258
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_review_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17021
17259
  case 62:
17022
17260
  _l.sent();
17023
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_edge_case_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17261
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_lock_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17024
17262
  case 63:
17025
17263
  _l.sent();
17026
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_resubmit_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17264
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_edge_case_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17027
17265
  case 64:
17028
17266
  _l.sent();
17029
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_appointment_duration_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17267
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_resubmit_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17030
17268
  case 65:
17031
17269
  _l.sent();
17032
- return [4 /*yield*/, (0, calendar_event_limits_test_1.calendar_event_limits_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17270
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_appointment_duration_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17033
17271
  case 66:
17034
17272
  _l.sent();
17035
- return [4 /*yield*/, (0, get_some_projection_test_1.get_some_projection_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17273
+ return [4 /*yield*/, (0, calendar_event_limits_test_1.calendar_event_limits_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17036
17274
  case 67:
17037
17275
  _l.sent();
17038
- return [4 /*yield*/, (0, elation_user_id_test_1.elation_user_id_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17276
+ return [4 /*yield*/, (0, get_some_projection_test_1.get_some_projection_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17039
17277
  case 68:
17040
17278
  _l.sent();
17041
- return [4 /*yield*/, (0, custom_dashboards_test_1.custom_dashboards_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17279
+ return [4 /*yield*/, (0, elation_user_id_test_1.elation_user_id_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17042
17280
  case 69:
17043
17281
  _l.sent();
17044
- return [4 /*yield*/, (0, concurrent_build_threads_test_1.concurrent_build_threads_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17282
+ return [4 /*yield*/, (0, custom_dashboards_test_1.custom_dashboards_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17045
17283
  case 70:
17046
17284
  _l.sent();
17047
- return [4 /*yield*/, (0, custom_aggregation_test_1.custom_aggregation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17285
+ return [4 /*yield*/, (0, concurrent_build_threads_test_1.concurrent_build_threads_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17048
17286
  case 71:
17049
17287
  _l.sent();
17050
- return [4 /*yield*/, (0, no_access_permission_checks_test_1.no_access_permission_checks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17288
+ return [4 /*yield*/, (0, custom_aggregation_test_1.custom_aggregation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17051
17289
  case 72:
17052
17290
  _l.sent();
17053
- return [4 /*yield*/, enduser_tests()];
17291
+ return [4 /*yield*/, (0, no_access_permission_checks_test_1.no_access_permission_checks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17054
17292
  case 73:
17055
17293
  _l.sent();
17056
- return [4 /*yield*/, (0, form_started_trigger_test_1.form_started_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17294
+ return [4 /*yield*/, enduser_tests()];
17057
17295
  case 74:
17058
17296
  _l.sent();
17059
- return [4 /*yield*/, (0, load_team_chat_test_1.load_team_chat_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17297
+ return [4 /*yield*/, (0, form_started_trigger_test_1.form_started_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17060
17298
  case 75:
17061
17299
  _l.sent();
17062
- return [4 /*yield*/, (0, ai_conversations_test_1.ai_conversations_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17300
+ return [4 /*yield*/, (0, load_team_chat_test_1.load_team_chat_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17063
17301
  case 76:
17064
17302
  _l.sent();
17065
- return [4 /*yield*/, (0, inbox_thread_assignment_updates_test_1.inbox_thread_assignment_updates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17303
+ return [4 /*yield*/, (0, ai_conversations_test_1.ai_conversations_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17066
17304
  case 77:
17067
17305
  _l.sent();
17068
- return [4 /*yield*/, (0, inbox_thread_draft_scheduled_test_1.inbox_thread_draft_scheduled_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17306
+ return [4 /*yield*/, (0, inbox_thread_assignment_updates_test_1.inbox_thread_assignment_updates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17069
17307
  case 78:
17070
17308
  _l.sent();
17071
- return [4 /*yield*/, (0, load_threads_autobuild_test_1.load_threads_autobuild_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17309
+ return [4 /*yield*/, (0, inbox_thread_draft_scheduled_test_1.inbox_thread_draft_scheduled_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17072
17310
  case 79:
17073
17311
  _l.sent();
17074
- return [4 /*yield*/, inbox_threads_new_fields_tests()];
17312
+ return [4 /*yield*/, (0, load_threads_autobuild_test_1.load_threads_autobuild_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17075
17313
  case 80:
17076
17314
  _l.sent();
17077
- return [4 /*yield*/, (0, auto_merge_form_submission_test_1.auto_merge_form_submission_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17315
+ return [4 /*yield*/, inbox_threads_new_fields_tests()];
17078
17316
  case 81:
17079
17317
  _l.sent();
17080
- return [4 /*yield*/, threadKeyTests()];
17318
+ return [4 /*yield*/, (0, auto_merge_form_submission_test_1.auto_merge_form_submission_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17081
17319
  case 82:
17082
17320
  _l.sent();
17083
- return [4 /*yield*/, (0, managed_content_enduser_access_test_1.managed_content_enduser_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17321
+ return [4 /*yield*/, threadKeyTests()];
17084
17322
  case 83:
17085
17323
  _l.sent();
17086
- return [4 /*yield*/, (0, managed_content_file_access_test_1.managed_content_file_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17324
+ return [4 /*yield*/, (0, managed_content_enduser_access_test_1.managed_content_enduser_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17087
17325
  case 84:
17088
17326
  _l.sent();
17089
- return [4 /*yield*/, (0, afteraction_day_of_month_delay_test_1.afteraction_day_of_month_delay_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17327
+ return [4 /*yield*/, (0, managed_content_file_access_test_1.managed_content_file_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17090
17328
  case 85:
17091
17329
  _l.sent();
17092
- return [4 /*yield*/, (0, bulk_assignment_test_1.bulk_assignment_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17330
+ return [4 /*yield*/, (0, afteraction_day_of_month_delay_test_1.afteraction_day_of_month_delay_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17093
17331
  case 86:
17094
17332
  _l.sent();
17095
- return [4 /*yield*/, (0, exports.formsort_tests)()];
17333
+ return [4 /*yield*/, (0, bulk_assignment_test_1.bulk_assignment_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17096
17334
  case 87:
17097
17335
  _l.sent();
17098
- return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
17336
+ return [4 /*yield*/, (0, exports.formsort_tests)()];
17099
17337
  case 88:
17100
17338
  _l.sent();
17101
- return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
17339
+ return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
17102
17340
  case 89:
17103
17341
  _l.sent();
17104
- return [4 /*yield*/, (0, monthly_availability_restrictions_test_1.monthly_availability_restrictions_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17342
+ return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
17105
17343
  case 90:
17106
17344
  _l.sent();
17107
- return [4 /*yield*/, (0, journey_error_branching_test_1.journey_error_branching_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17345
+ return [4 /*yield*/, (0, monthly_availability_restrictions_test_1.monthly_availability_restrictions_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17108
17346
  case 91:
17109
17347
  _l.sent();
17110
- return [4 /*yield*/, (0, message_assignment_trigger_test_1.message_assignment_trigger_tests)({ sdk: sdk })];
17348
+ return [4 /*yield*/, (0, journey_error_branching_test_1.journey_error_branching_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17111
17349
  case 92:
17112
17350
  _l.sent();
17113
- return [4 /*yield*/, inbox_threads_building_tests()];
17351
+ return [4 /*yield*/, (0, message_assignment_trigger_test_1.message_assignment_trigger_tests)({ sdk: sdk })];
17114
17352
  case 93:
17115
17353
  _l.sent();
17116
- return [4 /*yield*/, inbox_threads_loading_tests()];
17354
+ return [4 /*yield*/, inbox_threads_building_tests()];
17117
17355
  case 94:
17118
17356
  _l.sent();
17119
- return [4 /*yield*/, (0, load_inbox_data_test_1.load_inbox_data_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17357
+ return [4 /*yield*/, inbox_threads_loading_tests()];
17120
17358
  case 95:
17121
17359
  _l.sent();
17122
- return [4 /*yield*/, (0, enduser_observations_acknowledge_test_1.enduser_observations_acknowledge_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17360
+ return [4 /*yield*/, (0, load_inbox_data_test_1.load_inbox_data_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17123
17361
  case 96:
17124
17362
  _l.sent();
17125
- return [4 /*yield*/, (0, create_user_notifications_trigger_test_1.create_user_notifications_trigger_tests)({ sdk: sdk })];
17363
+ return [4 /*yield*/, (0, enduser_observations_acknowledge_test_1.enduser_observations_acknowledge_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17126
17364
  case 97:
17127
17365
  _l.sent();
17128
- return [4 /*yield*/, group_mms_active_tests()];
17366
+ return [4 /*yield*/, (0, create_user_notifications_trigger_test_1.create_user_notifications_trigger_tests)({ sdk: sdk })];
17129
17367
  case 98:
17130
17368
  _l.sent();
17131
- return [4 /*yield*/, auto_reply_tests()];
17369
+ return [4 /*yield*/, group_mms_active_tests()];
17132
17370
  case 99:
17133
17371
  _l.sent();
17134
- return [4 /*yield*/, (0, exports.relationships_tests)()];
17372
+ return [4 /*yield*/, auto_reply_tests()];
17135
17373
  case 100:
17136
17374
  _l.sent();
17137
- return [4 /*yield*/, rate_limit_tests()];
17375
+ return [4 /*yield*/, (0, exports.relationships_tests)()];
17138
17376
  case 101:
17139
17377
  _l.sent();
17140
- return [4 /*yield*/, ip_address_form_tests()];
17378
+ return [4 /*yield*/, rate_limit_tests()];
17141
17379
  case 102:
17142
17380
  _l.sent();
17143
- return [4 /*yield*/, bulk_update_tests()];
17381
+ return [4 /*yield*/, ip_address_form_tests()];
17144
17382
  case 103:
17145
17383
  _l.sent();
17146
- return [4 /*yield*/, (0, calendar_events_bulk_update_test_1.calendar_events_bulk_update_tests)({ sdk: sdk })];
17384
+ return [4 /*yield*/, bulk_update_tests()];
17147
17385
  case 104:
17148
17386
  _l.sent();
17149
- return [4 /*yield*/, (0, exports.cancel_upcoming_appointments_journey_action_test)()];
17387
+ return [4 /*yield*/, (0, calendar_events_bulk_update_test_1.calendar_events_bulk_update_tests)({ sdk: sdk })];
17150
17388
  case 105:
17151
17389
  _l.sent();
17152
- return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
17390
+ return [4 /*yield*/, (0, exports.cancel_upcoming_appointments_journey_action_test)()];
17153
17391
  case 106:
17392
+ _l.sent();
17393
+ return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
17394
+ case 107:
17154
17395
  _l.sent(); // should come right after setup tests
17155
17396
  return [4 /*yield*/, sync_tests_with_access_tags()]; // should come directly after setup to avoid extra sync values
17156
- case 107:
17397
+ case 108:
17157
17398
  _l.sent(); // should come directly after setup to avoid extra sync values
17158
17399
  return [4 /*yield*/, sync_tests()]; // should come directly after setup to avoid extra sync values
17159
- case 108:
17400
+ case 109:
17160
17401
  _l.sent(); // should come directly after setup to avoid extra sync values
17161
17402
  return [4 /*yield*/, get_templated_message_tests()];
17162
- case 109:
17403
+ case 110:
17163
17404
  _l.sent();
17164
17405
  return [4 /*yield*/, updatedAt_tests()];
17165
- case 110:
17406
+ case 111:
17166
17407
  _l.sent();
17167
17408
  return [4 /*yield*/, file_source_tests()];
17168
- case 111:
17409
+ case 112:
17169
17410
  _l.sent();
17170
17411
  return [4 /*yield*/, enduser_access_tags_tests()];
17171
- case 112:
17412
+ case 113:
17172
17413
  _l.sent();
17173
17414
  return [4 /*yield*/, enduserAccessTests()];
17174
- case 113:
17415
+ case 114:
17175
17416
  _l.sent();
17176
17417
  return [4 /*yield*/, test_form_response_search()];
17177
- case 114:
17418
+ case 115:
17178
17419
  _l.sent();
17179
17420
  return [4 /*yield*/, date_parsing_tests()];
17180
- case 115:
17421
+ case 116:
17181
17422
  _l.sent();
17182
17423
  return [4 /*yield*/, fromEmailOverride_tests()];
17183
- case 116:
17424
+ case 117:
17184
17425
  _l.sent();
17185
17426
  return [4 /*yield*/, ticket_tests()];
17186
- case 117:
17427
+ case 118:
17187
17428
  _l.sent();
17188
17429
  return [4 /*yield*/, uniqueness_tests()];
17189
- case 118:
17430
+ case 119:
17190
17431
  _l.sent();
17191
17432
  return [4 /*yield*/, (0, exports.enduser_orders_tests)()];
17192
- case 119:
17433
+ case 120:
17193
17434
  _l.sent();
17194
17435
  return [4 /*yield*/, calendar_event_care_team_tests()];
17195
- case 120:
17436
+ case 121:
17196
17437
  _l.sent();
17197
17438
  return [4 /*yield*/, merge_enduser_tests()];
17198
- case 121:
17439
+ case 122:
17199
17440
  _l.sent();
17200
17441
  return [4 /*yield*/, input_modifier_tests()];
17201
- case 122:
17442
+ case 123:
17202
17443
  _l.sent();
17203
17444
  return [4 /*yield*/, (0, exports.switch_to_related_contacts_tests)()];
17204
- case 123:
17445
+ case 124:
17205
17446
  _l.sent();
17206
17447
  return [4 /*yield*/, redaction_tests()];
17207
- case 124:
17448
+ case 125:
17208
17449
  _l.sent();
17209
17450
  return [4 /*yield*/, (0, exports.no_chained_triggers_tests)()];
17210
- case 125:
17451
+ case 126:
17211
17452
  _l.sent();
17212
17453
  return [4 /*yield*/, mdb_filter_tests()];
17213
- case 126:
17454
+ case 127:
17214
17455
  _l.sent();
17215
17456
  return [4 /*yield*/, superadmin_tests()];
17216
- case 127:
17457
+ case 128:
17217
17458
  _l.sent();
17218
17459
  return [4 /*yield*/, (0, exports.ticket_queue_tests)()];
17219
- case 128:
17460
+ case 129:
17220
17461
  _l.sent();
17221
17462
  return [4 /*yield*/, vital_trigger_tests()];
17222
- case 129:
17463
+ case 130:
17223
17464
  _l.sent();
17224
17465
  return [4 /*yield*/, close_reasons_no_duplicates_tests()];
17225
- case 130:
17466
+ case 131:
17226
17467
  _l.sent();
17227
17468
  return [4 /*yield*/, register_as_enduser_tests()];
17228
- case 131:
17469
+ case 132:
17229
17470
  _l.sent();
17230
17471
  return [4 /*yield*/, lockout_tests()];
17231
- case 132:
17472
+ case 133:
17232
17473
  _l.sent();
17233
17474
  return [4 /*yield*/, delete_user_tests()
17234
17475
  // await test_send_with_template()
17235
17476
  ];
17236
- case 133:
17477
+ case 134:
17237
17478
  _l.sent();
17238
17479
  // await test_send_with_template()
17239
17480
  return [4 /*yield*/, bulk_read_tests()];
17240
- case 134:
17481
+ case 135:
17241
17482
  // await test_send_with_template()
17242
17483
  _l.sent();
17243
17484
  return [4 /*yield*/, (0, exports.ticket_reminder_tests)()];
17244
- case 135:
17485
+ case 136:
17245
17486
  _l.sent();
17246
17487
  return [4 /*yield*/, marketing_email_unsubscribe_tests()];
17247
- case 136:
17488
+ case 137:
17248
17489
  _l.sent();
17249
17490
  return [4 /*yield*/, unique_strings_tests()];
17250
- case 137:
17491
+ case 138:
17251
17492
  _l.sent();
17252
17493
  return [4 /*yield*/, (0, exports.alternate_phones_tests)()];
17253
- case 138:
17494
+ case 139:
17254
17495
  _l.sent();
17255
17496
  return [4 /*yield*/, role_based_access_tests()];
17256
- case 139:
17497
+ case 140:
17257
17498
  _l.sent();
17258
17499
  return [4 /*yield*/, enduser_session_tests()];
17259
- case 140:
17500
+ case 141:
17260
17501
  _l.sent();
17261
17502
  return [4 /*yield*/, nextReminderInMS_tests()];
17262
- case 141:
17503
+ case 142:
17263
17504
  _l.sent();
17264
17505
  return [4 /*yield*/, wait_for_trigger_tests()];
17265
- case 142:
17506
+ case 143:
17266
17507
  _l.sent();
17267
17508
  return [4 /*yield*/, pdf_generation()];
17268
- case 143:
17509
+ case 144:
17269
17510
  _l.sent();
17270
17511
  return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests().catch(console.error)]; // timing is unreliable, uncomment if changing logic
17271
- case 144:
17512
+ case 145:
17272
17513
  _l.sent(); // timing is unreliable, uncomment if changing logic
17273
17514
  return [4 /*yield*/, sub_organization_enduser_tests()];
17274
- case 145:
17275
- _l.sent();
17276
- return [4 /*yield*/, sub_organization_tests()];
17277
17515
  case 146:
17278
17516
  _l.sent();
17279
- return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
17517
+ return [4 /*yield*/, sub_organization_tests()];
17280
17518
  case 147:
17281
17519
  _l.sent();
17282
- return [4 /*yield*/, generate_user_auth_tests()];
17520
+ return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
17283
17521
  case 148:
17284
17522
  _l.sent();
17285
- return [4 /*yield*/, generateEnduserAuthTests()];
17523
+ return [4 /*yield*/, generate_user_auth_tests()];
17286
17524
  case 149:
17287
17525
  _l.sent();
17288
- return [4 /*yield*/, public_form_tests()];
17526
+ return [4 /*yield*/, generateEnduserAuthTests()];
17289
17527
  case 150:
17290
17528
  _l.sent();
17291
- return [4 /*yield*/, badInputTests()];
17529
+ return [4 /*yield*/, public_form_tests()];
17292
17530
  case 151:
17293
17531
  _l.sent();
17294
- return [4 /*yield*/, filterTests()];
17532
+ return [4 /*yield*/, badInputTests()];
17295
17533
  case 152:
17296
17534
  _l.sent();
17297
- return [4 /*yield*/, updatesTests()];
17535
+ return [4 /*yield*/, filterTests()];
17298
17536
  case 153:
17299
17537
  _l.sent();
17300
- return [3 /*break*/, 155];
17538
+ return [4 /*yield*/, updatesTests()];
17301
17539
  case 154:
17540
+ _l.sent();
17541
+ return [3 /*break*/, 156];
17542
+ case 155:
17302
17543
  err_1 = _l.sent();
17303
17544
  console.error("Failed during custom test");
17304
17545
  if (err_1.message && err_1.info) {
@@ -17308,18 +17549,18 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
17308
17549
  console.error(err_1);
17309
17550
  }
17310
17551
  process.exit(1);
17311
- return [3 /*break*/, 155];
17312
- case 155:
17552
+ return [3 /*break*/, 156];
17553
+ case 156:
17313
17554
  _a = schema_1.schema;
17314
17555
  _b = [];
17315
17556
  for (_c in _a)
17316
17557
  _b.push(_c);
17317
17558
  _i = 0;
17318
- _l.label = 156;
17319
- case 156:
17320
- if (!(_i < _b.length)) return [3 /*break*/, 159];
17559
+ _l.label = 157;
17560
+ case 157:
17561
+ if (!(_i < _b.length)) return [3 /*break*/, 160];
17321
17562
  _c = _b[_i];
17322
- if (!(_c in _a)) return [3 /*break*/, 158];
17563
+ if (!(_c in _a)) return [3 /*break*/, 159];
17323
17564
  n = _c;
17324
17565
  returnValidation = (_k = (_j = schema_1.schema[n].customActions) === null || _j === void 0 ? void 0 : _j.create) === null || _k === void 0 ? void 0 : _k.returns;
17325
17566
  return [4 /*yield*/, run_generated_tests({
@@ -17330,41 +17571,41 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
17330
17571
  create: returnValidation // ModelFields<ClientModel>,
17331
17572
  }
17332
17573
  })];
17333
- case 157:
17334
- _l.sent();
17335
- _l.label = 158;
17336
17574
  case 158:
17337
- _i++;
17338
- return [3 /*break*/, 156];
17575
+ _l.sent();
17576
+ _l.label = 159;
17339
17577
  case 159:
17578
+ _i++;
17579
+ return [3 /*break*/, 157];
17580
+ case 160:
17340
17581
  _d = tests;
17341
17582
  _f = [];
17342
17583
  for (_g in _d)
17343
17584
  _f.push(_g);
17344
17585
  _h = 0;
17345
- _l.label = 160;
17346
- case 160:
17347
- if (!(_h < _f.length)) return [3 /*break*/, 165];
17348
- _g = _f[_h];
17349
- if (!(_g in _d)) return [3 /*break*/, 164];
17350
- t = _g;
17351
17586
  _l.label = 161;
17352
17587
  case 161:
17353
- _l.trys.push([161, 163, , 164]);
17354
- return [4 /*yield*/, tests[t]()];
17588
+ if (!(_h < _f.length)) return [3 /*break*/, 166];
17589
+ _g = _f[_h];
17590
+ if (!(_g in _d)) return [3 /*break*/, 165];
17591
+ t = _g;
17592
+ _l.label = 162;
17355
17593
  case 162:
17356
- _l.sent();
17357
- return [3 /*break*/, 164];
17594
+ _l.trys.push([162, 164, , 165]);
17595
+ return [4 /*yield*/, tests[t]()];
17358
17596
  case 163:
17597
+ _l.sent();
17598
+ return [3 /*break*/, 165];
17599
+ case 164:
17359
17600
  err_2 = _l.sent();
17360
17601
  console.error("Error running test:");
17361
17602
  console.error(err_2);
17362
17603
  process.exit(1);
17363
- return [3 /*break*/, 164];
17364
- case 164:
17365
- _h++;
17366
- return [3 /*break*/, 160];
17604
+ return [3 /*break*/, 165];
17367
17605
  case 165:
17606
+ _h++;
17607
+ return [3 /*break*/, 161];
17608
+ case 166:
17368
17609
  process.exit();
17369
17610
  return [2 /*return*/];
17370
17611
  }