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