@tellescope/sdk 1.253.0 → 1.254.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 (98) 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/tests/api_tests/_tmp_bc_verify.test.d.ts.map +1 -0
  4. package/lib/cjs/tests/api_tests/_tmp_blank_status_verify.test.d.ts.map +1 -0
  5. package/lib/cjs/tests/api_tests/_tmp_followup_verify.test.d.ts.map +1 -0
  6. package/lib/cjs/tests/api_tests/_tmp_nonmatch_verify.test.d.ts.map +1 -0
  7. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.d.ts +6 -0
  8. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.d.ts.map +1 -0
  9. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.js +256 -0
  10. package/lib/cjs/tests/api_tests/beluga_manual_sync.test.js.map +1 -0
  11. package/lib/cjs/tests/api_tests/field_redaction.test.d.ts.map +1 -1
  12. package/lib/cjs/tests/api_tests/field_redaction.test.js +112 -99
  13. package/lib/cjs/tests/api_tests/field_redaction.test.js.map +1 -1
  14. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.d.ts +43 -0
  15. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.d.ts.map +1 -0
  16. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.js +168 -0
  17. package/lib/cjs/tests/api_tests/gcal_sync_retry.test.js.map +1 -0
  18. package/lib/cjs/tests/api_tests/journey_error_branching.test.js +7 -2
  19. package/lib/cjs/tests/api_tests/journey_error_branching.test.js.map +1 -1
  20. package/lib/cjs/tests/api_tests/resource_access_tags.test.d.ts +22 -0
  21. package/lib/cjs/tests/api_tests/resource_access_tags.test.d.ts.map +1 -0
  22. package/lib/cjs/tests/api_tests/resource_access_tags.test.js +488 -0
  23. package/lib/cjs/tests/api_tests/resource_access_tags.test.js.map +1 -0
  24. package/lib/cjs/tests/api_tests/security/F-0106-F-0110-enduser-write-restrictions.test.d.ts +23 -0
  25. package/lib/cjs/tests/api_tests/security/F-0106-F-0110-enduser-write-restrictions.test.d.ts.map +1 -0
  26. package/lib/cjs/tests/api_tests/security/F-0106-F-0110-enduser-write-restrictions.test.js +325 -0
  27. package/lib/cjs/tests/api_tests/security/F-0106-F-0110-enduser-write-restrictions.test.js.map +1 -0
  28. package/lib/cjs/tests/api_tests/time_tracks.test.d.ts +8 -0
  29. package/lib/cjs/tests/api_tests/time_tracks.test.d.ts.map +1 -1
  30. package/lib/cjs/tests/api_tests/time_tracks.test.js +638 -1
  31. package/lib/cjs/tests/api_tests/time_tracks.test.js.map +1 -1
  32. package/lib/cjs/tests/api_tests/user_portal_settings.test.d.ts.map +1 -1
  33. package/lib/cjs/tests/api_tests/user_portal_settings.test.js +104 -28
  34. package/lib/cjs/tests/api_tests/user_portal_settings.test.js.map +1 -1
  35. package/lib/cjs/tests/tests.d.ts.map +1 -1
  36. package/lib/cjs/tests/tests.js +878 -200
  37. package/lib/cjs/tests/tests.js.map +1 -1
  38. package/lib/esm/sdk.d.ts +4 -0
  39. package/lib/esm/sdk.d.ts.map +1 -1
  40. package/lib/esm/tests/api_tests/_tmp_bc_verify.test.d.ts +2 -0
  41. package/lib/esm/tests/api_tests/_tmp_bc_verify.test.d.ts.map +1 -0
  42. package/lib/esm/tests/api_tests/_tmp_bc_verify.test.js +120 -0
  43. package/lib/esm/tests/api_tests/_tmp_bc_verify.test.js.map +1 -0
  44. package/lib/esm/tests/api_tests/_tmp_blank_status_verify.test.d.ts +2 -0
  45. package/lib/esm/tests/api_tests/_tmp_blank_status_verify.test.d.ts.map +1 -0
  46. package/lib/esm/tests/api_tests/_tmp_blank_status_verify.test.js +200 -0
  47. package/lib/esm/tests/api_tests/_tmp_blank_status_verify.test.js.map +1 -0
  48. package/lib/esm/tests/api_tests/_tmp_followup_verify.test.d.ts +2 -0
  49. package/lib/esm/tests/api_tests/_tmp_followup_verify.test.d.ts.map +1 -0
  50. package/lib/esm/tests/api_tests/_tmp_followup_verify.test.js +194 -0
  51. package/lib/esm/tests/api_tests/_tmp_followup_verify.test.js.map +1 -0
  52. package/lib/esm/tests/api_tests/_tmp_nonmatch_verify.test.d.ts +2 -0
  53. package/lib/esm/tests/api_tests/_tmp_nonmatch_verify.test.d.ts.map +1 -0
  54. package/lib/esm/tests/api_tests/_tmp_nonmatch_verify.test.js +115 -0
  55. package/lib/esm/tests/api_tests/_tmp_nonmatch_verify.test.js.map +1 -0
  56. package/lib/esm/tests/api_tests/beluga_manual_sync.test.d.ts +6 -0
  57. package/lib/esm/tests/api_tests/beluga_manual_sync.test.d.ts.map +1 -0
  58. package/lib/esm/tests/api_tests/beluga_manual_sync.test.js +252 -0
  59. package/lib/esm/tests/api_tests/beluga_manual_sync.test.js.map +1 -0
  60. package/lib/esm/tests/api_tests/field_redaction.test.d.ts.map +1 -1
  61. package/lib/esm/tests/api_tests/field_redaction.test.js +112 -99
  62. package/lib/esm/tests/api_tests/field_redaction.test.js.map +1 -1
  63. package/lib/esm/tests/api_tests/gcal_sync_retry.test.d.ts +43 -0
  64. package/lib/esm/tests/api_tests/gcal_sync_retry.test.d.ts.map +1 -0
  65. package/lib/esm/tests/api_tests/gcal_sync_retry.test.js +164 -0
  66. package/lib/esm/tests/api_tests/gcal_sync_retry.test.js.map +1 -0
  67. package/lib/esm/tests/api_tests/journey_error_branching.test.js +7 -2
  68. package/lib/esm/tests/api_tests/journey_error_branching.test.js.map +1 -1
  69. package/lib/esm/tests/api_tests/resource_access_tags.test.d.ts +22 -0
  70. package/lib/esm/tests/api_tests/resource_access_tags.test.d.ts.map +1 -0
  71. package/lib/esm/tests/api_tests/resource_access_tags.test.js +484 -0
  72. package/lib/esm/tests/api_tests/resource_access_tags.test.js.map +1 -0
  73. package/lib/esm/tests/api_tests/security/F-0106-F-0110-enduser-write-restrictions.test.d.ts +23 -0
  74. package/lib/esm/tests/api_tests/security/F-0106-F-0110-enduser-write-restrictions.test.d.ts.map +1 -0
  75. package/lib/esm/tests/api_tests/security/F-0106-F-0110-enduser-write-restrictions.test.js +321 -0
  76. package/lib/esm/tests/api_tests/security/F-0106-F-0110-enduser-write-restrictions.test.js.map +1 -0
  77. package/lib/esm/tests/api_tests/time_tracks.test.d.ts +8 -0
  78. package/lib/esm/tests/api_tests/time_tracks.test.d.ts.map +1 -1
  79. package/lib/esm/tests/api_tests/time_tracks.test.js +635 -0
  80. package/lib/esm/tests/api_tests/time_tracks.test.js.map +1 -1
  81. package/lib/esm/tests/api_tests/user_portal_settings.test.d.ts.map +1 -1
  82. package/lib/esm/tests/api_tests/user_portal_settings.test.js +104 -28
  83. package/lib/esm/tests/api_tests/user_portal_settings.test.js.map +1 -1
  84. package/lib/esm/tests/tests.d.ts.map +1 -1
  85. package/lib/esm/tests/tests.js +879 -201
  86. package/lib/esm/tests/tests.js.map +1 -1
  87. package/lib/tsconfig.tsbuildinfo +1 -1
  88. package/package.json +10 -10
  89. package/src/tests/api_tests/beluga_manual_sync.test.ts +159 -0
  90. package/src/tests/api_tests/field_redaction.test.ts +13 -0
  91. package/src/tests/api_tests/gcal_sync_retry.test.ts +104 -0
  92. package/src/tests/api_tests/journey_error_branching.test.ts +5 -1
  93. package/src/tests/api_tests/resource_access_tags.test.ts +303 -0
  94. package/src/tests/api_tests/security/F-0106-F-0110-enduser-write-restrictions.test.ts +214 -0
  95. package/src/tests/api_tests/time_tracks.test.ts +420 -0
  96. package/src/tests/api_tests/user_portal_settings.test.ts +71 -1
  97. package/src/tests/tests.ts +520 -11
  98. package/test_generated.pdf +0 -0
@@ -102,14 +102,16 @@ import { cross_org_api_key_tests } from "./api_tests/cross_org_api_key.test";
102
102
  import { custom_dashboards_tests } from "./api_tests/custom_dashboards.test";
103
103
  import { message_assignment_trigger_tests } from "./api_tests/message_assignment_trigger.test";
104
104
  import { outbound_chat_sent_trigger_tests } from "./api_tests/outbound_chat_sent_trigger.test";
105
- import { time_tracks_tests, time_tracks_historical_tests, time_tracks_correction_tests, time_tracks_review_tests, time_tracks_lock_tests, time_tracks_edge_case_tests } from "./api_tests/time_tracks.test";
105
+ import { time_tracks_tests, time_tracks_historical_tests, time_tracks_correction_tests, time_tracks_review_tests, time_tracks_lock_tests, time_tracks_edge_case_tests, time_tracks_resubmit_tests, time_tracks_appointment_duration_tests } from "./api_tests/time_tracks.test";
106
106
  import { monthly_availability_restrictions_tests } from "./api_tests/monthly_availability_restrictions.test";
107
107
  import { calendar_event_limits_tests } from "./api_tests/calendar_event_limits.test";
108
108
  import { custom_aggregation_tests } from "./api_tests/custom_aggregation.test";
109
109
  import { chats_analytics_tests } from "./api_tests/chats_analytics.test";
110
110
  import { no_access_permission_checks_tests } from "./api_tests/no_access_permission_checks.test";
111
+ import { resource_access_tags_tests } from "./api_tests/resource_access_tags.test";
111
112
  import { field_redaction_tests } from "./api_tests/field_redaction.test";
112
113
  import { data_sync_redaction_bypass_tests } from "./api_tests/security/F-0001-data-sync-redaction-bypass.test";
114
+ import { enduser_write_restrictions_tests } from "./api_tests/security/F-0106-F-0110-enduser-write-restrictions.test";
113
115
  import { ai_conversations_rbac_tests } from "./api_tests/security/F-0005-ai-conversations-rbac.test";
114
116
  import { cascade_role_rename_cross_tenant_tests } from "./api_tests/security/F-0053-cascade-role-rename-cross-tenant.test";
115
117
  import { self_admin_role_assignment_tests } from "./api_tests/security/F-0076-self-admin-role-assignment.test";
@@ -133,6 +135,7 @@ import { organization_settings_duplicates_tests } from "./api_tests/organization
133
135
  import { calendar_events_bulk_update_tests } from "./api_tests/calendar_events_bulk_update.test";
134
136
  import { openloop_webhooks_tests } from "./api_tests/openloop_webhooks.test";
135
137
  import { beluga_pharmacy_mappings_tests } from "./api_tests/beluga_pharmacy_mappings.test";
138
+ import { beluga_manual_sync_tests } from "./api_tests/beluga_manual_sync.test";
136
139
  import { mdi_webhooks_tests } from "./api_tests/mdi_webhooks.test";
137
140
  import { account_switcher_tests } from "./api_tests/account_switcher.test";
138
141
  import { set_fields_order_templates_tests } from "./api_tests/set_fields_order_templates.test";
@@ -4486,6 +4489,388 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4486
4489
  }
4487
4490
  });
4488
4491
  }); };
4492
+ // Covers the "blank status matches any order status" behavior (Order Status Equals acting as "Order Status Changed").
4493
+ // Kept separate from order_status_equals_tests because a blank-status trigger would break that test's exact tag-count assertions.
4494
+ var order_status_blank_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
4495
+ var A, A2, B, C, D, BA, BD, BD2, P, e2, e3, e4, e5, e6, e7, o7, eb1, eb2, eb3, e8, o8, e9, e10;
4496
+ return __generator(this, function (_a) {
4497
+ switch (_a.label) {
4498
+ case 0:
4499
+ log_header("Automation Trigger Tests (Order Status Equals - blank status)");
4500
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4501
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource' } },
4502
+ action: { type: 'Add Tags', info: { tags: ['AnyOmit'] } },
4503
+ status: 'Active',
4504
+ title: "Blank status (omitted)"
4505
+ })];
4506
+ case 1:
4507
+ A = _a.sent();
4508
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4509
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: '' } },
4510
+ action: { type: 'Add Tags', info: { tags: ['AnyEmpty'] } },
4511
+ status: 'Active',
4512
+ title: "Blank status (empty string)"
4513
+ })];
4514
+ case 2:
4515
+ A2 = _a.sent();
4516
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4517
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: '', skus: ['MATCH-SKU'] } },
4518
+ action: { type: 'Add Tags', info: { tags: ['BlankWithSku'] } },
4519
+ status: 'Active',
4520
+ title: "Blank status with SKU filter"
4521
+ })];
4522
+ case 3:
4523
+ B = _a.sent();
4524
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4525
+ event: { type: 'Order Status Equals', info: { source: 'OtherSource' } },
4526
+ action: { type: 'Add Tags', info: { tags: ['WrongSource'] } },
4527
+ status: 'Active',
4528
+ title: "Blank status, other source"
4529
+ })];
4530
+ case 4:
4531
+ C = _a.sent();
4532
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4533
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: 'Shipped' } },
4534
+ action: { type: 'Add Tags', info: { tags: ['ShippedOnly'] } },
4535
+ status: 'Active',
4536
+ title: "Status-specific (regression)"
4537
+ })
4538
+ // BA/BD exercise the separate bulk-create code path (createSome of 2+); kept on their own source so the
4539
+ // pre-existing "bulk ignores sku/protocol filters" divergence doesn't affect these assertions.
4540
+ ];
4541
+ case 5:
4542
+ D = _a.sent();
4543
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4544
+ event: { type: 'Order Status Equals', info: { source: 'BulkSource' } },
4545
+ action: { type: 'Add Tags', info: { tags: ['BulkAny'] } },
4546
+ status: 'Active',
4547
+ title: "Bulk blank status"
4548
+ })];
4549
+ case 6:
4550
+ BA = _a.sent();
4551
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4552
+ event: { type: 'Order Status Equals', info: { source: 'BulkSource', status: 'Shipped' } },
4553
+ action: { type: 'Add Tags', info: { tags: ['BulkShipped'] } },
4554
+ status: 'Active',
4555
+ title: "Bulk status-specific"
4556
+ })
4557
+ // BD2's status matches NO order in the bulk batch below; backwards-compat: it must never fire (the query's $in
4558
+ // branch excludes it entirely, exactly as before the blank-status change).
4559
+ ];
4560
+ case 7:
4561
+ BD = _a.sent();
4562
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4563
+ event: { type: 'Order Status Equals', info: { source: 'BulkSource', status: 'NeverInBatch' } },
4564
+ action: { type: 'Add Tags', info: { tags: ['BulkNever'] } },
4565
+ status: 'Active',
4566
+ title: "Bulk status-specific (absent from batch)"
4567
+ })
4568
+ // P: blank status composed with a protocol filter (proves blank works with non-SKU filters + the no-protocol branch)
4569
+ ];
4570
+ case 8:
4571
+ BD2 = _a.sent();
4572
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4573
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: '', protocols: ['Protocol-A'] } },
4574
+ action: { type: 'Add Tags', info: { tags: ['BlankProtocol'] } },
4575
+ status: 'Active',
4576
+ title: "Blank status with protocol filter"
4577
+ })
4578
+ // Case 1: validation accepts triggers with no status / empty status (A and A2 created above without error)
4579
+ ];
4580
+ case 9:
4581
+ P = _a.sent();
4582
+ // Case 1: validation accepts triggers with no status / empty status (A and A2 created above without error)
4583
+ return [4 /*yield*/, async_test("Trigger with omitted status was created", function () { return Promise.resolve(A); }, { onResult: function (t) { return !!t.id && t.event.type === 'Order Status Equals' && !t.event.info.status; } })];
4584
+ case 10:
4585
+ // Case 1: validation accepts triggers with no status / empty status (A and A2 created above without error)
4586
+ _a.sent();
4587
+ return [4 /*yield*/, async_test("Trigger with empty-string status was created", function () { return Promise.resolve(A2); }, { onResult: function (t) { return !!t.id && t.event.type === 'Order Status Equals' && t.event.info.status === ''; } })
4588
+ // Case 2: blank status fires on an arbitrary status
4589
+ ];
4590
+ case 11:
4591
+ _a.sent();
4592
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4593
+ case 12:
4594
+ e2 = _a.sent();
4595
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'StatusOne', source: 'BlankSource', title: 'Title', externalId: 'blank-1', enduserId: e2.id })];
4596
+ case 13:
4597
+ _a.sent();
4598
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4599
+ case 14:
4600
+ _a.sent(); // allow triggers to happen
4601
+ return [4 /*yield*/, async_test("Blank status fires on arbitrary status (no other tags)", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
4602
+ var _a, _b, _c, _d, _f;
4603
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4604
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4605
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BlankWithSku'))
4606
+ && !((_d = e.tags) === null || _d === void 0 ? void 0 : _d.includes('WrongSource'))
4607
+ && !((_f = e.tags) === null || _f === void 0 ? void 0 : _f.includes('ShippedOnly')));
4608
+ } })
4609
+ // Case 3: blank status fires on a totally different status value (status-value-independent)
4610
+ ];
4611
+ case 15:
4612
+ _a.sent();
4613
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4614
+ case 16:
4615
+ e3 = _a.sent();
4616
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'totally-arbitrary-xyz', source: 'BlankSource', title: 'Title', externalId: 'blank-2', enduserId: e3.id })];
4617
+ case 17:
4618
+ _a.sent();
4619
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4620
+ case 18:
4621
+ _a.sent(); // allow triggers to happen
4622
+ return [4 /*yield*/, async_test("Blank status fires on a different arbitrary status", function () { return sdk.api.endusers.getOne(e3.id); }, { onResult: function (e) {
4623
+ var _a, _b;
4624
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4625
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty')));
4626
+ } })
4627
+ // Case 4: source isolation - blank trigger does not fire for a different source
4628
+ ];
4629
+ case 19:
4630
+ _a.sent();
4631
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4632
+ case 20:
4633
+ e4 = _a.sent();
4634
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'StatusOne', source: 'DifferentSource', title: 'Title', externalId: 'blank-3', enduserId: e4.id })];
4635
+ case 21:
4636
+ _a.sent();
4637
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4638
+ case 22:
4639
+ _a.sent(); // allow triggers to happen
4640
+ return [4 /*yield*/, async_test("Blank status is still scoped to its source", function () { return sdk.api.endusers.getOne(e4.id); }, { onResult: function (e) {
4641
+ var _a, _b, _c;
4642
+ return !!(!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4643
+ && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4644
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('WrongSource')) // C only matches OtherSource
4645
+ );
4646
+ } })
4647
+ // Case 5a: other filters still enforced with blank status (sku mismatch)
4648
+ ];
4649
+ case 23:
4650
+ _a.sent();
4651
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4652
+ case 24:
4653
+ e5 = _a.sent();
4654
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'blank-4', enduserId: e5.id, sku: 'NOPE' })];
4655
+ case 25:
4656
+ _a.sent();
4657
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4658
+ case 26:
4659
+ _a.sent(); // allow triggers to happen
4660
+ return [4 /*yield*/, async_test("Blank status + SKU filter does not fire on SKU mismatch", function () { return sdk.api.endusers.getOne(e5.id); }, { onResult: function (e) {
4661
+ var _a, _b, _c;
4662
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4663
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4664
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BlankWithSku')));
4665
+ } })
4666
+ // Case 5b: other filters still enforced with blank status (sku match)
4667
+ ];
4668
+ case 27:
4669
+ _a.sent();
4670
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4671
+ case 28:
4672
+ e6 = _a.sent();
4673
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'blank-5', enduserId: e6.id, sku: 'MATCH-SKU' })];
4674
+ case 29:
4675
+ _a.sent();
4676
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4677
+ case 30:
4678
+ _a.sent(); // allow triggers to happen
4679
+ return [4 /*yield*/, async_test("Blank status + SKU filter fires on SKU match", function () { return sdk.api.endusers.getOne(e6.id); }, { onResult: function (e) {
4680
+ var _a, _b, _c;
4681
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4682
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4683
+ && ((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BlankWithSku')));
4684
+ } })
4685
+ // Case 6: update path + regression coexistence with a status-specific trigger
4686
+ ];
4687
+ case 31:
4688
+ _a.sent();
4689
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4690
+ case 32:
4691
+ e7 = _a.sent();
4692
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Created', source: 'BlankSource', title: 'Title', externalId: 'blank-6', enduserId: e7.id })];
4693
+ case 33:
4694
+ o7 = _a.sent();
4695
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4696
+ case 34:
4697
+ _a.sent(); // allow triggers to happen
4698
+ return [4 /*yield*/, async_test("Blank fires on create; status-specific (Shipped) does not yet", function () { return sdk.api.endusers.getOne(e7.id); }, { onResult: function (e) {
4699
+ var _a, _b, _c;
4700
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4701
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4702
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('ShippedOnly')));
4703
+ } })
4704
+ // update to a NON-matching status: blank fires again, but the status-specific trigger must stay un-fired
4705
+ ];
4706
+ case 35:
4707
+ _a.sent();
4708
+ // update to a NON-matching status: blank fires again, but the status-specific trigger must stay un-fired
4709
+ return [4 /*yield*/, sdk.api.enduser_orders.updateOne(o7.id, { status: 'Delivered', externalId: 'blank-6-delivered' })];
4710
+ case 36:
4711
+ // update to a NON-matching status: blank fires again, but the status-specific trigger must stay un-fired
4712
+ _a.sent();
4713
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4714
+ case 37:
4715
+ _a.sent(); // allow triggers to happen
4716
+ return [4 /*yield*/, async_test("Update to non-matching status: blank fires, status-specific (Shipped) does NOT fire", function () { return sdk.api.endusers.getOne(e7.id); }, { onResult: function (e) {
4717
+ var _a, _b, _c;
4718
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit') // proves the update event was processed
4719
+ )
4720
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4721
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('ShippedOnly')) // 'Delivered' must not trigger the 'Shipped' trigger
4722
+ );
4723
+ } })
4724
+ // now update to the matching status: status-specific trigger fires
4725
+ ];
4726
+ case 38:
4727
+ _a.sent();
4728
+ // now update to the matching status: status-specific trigger fires
4729
+ return [4 /*yield*/, sdk.api.enduser_orders.updateOne(o7.id, { status: 'Shipped', externalId: 'blank-6-shipped' })];
4730
+ case 39:
4731
+ // now update to the matching status: status-specific trigger fires
4732
+ _a.sent();
4733
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4734
+ case 40:
4735
+ _a.sent(); // allow triggers to happen
4736
+ return [4 /*yield*/, async_test("Blank fires on update too; status-specific (Shipped) now fires", function () { return sdk.api.endusers.getOne(e7.id); }, { onResult: function (e) {
4737
+ var _a, _b, _c;
4738
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4739
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4740
+ && ((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('ShippedOnly')));
4741
+ } })
4742
+ // Case 7: bulk create path (createSome of 2+) must honor blank status + status-specific selectivity.
4743
+ // This exercises a SEPARATE matching code path (handle_orders_create bulk branch) from single creates.
4744
+ ];
4745
+ case 41:
4746
+ _a.sent();
4747
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4748
+ case 42:
4749
+ eb1 = _a.sent();
4750
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4751
+ case 43:
4752
+ eb2 = _a.sent();
4753
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4754
+ case 44:
4755
+ eb3 = _a.sent();
4756
+ return [4 /*yield*/, sdk.api.enduser_orders.createSome([
4757
+ { status: 'StatusA', source: 'BulkSource', title: 'Title', externalId: 'bulk-1', enduserId: eb1.id },
4758
+ { status: 'Shipped', source: 'BulkSource', title: 'Title', externalId: 'bulk-2', enduserId: eb2.id },
4759
+ { status: 'StatusB', source: 'BulkSource', title: 'Title', externalId: 'bulk-3', enduserId: eb3.id },
4760
+ ])];
4761
+ case 45:
4762
+ _a.sent();
4763
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4764
+ case 46:
4765
+ _a.sent(); // allow triggers to happen
4766
+ return [4 /*yield*/, async_test("Bulk create: blank fires on non-Shipped order; status-specific (matching + absent) do not", function () { return sdk.api.endusers.getOne(eb1.id); }, { onResult: function (e) { var _a, _b, _c; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('BulkAny')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('BulkShipped')) && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BulkNever'))); } })];
4767
+ case 47:
4768
+ _a.sent();
4769
+ return [4 /*yield*/, async_test("Bulk create: blank + matching status-specific fire on the Shipped order; absent-status one does not", function () { return sdk.api.endusers.getOne(eb2.id); }, { onResult: function (e) { var _a, _b, _c; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('BulkAny')) && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('BulkShipped')) && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BulkNever'))); } })];
4770
+ case 48:
4771
+ _a.sent();
4772
+ return [4 /*yield*/, async_test("Bulk create: blank fires on the other non-Shipped order; status-specific (matching + absent) do not", function () { return sdk.api.endusers.getOne(eb3.id); }, { onResult: function (e) { var _a, _b, _c; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('BulkAny')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('BulkShipped')) && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BulkNever'))); } })
4773
+ // Case 8: an order update that does NOT change status must not run the handler (true "status changed" semantic).
4774
+ ];
4775
+ case 49:
4776
+ _a.sent();
4777
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4778
+ case 50:
4779
+ e8 = _a.sent();
4780
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Shipped', source: 'BlankSource', title: 'Title', externalId: 'noChange-1', enduserId: e8.id })];
4781
+ case 51:
4782
+ o8 = _a.sent();
4783
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4784
+ case 52:
4785
+ _a.sent(); // allow triggers to happen
4786
+ return [4 /*yield*/, async_test("Setup: status-specific (Shipped) fired on create", function () { return sdk.api.endusers.getOne(e8.id); }, { onResult: function (e) { var _a, _b; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit')) && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('ShippedOnly'))); } })
4787
+ // clear tags (replaceObjectFields forces the empty array to actually replace)
4788
+ ];
4789
+ case 53:
4790
+ _a.sent();
4791
+ // clear tags (replaceObjectFields forces the empty array to actually replace)
4792
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e8.id, { tags: [] }, { replaceObjectFields: true })
4793
+ // sanity-check the clear actually took, so a later failure points at re-firing rather than a broken clear
4794
+ ];
4795
+ case 54:
4796
+ // clear tags (replaceObjectFields forces the empty array to actually replace)
4797
+ _a.sent();
4798
+ // sanity-check the clear actually took, so a later failure points at re-firing rather than a broken clear
4799
+ return [4 /*yield*/, async_test("Setup: tags cleared before non-status update", function () { return sdk.api.endusers.getOne(e8.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })
4800
+ // update a non-status field (status stays 'Shipped'); handler should early-return and re-add nothing.
4801
+ // If it wrongly fired, the blank triggers A/A2 would re-add AnyOmit/AnyEmpty, so empty tags proves non-firing.
4802
+ ];
4803
+ case 55:
4804
+ // sanity-check the clear actually took, so a later failure points at re-firing rather than a broken clear
4805
+ _a.sent();
4806
+ // update a non-status field (status stays 'Shipped'); handler should early-return and re-add nothing.
4807
+ // If it wrongly fired, the blank triggers A/A2 would re-add AnyOmit/AnyEmpty, so empty tags proves non-firing.
4808
+ return [4 /*yield*/, sdk.api.enduser_orders.updateOne(o8.id, { tracking: 'tracking-123', externalId: 'noChange-1b' })];
4809
+ case 56:
4810
+ // update a non-status field (status stays 'Shipped'); handler should early-return and re-add nothing.
4811
+ // If it wrongly fired, the blank triggers A/A2 would re-add AnyOmit/AnyEmpty, so empty tags proves non-firing.
4812
+ _a.sent();
4813
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4814
+ case 57:
4815
+ _a.sent(); // allow triggers to happen
4816
+ return [4 /*yield*/, async_test("Update with unchanged status does not fire any trigger", function () { return sdk.api.endusers.getOne(e8.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })
4817
+ // Case 9: protocol filter with blank status - order without a protocol must not fire (the order.protocol ? : false branch)
4818
+ ];
4819
+ case 58:
4820
+ _a.sent();
4821
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4822
+ case 59:
4823
+ e9 = _a.sent();
4824
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'proto-1', enduserId: e9.id })];
4825
+ case 60:
4826
+ _a.sent();
4827
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4828
+ case 61:
4829
+ _a.sent(); // allow triggers to happen
4830
+ return [4 /*yield*/, async_test("Blank + protocol filter does not fire when order has no protocol", function () { return sdk.api.endusers.getOne(e9.id); }, { onResult: function (e) { var _a, _b; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('BlankProtocol'))); } })];
4831
+ case 62:
4832
+ _a.sent();
4833
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4834
+ case 63:
4835
+ e10 = _a.sent();
4836
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'proto-2', enduserId: e10.id, protocol: 'Protocol-A' })];
4837
+ case 64:
4838
+ _a.sent();
4839
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4840
+ case 65:
4841
+ _a.sent(); // allow triggers to happen
4842
+ return [4 /*yield*/, async_test("Blank + protocol filter fires when order protocol matches", function () { return sdk.api.endusers.getOne(e10.id); }, { onResult: function (e) { var _a, _b; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit')) && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('BlankProtocol'))); } })];
4843
+ case 66:
4844
+ _a.sent();
4845
+ return [4 /*yield*/, Promise.all([
4846
+ sdk.api.automation_triggers.deleteOne(A.id),
4847
+ sdk.api.automation_triggers.deleteOne(A2.id),
4848
+ sdk.api.automation_triggers.deleteOne(B.id),
4849
+ sdk.api.automation_triggers.deleteOne(C.id),
4850
+ sdk.api.automation_triggers.deleteOne(D.id),
4851
+ sdk.api.automation_triggers.deleteOne(BA.id),
4852
+ sdk.api.automation_triggers.deleteOne(BD.id),
4853
+ sdk.api.automation_triggers.deleteOne(BD2.id),
4854
+ sdk.api.automation_triggers.deleteOne(P.id),
4855
+ sdk.api.endusers.deleteOne(e2.id),
4856
+ sdk.api.endusers.deleteOne(e3.id),
4857
+ sdk.api.endusers.deleteOne(e4.id),
4858
+ sdk.api.endusers.deleteOne(e5.id),
4859
+ sdk.api.endusers.deleteOne(e6.id),
4860
+ sdk.api.endusers.deleteOne(e7.id),
4861
+ sdk.api.endusers.deleteOne(eb1.id),
4862
+ sdk.api.endusers.deleteOne(eb2.id),
4863
+ sdk.api.endusers.deleteOne(eb3.id),
4864
+ sdk.api.endusers.deleteOne(e8.id),
4865
+ sdk.api.endusers.deleteOne(e9.id),
4866
+ sdk.api.endusers.deleteOne(e10.id),
4867
+ ])];
4868
+ case 67:
4869
+ _a.sent();
4870
+ return [2 /*return*/];
4871
+ }
4872
+ });
4873
+ }); };
4489
4874
  var tag_added_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
4490
4875
  var t1, t2, t3, e;
4491
4876
  return __generator(this, function (_a) {
@@ -5134,7 +5519,7 @@ var contact_created_tests = function () { return __awaiter(void 0, void 0, void
5134
5519
  }); };
5135
5520
  // includes primary care team tests
5136
5521
  var assign_care_team_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
5137
- var t1, t2, t3, e1;
5522
+ var t1, t2, t3, e1, t4, e2, e3, e4, t5, e5, e6, e7, bulkEvents, t6, bulkEventsAny, u2, t7, e8, t8, e9, e10, bulkEventsOne;
5138
5523
  return __generator(this, function (_a) {
5139
5524
  switch (_a.label) {
5140
5525
  case 0:
@@ -5217,30 +5602,257 @@ var assign_care_team_tests = function () { return __awaiter(void 0, void 0, void
5217
5602
  return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
5218
5603
  case 13:
5219
5604
  _a.sent(); // allow triggers to happen
5220
- return [4 /*yield*/, async_test("Care team added and set as primary", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) { var _a; return ((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length) === 1 && e.primaryAssignee === e.assignedTo[0]; } })];
5605
+ return [4 /*yield*/, async_test("Care team added and set as primary", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) { var _a; return ((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length) === 1 && e.primaryAssignee === e.assignedTo[0]; } })
5606
+ // restrictByState (state credentialing) tests
5607
+ ];
5221
5608
  case 14:
5222
5609
  _a.sent();
5610
+ // restrictByState (state credentialing) tests
5611
+ return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, { credentialedStates: [{ state: 'CA' }] }, { replaceObjectFields: true })];
5612
+ case 15:
5613
+ // restrictByState (state credentialing) tests
5614
+ _a.sent();
5615
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
5616
+ title: 't4',
5617
+ event: { type: 'Tag Added', info: { tag: 'Trigger State' } },
5618
+ action: {
5619
+ type: "Assign Care Team",
5620
+ info: {
5621
+ tags: { qualifier: 'One Of', values: ["Assignment"] },
5622
+ restrictByState: true,
5623
+ },
5624
+ },
5625
+ status: 'Active',
5626
+ })];
5627
+ case 16:
5628
+ t4 = _a.sent();
5629
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'CA' })];
5630
+ case 17:
5631
+ e2 = _a.sent();
5632
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'NY' })];
5633
+ case 18:
5634
+ e3 = _a.sent();
5635
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
5636
+ case 19:
5637
+ e4 = _a.sent();
5223
5638
  return [4 /*yield*/, Promise.all([
5224
- sdk.api.users.updateOne(sdk.userInfo.id, { tags: [] }, { replaceObjectFields: true }),
5225
- sdk.api.endusers.deleteOne(e1.id),
5226
- sdk.api.automation_triggers.deleteOne(t1.id),
5227
- sdk.api.automation_triggers.deleteOne(t2.id),
5228
- sdk.api.automation_triggers.deleteOne(t3.id),
5639
+ sdk.api.endusers.updateOne(e2.id, { tags: ['Trigger State'] }),
5640
+ sdk.api.endusers.updateOne(e3.id, { tags: ['Trigger State'] }),
5641
+ sdk.api.endusers.updateOne(e4.id, { tags: ['Trigger State'] }),
5229
5642
  ])];
5230
- case 15:
5643
+ case 20:
5231
5644
  _a.sent();
5232
- return [2 /*return*/];
5233
- }
5234
- });
5235
- }); };
5236
- var set_fields_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
5237
- var _a, calculate_days_between_dates, parse_date_string, resolve_date_value, calculate_days_between_dates_from_enduser, calculate_date_difference_for_set_fields, e1, t1, t2, a1, e2, t3, t4, t5, e3, t6, e4, t7, t8, t9;
5238
- return __generator(this, function (_b) {
5239
- switch (_b.label) {
5240
- case 0:
5241
- log_header("Automation Trigger Tests (Set Fields)");
5242
- // First, test the date calculation utilities directly
5243
- log_header("Date Utility Function Tests");
5645
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
5646
+ case 21:
5647
+ _a.sent(); // allow triggers to happen
5648
+ return [4 /*yield*/, async_test("Care team added for enduser in credentialed state", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) { var _a; return ((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length) === 1; } })];
5649
+ case 22:
5650
+ _a.sent();
5651
+ return [4 /*yield*/, async_test("No care team added for enduser in non-credentialed state", function () { return sdk.api.endusers.getOne(e3.id); }, { onResult: function (e) { var _a; return !((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length); } })];
5652
+ case 23:
5653
+ _a.sent();
5654
+ return [4 /*yield*/, async_test("No care team added for enduser with unknown state", function () { return sdk.api.endusers.getOne(e4.id); }, { onResult: function (e) { var _a; return !((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length); } })
5655
+ // creating multiple appointments in a single request routes through bulk_handle_actions_for_triggers
5656
+ // (unlike Tag Added above, which uses the per-enduser handler), covering the bulk Assign Care Team
5657
+ // path with mixed enduser states in one batch
5658
+ ];
5659
+ case 24:
5660
+ _a.sent();
5661
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
5662
+ title: 't5',
5663
+ event: { type: 'Appointment Created', info: { titles: ['Bulk Assign State'] } },
5664
+ action: {
5665
+ type: "Assign Care Team",
5666
+ info: {
5667
+ tags: { qualifier: 'One Of', values: ["Assignment"] },
5668
+ restrictByState: true,
5669
+ setAsPrimary: true, // not yet supported in the bulk handler — see canary assertion below
5670
+ },
5671
+ },
5672
+ status: 'Active',
5673
+ })];
5674
+ case 25:
5675
+ t5 = _a.sent();
5676
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'CA' })];
5677
+ case 26:
5678
+ e5 = _a.sent();
5679
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'NY' })];
5680
+ case 27:
5681
+ e6 = _a.sent();
5682
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
5683
+ case 28:
5684
+ e7 = _a.sent();
5685
+ return [4 /*yield*/, sdk.api.calendar_events.createSome([
5686
+ { title: 'Bulk Assign State', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e5.id }] },
5687
+ { title: 'Bulk Assign State', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e6.id }] },
5688
+ { title: 'Bulk Assign State', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e7.id }] },
5689
+ ])];
5690
+ case 29:
5691
+ bulkEvents = (_a.sent()).created;
5692
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
5693
+ case 30:
5694
+ _a.sent(); // allow triggers to happen
5695
+ return [4 /*yield*/, async_test("(Bulk) Care team added for enduser in credentialed state", function () { return sdk.api.endusers.getOne(e5.id); }, { onResult: function (e) { var _a; return ((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length) === 1; } })
5696
+ // canary: the bulk handler doesn't implement setAsPrimary (the per-enduser handler does), so a set
5697
+ // primaryAssignee here means multi-event creates no longer route through the bulk handler (or
5698
+ // setAsPrimary was implemented there — update this test if so)
5699
+ ];
5700
+ case 31:
5701
+ _a.sent();
5702
+ // canary: the bulk handler doesn't implement setAsPrimary (the per-enduser handler does), so a set
5703
+ // primaryAssignee here means multi-event creates no longer route through the bulk handler (or
5704
+ // setAsPrimary was implemented there — update this test if so)
5705
+ return [4 /*yield*/, async_test("(Bulk) Primary not set (bulk handler routing canary)", function () { return sdk.api.endusers.getOne(e5.id); }, { onResult: function (e) { return !e.primaryAssignee; } })];
5706
+ case 32:
5707
+ // canary: the bulk handler doesn't implement setAsPrimary (the per-enduser handler does), so a set
5708
+ // primaryAssignee here means multi-event creates no longer route through the bulk handler (or
5709
+ // setAsPrimary was implemented there — update this test if so)
5710
+ _a.sent();
5711
+ return [4 /*yield*/, async_test("(Bulk) No care team added for enduser in non-credentialed state", function () { return sdk.api.endusers.getOne(e6.id); }, { onResult: function (e) { var _a; return !((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length); } })];
5712
+ case 33:
5713
+ _a.sent();
5714
+ return [4 /*yield*/, async_test("(Bulk) No care team added for enduser with unknown state", function () { return sdk.api.endusers.getOne(e7.id); }, { onResult: function (e) { var _a; return !((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length); } })
5715
+ // bulk path with restrictByState off: state should not matter (default behavior unchanged)
5716
+ ];
5717
+ case 34:
5718
+ _a.sent();
5719
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
5720
+ title: 't6',
5721
+ event: { type: 'Appointment Created', info: { titles: ['Bulk Assign Any'] } },
5722
+ action: {
5723
+ type: "Assign Care Team",
5724
+ info: {
5725
+ tags: { qualifier: 'One Of', values: ["Assignment"] },
5726
+ },
5727
+ },
5728
+ status: 'Active',
5729
+ })];
5730
+ case 35:
5731
+ t6 = _a.sent();
5732
+ return [4 /*yield*/, sdk.api.calendar_events.createSome([
5733
+ { title: 'Bulk Assign Any', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e6.id }] },
5734
+ { title: 'Bulk Assign Any', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e7.id }] },
5735
+ ])];
5736
+ case 36:
5737
+ bulkEventsAny = (_a.sent()).created;
5738
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
5739
+ case 37:
5740
+ _a.sent(); // allow triggers to happen
5741
+ return [4 /*yield*/, async_test("(Bulk, no restriction) Care team added for enduser in non-credentialed state", function () { return sdk.api.endusers.getOne(e6.id); }, { onResult: function (e) { var _a; return ((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length) === 1; } })];
5742
+ case 38:
5743
+ _a.sent();
5744
+ return [4 /*yield*/, async_test("(Bulk, no restriction) Care team added for enduser with unknown state", function () { return sdk.api.endusers.getOne(e7.id); }, { onResult: function (e) { var _a; return ((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length) === 1; } })
5745
+ // limitToOneUser on both handler branches: with two matching users, exactly one is assigned
5746
+ ];
5747
+ case 39:
5748
+ _a.sent();
5749
+ return [4 /*yield*/, sdk.api.users.createOne({
5750
+ email: "assign-care-team-limit-".concat(Date.now(), "@tellescope.example"), fname: 'Throwaway', lname: 'Assignment',
5751
+ })];
5752
+ case 40:
5753
+ u2 = _a.sent();
5754
+ return [4 /*yield*/, sdk.api.users.updateOne(u2.id, { tags: ['Assignment'], credentialedStates: [{ state: 'CA' }] }, { replaceObjectFields: true })];
5755
+ case 41:
5756
+ _a.sent();
5757
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
5758
+ title: 't7',
5759
+ event: { type: 'Tag Added', info: { tag: 'Trigger One' } },
5760
+ action: {
5761
+ type: "Assign Care Team",
5762
+ info: {
5763
+ tags: { qualifier: 'One Of', values: ["Assignment"] },
5764
+ restrictByState: true,
5765
+ limitToOneUser: true,
5766
+ },
5767
+ },
5768
+ status: 'Active',
5769
+ })];
5770
+ case 42:
5771
+ t7 = _a.sent();
5772
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'CA' })];
5773
+ case 43:
5774
+ e8 = _a.sent();
5775
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e8.id, { tags: ['Trigger One'] })];
5776
+ case 44:
5777
+ _a.sent();
5778
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
5779
+ case 45:
5780
+ _a.sent(); // allow triggers to happen
5781
+ return [4 /*yield*/, async_test("(limitToOneUser) Exactly one of multiple matching users assigned", function () { return sdk.api.endusers.getOne(e8.id); }, { onResult: function (e) { var _a; return ((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length) === 1; } })];
5782
+ case 46:
5783
+ _a.sent();
5784
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
5785
+ title: 't8',
5786
+ event: { type: 'Appointment Created', info: { titles: ['Bulk Assign One'] } },
5787
+ action: {
5788
+ type: "Assign Care Team",
5789
+ info: {
5790
+ tags: { qualifier: 'One Of', values: ["Assignment"] },
5791
+ restrictByState: true,
5792
+ limitToOneUser: true,
5793
+ },
5794
+ },
5795
+ status: 'Active',
5796
+ })];
5797
+ case 47:
5798
+ t8 = _a.sent();
5799
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'CA' })];
5800
+ case 48:
5801
+ e9 = _a.sent();
5802
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'CA' })];
5803
+ case 49:
5804
+ e10 = _a.sent();
5805
+ return [4 /*yield*/, sdk.api.calendar_events.createSome([
5806
+ { title: 'Bulk Assign One', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e9.id }] },
5807
+ { title: 'Bulk Assign One', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e10.id }] },
5808
+ ])];
5809
+ case 50:
5810
+ bulkEventsOne = (_a.sent()).created;
5811
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
5812
+ case 51:
5813
+ _a.sent(); // allow triggers to happen
5814
+ return [4 /*yield*/, async_test("(Bulk, limitToOneUser) Exactly one of multiple matching users assigned", function () { return sdk.api.endusers.getOne(e9.id); }, { onResult: function (e) { var _a; return ((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length) === 1; } })];
5815
+ case 52:
5816
+ _a.sent();
5817
+ return [4 /*yield*/, async_test("(Bulk, limitToOneUser) Exactly one of multiple matching users assigned (second enduser)", function () { return sdk.api.endusers.getOne(e10.id); }, { onResult: function (e) { var _a; return ((_a = e.assignedTo) === null || _a === void 0 ? void 0 : _a.length) === 1; } })];
5818
+ case 53:
5819
+ _a.sent();
5820
+ return [4 /*yield*/, Promise.all(__spreadArray(__spreadArray(__spreadArray([
5821
+ sdk.api.users.updateOne(sdk.userInfo.id, { tags: [], credentialedStates: [] }, { replaceObjectFields: true }),
5822
+ sdk.api.endusers.deleteOne(e1.id),
5823
+ sdk.api.endusers.deleteOne(e2.id),
5824
+ sdk.api.endusers.deleteOne(e3.id),
5825
+ sdk.api.endusers.deleteOne(e4.id),
5826
+ sdk.api.endusers.deleteOne(e5.id),
5827
+ sdk.api.endusers.deleteOne(e6.id),
5828
+ sdk.api.endusers.deleteOne(e7.id),
5829
+ sdk.api.automation_triggers.deleteOne(t1.id),
5830
+ sdk.api.automation_triggers.deleteOne(t2.id),
5831
+ sdk.api.automation_triggers.deleteOne(t3.id),
5832
+ sdk.api.endusers.deleteOne(e8.id),
5833
+ sdk.api.endusers.deleteOne(e9.id),
5834
+ sdk.api.endusers.deleteOne(e10.id),
5835
+ sdk.api.users.deleteOne(u2.id),
5836
+ sdk.api.automation_triggers.deleteOne(t4.id),
5837
+ sdk.api.automation_triggers.deleteOne(t5.id),
5838
+ sdk.api.automation_triggers.deleteOne(t6.id),
5839
+ sdk.api.automation_triggers.deleteOne(t7.id),
5840
+ sdk.api.automation_triggers.deleteOne(t8.id)
5841
+ ], bulkEvents.map(function (e) { return sdk.api.calendar_events.deleteOne(e.id); }), true), bulkEventsAny.map(function (e) { return sdk.api.calendar_events.deleteOne(e.id); }), true), bulkEventsOne.map(function (e) { return sdk.api.calendar_events.deleteOne(e.id); }), true))];
5842
+ case 54:
5843
+ _a.sent();
5844
+ return [2 /*return*/];
5845
+ }
5846
+ });
5847
+ }); };
5848
+ var set_fields_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
5849
+ var _a, calculate_days_between_dates, parse_date_string, resolve_date_value, calculate_days_between_dates_from_enduser, calculate_date_difference_for_set_fields, e1, t1, t2, a1, e2, t3, t4, t5, e3, t6, e4, t7, t8, t9;
5850
+ return __generator(this, function (_b) {
5851
+ switch (_b.label) {
5852
+ case 0:
5853
+ log_header("Automation Trigger Tests (Set Fields)");
5854
+ // First, test the date calculation utilities directly
5855
+ log_header("Date Utility Function Tests");
5244
5856
  return [4 /*yield*/, import("@tellescope/utilities")
5245
5857
  // Test parse_date_string
5246
5858
  ];
@@ -6180,65 +6792,68 @@ var automation_trigger_tests = function () { return __awaiter(void 0, void 0, vo
6180
6792
  switch (_a.label) {
6181
6793
  case 0:
6182
6794
  log_header("Automation Trigger Tests");
6183
- return [4 /*yield*/, push_forms_to_portal_group_completion_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6795
+ return [4 /*yield*/, assign_care_team_tests()];
6184
6796
  case 1:
6185
6797
  _a.sent();
6186
- return [4 /*yield*/, order_status_equals_tests()];
6798
+ return [4 /*yield*/, push_forms_to_portal_group_completion_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6187
6799
  case 2:
6188
6800
  _a.sent();
6189
- return [4 /*yield*/, set_fields_order_templates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6801
+ return [4 /*yield*/, order_status_equals_tests()];
6190
6802
  case 3:
6191
6803
  _a.sent();
6192
- return [4 /*yield*/, medication_added_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6804
+ return [4 /*yield*/, order_status_blank_tests()];
6193
6805
  case 4:
6194
6806
  _a.sent();
6195
- return [4 /*yield*/, appointment_cancelled_tests()];
6807
+ return [4 /*yield*/, set_fields_order_templates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6196
6808
  case 5:
6197
6809
  _a.sent();
6198
- return [4 /*yield*/, set_fields_tests()];
6810
+ return [4 /*yield*/, medication_added_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6199
6811
  case 6:
6200
6812
  _a.sent();
6201
- return [4 /*yield*/, purchase_made_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6813
+ return [4 /*yield*/, appointment_cancelled_tests()];
6202
6814
  case 7:
6203
6815
  _a.sent();
6204
- return [4 /*yield*/, appointment_rescheduled_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6816
+ return [4 /*yield*/, set_fields_tests()];
6205
6817
  case 8:
6206
6818
  _a.sent();
6207
- return [4 /*yield*/, form_response_set_fields_trigger_tests()];
6819
+ return [4 /*yield*/, purchase_made_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6208
6820
  case 9:
6209
6821
  _a.sent();
6210
- return [4 /*yield*/, form_response_set_fields_journey_tests()];
6822
+ return [4 /*yield*/, appointment_rescheduled_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6211
6823
  case 10:
6212
6824
  _a.sent();
6213
- return [4 /*yield*/, appointment_completed_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6825
+ return [4 /*yield*/, form_response_set_fields_trigger_tests()];
6214
6826
  case 11:
6215
6827
  _a.sent();
6216
- return [4 /*yield*/, trigger_events_api_tests()];
6828
+ return [4 /*yield*/, form_response_set_fields_journey_tests()];
6217
6829
  case 12:
6218
6830
  _a.sent();
6219
- return [4 /*yield*/, fields_changed_tests()];
6831
+ return [4 /*yield*/, appointment_completed_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6220
6832
  case 13:
6221
6833
  _a.sent();
6222
- return [4 /*yield*/, field_equals_trigger_tests()];
6834
+ return [4 /*yield*/, trigger_events_api_tests()];
6223
6835
  case 14:
6224
6836
  _a.sent();
6225
- return [4 /*yield*/, assign_care_team_tests()];
6837
+ return [4 /*yield*/, fields_changed_tests()];
6226
6838
  case 15:
6227
6839
  _a.sent();
6228
- return [4 /*yield*/, contact_created_tests()];
6840
+ return [4 /*yield*/, field_equals_trigger_tests()];
6229
6841
  case 16:
6230
6842
  _a.sent();
6231
- return [4 /*yield*/, appointment_created_tests()];
6843
+ return [4 /*yield*/, contact_created_tests()];
6232
6844
  case 17:
6233
6845
  _a.sent();
6234
- return [4 /*yield*/, tag_added_tests()];
6846
+ return [4 /*yield*/, appointment_created_tests()];
6235
6847
  case 18:
6236
6848
  _a.sent();
6237
- return [4 /*yield*/, order_created_tests()];
6849
+ return [4 /*yield*/, tag_added_tests()];
6238
6850
  case 19:
6239
6851
  _a.sent();
6240
- return [4 /*yield*/, formSubmittedTriggerTests()];
6852
+ return [4 /*yield*/, order_created_tests()];
6241
6853
  case 20:
6854
+ _a.sent();
6855
+ return [4 /*yield*/, formSubmittedTriggerTests()];
6856
+ case 21:
6242
6857
  _a.sent();
6243
6858
  return [2 /*return*/];
6244
6859
  }
@@ -10030,7 +10645,11 @@ export var switch_to_related_contacts_tests = function () { return __awaiter(voi
10030
10645
  return [4 /*yield*/, sdk.api.endusers.updateOne(child.id, { journeys: (_a = {}, _a[journey.id] = '', _a) })];
10031
10646
  case 6:
10032
10647
  _b.sent();
10033
- return [4 /*yield*/, async_test("Related contact got tags", function () { return pollForResults(function () { return sdk.api.endusers.getOne(parent.id); }, function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Success')); }, 50, 200); }, passOnAnyResult)];
10648
+ return [4 /*yield*/, async_test("Related contact got tags", function () { return pollForResults(function () { return sdk.api.endusers.getOne(parent.id); }, function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Success')); },
10649
+ // switchToRelatedContact (cycle 1) then the afterAction addEnduserTags (cycle 2) each wait a
10650
+ // full worker poll cycle (>= 8s, see worker pollingDelaySeconds), so ~16s worst case. Poll for
10651
+ // 30s (500ms x 60) to cover two cycles plus buffer; the old 10s window timed out flakily.
10652
+ 500, 60); }, passOnAnyResult)];
10034
10653
  case 7:
10035
10654
  _b.sent();
10036
10655
  return [2 /*return*/, Promise.all([
@@ -12728,7 +13347,42 @@ var register_as_enduser_tests = function () { return __awaiter(void 0, void 0, v
12728
13347
  return [4 /*yield*/, async_test("Enduser register", function () { return enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' }); }, passOnAnyResult)];
12729
13348
  case 1:
12730
13349
  _a.sent();
12731
- return [4 /*yield*/, async_test("Enduser register (rate limited)", function () { return enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' }); }, { shouldError: true, onError: function (e) { return e.message === "Too many requests"; } })];
13350
+ return [4 /*yield*/, async_test("Enduser register (rate limited)",
13351
+ // The register limiter records its throttle event at request start with a 1s expiry
13352
+ // (countPerInterval: 1, intervalInMS: 1000), so back-to-back registers are only
13353
+ // rate limited when they land within 1s of each other. A slow register (bcrypt on a
13354
+ // cold/loaded server) can exceed the window and flake — retry the pair instead of
13355
+ // failing on a timing miss. Any "Too many requests" from either call is the expected error.
13356
+ function () { return __awaiter(void 0, void 0, void 0, function () {
13357
+ var attempt, windowStart;
13358
+ return __generator(this, function (_a) {
13359
+ switch (_a.label) {
13360
+ case 0:
13361
+ attempt = 0;
13362
+ _a.label = 1;
13363
+ case 1:
13364
+ if (!(attempt < 3)) return [3 /*break*/, 6];
13365
+ windowStart = Date.now();
13366
+ return [4 /*yield*/, enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' })];
13367
+ case 2:
13368
+ _a.sent();
13369
+ return [4 /*yield*/, enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' })];
13370
+ case 3:
13371
+ _a.sent();
13372
+ if (Date.now() - windowStart < 900) {
13373
+ return [2 /*return*/, 'two registers within the same 1s window were not rate limited'];
13374
+ }
13375
+ return [4 /*yield*/, wait(undefined, 1100)]; // let the throttle window expire before retrying the pair
13376
+ case 4:
13377
+ _a.sent(); // let the throttle window expire before retrying the pair
13378
+ _a.label = 5;
13379
+ case 5:
13380
+ attempt++;
13381
+ return [3 /*break*/, 1];
13382
+ case 6: return [2 /*return*/, 'rate-limit timing window missed on every attempt'];
13383
+ }
13384
+ });
13385
+ }); }, { shouldError: true, onError: function (e) { return e.message === "Too many requests"; } })];
12732
13386
  case 2:
12733
13387
  _a.sent();
12734
13388
  return [4 /*yield*/, wait(undefined, 1000)];
@@ -15978,12 +16632,16 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
15978
16632
  return [4 /*yield*/, wait(undefined, 500)]; // wait for IP to be set
15979
16633
  case 4:
15980
16634
  _a.sent(); // wait for IP to be set
15981
- async_test('IP Set on Enduser creation', function () { return sdk.api.endusers.getOne(enduserId); }, { onResult: function (result) { var _a; return !!((_a = result.fields) === null || _a === void 0 ? void 0 : _a.IP); } });
16635
+ return [4 /*yield*/, async_test('IP Set on Enduser creation', function () { return sdk.api.endusers.getOne(enduserId); }, { onResult: function (result) { var _a; return !!((_a = result.fields) === null || _a === void 0 ? void 0 : _a.IP); } })
16636
+ // clear ip and set other field to make sure IP doesn't overwrite other custom fields
16637
+ ];
16638
+ case 5:
16639
+ _a.sent();
15982
16640
  // clear ip and set other field to make sure IP doesn't overwrite other custom fields
15983
16641
  return [4 /*yield*/, sdk.api.endusers.updateOne(enduserId, { fields: { otherField: "Set" } }, { replaceObjectFields: true })
15984
16642
  // should match and update in place
15985
16643
  ];
15986
- case 5:
16644
+ case 6:
15987
16645
  // clear ip and set other field to make sure IP doesn't overwrite other custom fields
15988
16646
  _a.sent();
15989
16647
  // should match and update in place
@@ -15995,15 +16653,20 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
15995
16653
  fname: 'session',
15996
16654
  lname: 'test',
15997
16655
  })];
15998
- case 6:
16656
+ case 7:
15999
16657
  // should match and update in place
16000
16658
  _a.sent();
16001
- async_test('IP Set on update', function () { return sdk.api.endusers.getOne(enduserId); }, { onResult: function (result) { var _a, _b; return !!((_a = result.fields) === null || _a === void 0 ? void 0 : _a.IP) && ((_b = result.fields) === null || _b === void 0 ? void 0 : _b.otherField) === 'Set' && result.id === enduserId; } });
16659
+ return [4 /*yield*/, wait(undefined, 500)]; // wait for IP to be re-set
16660
+ case 8:
16661
+ _a.sent(); // wait for IP to be re-set
16662
+ return [4 /*yield*/, async_test('IP Set on update', function () { return sdk.api.endusers.getOne(enduserId); }, { onResult: function (result) { var _a, _b; return !!((_a = result.fields) === null || _a === void 0 ? void 0 : _a.IP) && ((_b = result.fields) === null || _b === void 0 ? void 0 : _b.otherField) === 'Set' && result.id === enduserId; } })];
16663
+ case 9:
16664
+ _a.sent();
16002
16665
  return [4 /*yield*/, Promise.all([
16003
16666
  sdk.api.forms.deleteOne(form.id),
16004
16667
  sdk.api.endusers.deleteOne(enduserId),
16005
16668
  ])];
16006
- case 7:
16669
+ case 10:
16007
16670
  _a.sent();
16008
16671
  return [2 /*return*/];
16009
16672
  }
@@ -16024,7 +16687,7 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16024
16687
  assert(truncate_string(null, { length: 4, showEllipsis: false }) === '', 'truncate doesnt work for non string', 'trucate works for non-string');
16025
16688
  _l.label = 2;
16026
16689
  case 2:
16027
- _l.trys.push([2, 144, , 145]);
16690
+ _l.trys.push([2, 149, , 150]);
16028
16691
  get_next_reminder_timestamp_tests();
16029
16692
  form_conditional_logic_tests();
16030
16693
  return [4 /*yield*/, test_weighted_round_robin()];
@@ -16171,387 +16834,402 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16171
16834
  return [4 /*yield*/, setup_tests(sdk, sdkNonAdmin)];
16172
16835
  case 18:
16173
16836
  _l.sent();
16174
- return [4 /*yield*/, invite_user_enumeration_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16837
+ return [4 /*yield*/, resource_access_tags_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16175
16838
  case 19:
16176
16839
  _l.sent();
16177
- return [4 /*yield*/, handle_incoming_communication_cross_tenant_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16840
+ return [4 /*yield*/, beluga_manual_sync_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16178
16841
  case 20:
16179
16842
  _l.sent();
16180
- return [4 /*yield*/, calendar_event_webhook_template_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16843
+ return [4 /*yield*/, beluga_pharmacy_mappings_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16181
16844
  case 21:
16182
16845
  _l.sent();
16183
- return [4 /*yield*/, outbound_chat_sent_trigger_tests({ sdk: sdk })];
16846
+ return [4 /*yield*/, enduser_write_restrictions_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16184
16847
  case 22:
16185
16848
  _l.sent();
16186
- return [4 /*yield*/, enduser_login_rate_limits_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16849
+ return [4 /*yield*/, user_portal_settings_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16187
16850
  case 23:
16188
16851
  _l.sent();
16189
- return [4 /*yield*/, data_sync_redaction_bypass_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16852
+ return [4 /*yield*/, automation_trigger_tests()];
16190
16853
  case 24:
16191
16854
  _l.sent();
16192
- return [4 /*yield*/, ai_conversations_rbac_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16855
+ return [4 /*yield*/, invite_user_enumeration_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16193
16856
  case 25:
16194
16857
  _l.sent();
16195
- return [4 /*yield*/, cascade_role_rename_cross_tenant_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16858
+ return [4 /*yield*/, handle_incoming_communication_cross_tenant_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16196
16859
  case 26:
16197
16860
  _l.sent();
16198
- return [4 /*yield*/, self_admin_role_assignment_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16861
+ return [4 /*yield*/, calendar_event_webhook_template_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16199
16862
  case 27:
16200
16863
  _l.sent();
16201
- return [4 /*yield*/, sanitize_user_html_xss_tests()];
16864
+ return [4 /*yield*/, outbound_chat_sent_trigger_tests({ sdk: sdk })];
16202
16865
  case 28:
16203
16866
  _l.sent();
16204
- return [4 /*yield*/, prototype_pollution_tests()];
16867
+ return [4 /*yield*/, enduser_login_rate_limits_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16205
16868
  case 29:
16206
16869
  _l.sent();
16207
- return [4 /*yield*/, automation_trigger_tests()];
16870
+ return [4 /*yield*/, data_sync_redaction_bypass_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16208
16871
  case 30:
16209
16872
  _l.sent();
16210
- return [4 /*yield*/, account_switcher_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16873
+ return [4 /*yield*/, ai_conversations_rbac_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16211
16874
  case 31:
16212
16875
  _l.sent();
16213
- return [4 /*yield*/, enduser_login_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16876
+ return [4 /*yield*/, cascade_role_rename_cross_tenant_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16214
16877
  case 32:
16215
16878
  _l.sent();
16216
- return [4 /*yield*/, outbound_chat_sent_trigger_tests({ sdk: sdk })];
16879
+ return [4 /*yield*/, self_admin_role_assignment_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16217
16880
  case 33:
16218
16881
  _l.sent();
16219
- return [4 /*yield*/, enduser_cross_access_isolation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16882
+ return [4 /*yield*/, sanitize_user_html_xss_tests()];
16220
16883
  case 34:
16221
16884
  _l.sent();
16222
- return [4 /*yield*/, eom_procedure_codes_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16885
+ return [4 /*yield*/, prototype_pollution_tests()];
16223
16886
  case 35:
16224
16887
  _l.sent();
16225
- return [4 /*yield*/, cross_org_api_key_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16888
+ return [4 /*yield*/, account_switcher_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16226
16889
  case 36:
16227
16890
  _l.sent();
16228
- return [4 /*yield*/, organization_settings_duplicates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16891
+ return [4 /*yield*/, enduser_login_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16229
16892
  case 37:
16230
16893
  _l.sent();
16231
- return [4 /*yield*/, enduser_session_invalidation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16894
+ return [4 /*yield*/, outbound_chat_sent_trigger_tests({ sdk: sdk })];
16232
16895
  case 38:
16233
16896
  _l.sent();
16234
- return [4 /*yield*/, chats_analytics_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16897
+ return [4 /*yield*/, enduser_cross_access_isolation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16235
16898
  case 39:
16236
16899
  _l.sent();
16237
- return [4 /*yield*/, field_redaction_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16900
+ return [4 /*yield*/, eom_procedure_codes_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16238
16901
  case 40:
16239
16902
  _l.sent();
16240
- return [4 /*yield*/, form_submitted_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16903
+ return [4 /*yield*/, cross_org_api_key_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16241
16904
  case 41:
16242
16905
  _l.sent();
16243
- return [4 /*yield*/, date_string_validation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16906
+ return [4 /*yield*/, organization_settings_duplicates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16244
16907
  case 42:
16245
16908
  _l.sent();
16246
- return [4 /*yield*/, openloop_webhooks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16909
+ return [4 /*yield*/, enduser_session_invalidation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16247
16910
  case 43:
16248
16911
  _l.sent();
16249
- return [4 /*yield*/, mdi_webhooks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16912
+ return [4 /*yield*/, chats_analytics_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16250
16913
  case 44:
16251
16914
  _l.sent();
16252
- return [4 /*yield*/, integrations_redacted_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16915
+ return [4 /*yield*/, field_redaction_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16253
16916
  case 45:
16254
16917
  _l.sent();
16255
- return [4 /*yield*/, mdb_sort_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16918
+ return [4 /*yield*/, form_submitted_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16256
16919
  case 46:
16257
16920
  _l.sent();
16258
- return [4 /*yield*/, search_tests()];
16921
+ return [4 /*yield*/, date_string_validation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16259
16922
  case 47:
16260
16923
  _l.sent();
16261
- return [4 /*yield*/, time_tracks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16924
+ return [4 /*yield*/, openloop_webhooks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16262
16925
  case 48:
16263
16926
  _l.sent();
16264
- return [4 /*yield*/, time_tracks_historical_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16927
+ return [4 /*yield*/, mdi_webhooks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16265
16928
  case 49:
16266
16929
  _l.sent();
16267
- return [4 /*yield*/, time_tracks_correction_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16930
+ return [4 /*yield*/, integrations_redacted_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16268
16931
  case 50:
16269
16932
  _l.sent();
16270
- return [4 /*yield*/, time_tracks_review_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16933
+ return [4 /*yield*/, mdb_sort_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16271
16934
  case 51:
16272
16935
  _l.sent();
16273
- return [4 /*yield*/, time_tracks_lock_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16936
+ return [4 /*yield*/, search_tests()];
16274
16937
  case 52:
16275
16938
  _l.sent();
16276
- return [4 /*yield*/, time_tracks_edge_case_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16939
+ return [4 /*yield*/, time_tracks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16277
16940
  case 53:
16278
16941
  _l.sent();
16279
- return [4 /*yield*/, calendar_event_limits_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16942
+ return [4 /*yield*/, time_tracks_historical_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16280
16943
  case 54:
16281
16944
  _l.sent();
16282
- return [4 /*yield*/, get_some_projection_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16945
+ return [4 /*yield*/, time_tracks_correction_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16283
16946
  case 55:
16284
16947
  _l.sent();
16285
- return [4 /*yield*/, elation_user_id_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16948
+ return [4 /*yield*/, time_tracks_review_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16286
16949
  case 56:
16287
16950
  _l.sent();
16288
- return [4 /*yield*/, custom_dashboards_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16951
+ return [4 /*yield*/, time_tracks_lock_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16289
16952
  case 57:
16290
16953
  _l.sent();
16291
- return [4 /*yield*/, concurrent_build_threads_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16954
+ return [4 /*yield*/, time_tracks_edge_case_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16292
16955
  case 58:
16293
16956
  _l.sent();
16294
- return [4 /*yield*/, custom_aggregation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16957
+ return [4 /*yield*/, time_tracks_resubmit_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16295
16958
  case 59:
16296
16959
  _l.sent();
16297
- return [4 /*yield*/, no_access_permission_checks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16960
+ return [4 /*yield*/, time_tracks_appointment_duration_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16298
16961
  case 60:
16299
16962
  _l.sent();
16300
- return [4 /*yield*/, enduser_tests()];
16963
+ return [4 /*yield*/, calendar_event_limits_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16301
16964
  case 61:
16302
16965
  _l.sent();
16303
- return [4 /*yield*/, form_started_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16966
+ return [4 /*yield*/, get_some_projection_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16304
16967
  case 62:
16305
16968
  _l.sent();
16306
- return [4 /*yield*/, load_team_chat_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16969
+ return [4 /*yield*/, elation_user_id_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16307
16970
  case 63:
16308
16971
  _l.sent();
16309
- return [4 /*yield*/, ai_conversations_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16972
+ return [4 /*yield*/, custom_dashboards_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16310
16973
  case 64:
16311
16974
  _l.sent();
16312
- return [4 /*yield*/, inbox_thread_assignment_updates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16975
+ return [4 /*yield*/, concurrent_build_threads_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16313
16976
  case 65:
16314
16977
  _l.sent();
16315
- return [4 /*yield*/, inbox_thread_draft_scheduled_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16978
+ return [4 /*yield*/, custom_aggregation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16316
16979
  case 66:
16317
16980
  _l.sent();
16318
- return [4 /*yield*/, load_threads_autobuild_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16981
+ return [4 /*yield*/, no_access_permission_checks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16319
16982
  case 67:
16320
16983
  _l.sent();
16321
- return [4 /*yield*/, inbox_threads_new_fields_tests()];
16984
+ return [4 /*yield*/, enduser_tests()];
16322
16985
  case 68:
16323
16986
  _l.sent();
16324
- return [4 /*yield*/, auto_merge_form_submission_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16987
+ return [4 /*yield*/, form_started_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16325
16988
  case 69:
16326
16989
  _l.sent();
16327
- return [4 /*yield*/, beluga_pharmacy_mappings_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16990
+ return [4 /*yield*/, load_team_chat_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16328
16991
  case 70:
16329
16992
  _l.sent();
16330
- return [4 /*yield*/, threadKeyTests()];
16993
+ return [4 /*yield*/, ai_conversations_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16331
16994
  case 71:
16332
16995
  _l.sent();
16333
- return [4 /*yield*/, managed_content_enduser_access_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16996
+ return [4 /*yield*/, inbox_thread_assignment_updates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16334
16997
  case 72:
16335
16998
  _l.sent();
16336
- return [4 /*yield*/, managed_content_file_access_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16999
+ return [4 /*yield*/, inbox_thread_draft_scheduled_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16337
17000
  case 73:
16338
17001
  _l.sent();
16339
- return [4 /*yield*/, afteraction_day_of_month_delay_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17002
+ return [4 /*yield*/, load_threads_autobuild_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16340
17003
  case 74:
16341
17004
  _l.sent();
16342
- return [4 /*yield*/, bulk_assignment_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17005
+ return [4 /*yield*/, inbox_threads_new_fields_tests()];
16343
17006
  case 75:
16344
17007
  _l.sent();
16345
- return [4 /*yield*/, formsort_tests()];
17008
+ return [4 /*yield*/, auto_merge_form_submission_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16346
17009
  case 76:
16347
17010
  _l.sent();
16348
- return [4 /*yield*/, self_serve_appointment_booking_tests()];
17011
+ return [4 /*yield*/, threadKeyTests()];
16349
17012
  case 77:
16350
17013
  _l.sent();
16351
- return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
17014
+ return [4 /*yield*/, managed_content_enduser_access_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16352
17015
  case 78:
16353
17016
  _l.sent();
16354
- return [4 /*yield*/, monthly_availability_restrictions_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17017
+ return [4 /*yield*/, managed_content_file_access_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16355
17018
  case 79:
16356
17019
  _l.sent();
16357
- return [4 /*yield*/, journey_error_branching_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17020
+ return [4 /*yield*/, afteraction_day_of_month_delay_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16358
17021
  case 80:
16359
17022
  _l.sent();
16360
- return [4 /*yield*/, message_assignment_trigger_tests({ sdk: sdk })];
17023
+ return [4 /*yield*/, bulk_assignment_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16361
17024
  case 81:
16362
17025
  _l.sent();
16363
- return [4 /*yield*/, inbox_threads_building_tests()];
17026
+ return [4 /*yield*/, formsort_tests()];
16364
17027
  case 82:
16365
17028
  _l.sent();
16366
- return [4 /*yield*/, inbox_threads_loading_tests()];
17029
+ return [4 /*yield*/, self_serve_appointment_booking_tests()];
16367
17030
  case 83:
16368
17031
  _l.sent();
16369
- return [4 /*yield*/, load_inbox_data_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17032
+ return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
16370
17033
  case 84:
16371
17034
  _l.sent();
16372
- return [4 /*yield*/, enduser_observations_acknowledge_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17035
+ return [4 /*yield*/, monthly_availability_restrictions_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16373
17036
  case 85:
16374
17037
  _l.sent();
16375
- return [4 /*yield*/, user_portal_settings_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17038
+ return [4 /*yield*/, journey_error_branching_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16376
17039
  case 86:
16377
17040
  _l.sent();
16378
- return [4 /*yield*/, create_user_notifications_trigger_tests({ sdk: sdk })];
17041
+ return [4 /*yield*/, message_assignment_trigger_tests({ sdk: sdk })];
16379
17042
  case 87:
16380
17043
  _l.sent();
16381
- return [4 /*yield*/, group_mms_active_tests()];
17044
+ return [4 /*yield*/, inbox_threads_building_tests()];
16382
17045
  case 88:
16383
17046
  _l.sent();
16384
- return [4 /*yield*/, auto_reply_tests()];
17047
+ return [4 /*yield*/, inbox_threads_loading_tests()];
16385
17048
  case 89:
16386
17049
  _l.sent();
16387
- return [4 /*yield*/, relationships_tests()];
17050
+ return [4 /*yield*/, load_inbox_data_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16388
17051
  case 90:
16389
17052
  _l.sent();
16390
- return [4 /*yield*/, rate_limit_tests()];
17053
+ return [4 /*yield*/, enduser_observations_acknowledge_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16391
17054
  case 91:
16392
17055
  _l.sent();
16393
- return [4 /*yield*/, ip_address_form_tests()];
17056
+ return [4 /*yield*/, create_user_notifications_trigger_tests({ sdk: sdk })];
16394
17057
  case 92:
16395
17058
  _l.sent();
16396
- return [4 /*yield*/, bulk_update_tests()];
17059
+ return [4 /*yield*/, group_mms_active_tests()];
16397
17060
  case 93:
16398
17061
  _l.sent();
16399
- return [4 /*yield*/, calendar_events_bulk_update_tests({ sdk: sdk })];
17062
+ return [4 /*yield*/, auto_reply_tests()];
16400
17063
  case 94:
16401
17064
  _l.sent();
16402
- return [4 /*yield*/, cancel_upcoming_appointments_journey_action_test()];
17065
+ return [4 /*yield*/, relationships_tests()];
16403
17066
  case 95:
16404
17067
  _l.sent();
16405
- return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
17068
+ return [4 /*yield*/, rate_limit_tests()];
16406
17069
  case 96:
17070
+ _l.sent();
17071
+ return [4 /*yield*/, ip_address_form_tests()];
17072
+ case 97:
17073
+ _l.sent();
17074
+ return [4 /*yield*/, bulk_update_tests()];
17075
+ case 98:
17076
+ _l.sent();
17077
+ return [4 /*yield*/, calendar_events_bulk_update_tests({ sdk: sdk })];
17078
+ case 99:
17079
+ _l.sent();
17080
+ return [4 /*yield*/, cancel_upcoming_appointments_journey_action_test()];
17081
+ case 100:
17082
+ _l.sent();
17083
+ return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
17084
+ case 101:
16407
17085
  _l.sent(); // should come right after setup tests
16408
17086
  return [4 /*yield*/, sync_tests_with_access_tags()]; // should come directly after setup to avoid extra sync values
16409
- case 97:
17087
+ case 102:
16410
17088
  _l.sent(); // should come directly after setup to avoid extra sync values
16411
17089
  return [4 /*yield*/, sync_tests()]; // should come directly after setup to avoid extra sync values
16412
- case 98:
17090
+ case 103:
16413
17091
  _l.sent(); // should come directly after setup to avoid extra sync values
16414
17092
  return [4 /*yield*/, get_templated_message_tests()];
16415
- case 99:
17093
+ case 104:
16416
17094
  _l.sent();
16417
17095
  return [4 /*yield*/, updatedAt_tests()];
16418
- case 100:
17096
+ case 105:
16419
17097
  _l.sent();
16420
17098
  return [4 /*yield*/, file_source_tests()];
16421
- case 101:
17099
+ case 106:
16422
17100
  _l.sent();
16423
17101
  return [4 /*yield*/, enduser_access_tags_tests()];
16424
- case 102:
17102
+ case 107:
16425
17103
  _l.sent();
16426
17104
  return [4 /*yield*/, enduserAccessTests()];
16427
- case 103:
17105
+ case 108:
16428
17106
  _l.sent();
16429
17107
  return [4 /*yield*/, test_form_response_search()];
16430
- case 104:
17108
+ case 109:
16431
17109
  _l.sent();
16432
17110
  return [4 /*yield*/, date_parsing_tests()];
16433
- case 105:
17111
+ case 110:
16434
17112
  _l.sent();
16435
17113
  return [4 /*yield*/, fromEmailOverride_tests()];
16436
- case 106:
17114
+ case 111:
16437
17115
  _l.sent();
16438
17116
  return [4 /*yield*/, ticket_tests()];
16439
- case 107:
17117
+ case 112:
16440
17118
  _l.sent();
16441
17119
  return [4 /*yield*/, uniqueness_tests()];
16442
- case 108:
17120
+ case 113:
16443
17121
  _l.sent();
16444
17122
  return [4 /*yield*/, enduser_orders_tests()];
16445
- case 109:
17123
+ case 114:
16446
17124
  _l.sent();
16447
17125
  return [4 /*yield*/, calendar_event_care_team_tests()];
16448
- case 110:
17126
+ case 115:
16449
17127
  _l.sent();
16450
17128
  return [4 /*yield*/, merge_enduser_tests()];
16451
- case 111:
17129
+ case 116:
16452
17130
  _l.sent();
16453
17131
  return [4 /*yield*/, input_modifier_tests()];
16454
- case 112:
17132
+ case 117:
16455
17133
  _l.sent();
16456
17134
  return [4 /*yield*/, switch_to_related_contacts_tests()];
16457
- case 113:
17135
+ case 118:
16458
17136
  _l.sent();
16459
17137
  return [4 /*yield*/, redaction_tests()];
16460
- case 114:
17138
+ case 119:
16461
17139
  _l.sent();
16462
17140
  return [4 /*yield*/, no_chained_triggers_tests()];
16463
- case 115:
17141
+ case 120:
16464
17142
  _l.sent();
16465
17143
  return [4 /*yield*/, mdb_filter_tests()];
16466
- case 116:
17144
+ case 121:
16467
17145
  _l.sent();
16468
17146
  return [4 /*yield*/, superadmin_tests()];
16469
- case 117:
17147
+ case 122:
16470
17148
  _l.sent();
16471
17149
  return [4 /*yield*/, ticket_queue_tests()];
16472
- case 118:
17150
+ case 123:
16473
17151
  _l.sent();
16474
17152
  return [4 /*yield*/, vital_trigger_tests()];
16475
- case 119:
17153
+ case 124:
16476
17154
  _l.sent();
16477
17155
  return [4 /*yield*/, close_reasons_no_duplicates_tests()];
16478
- case 120:
17156
+ case 125:
16479
17157
  _l.sent();
16480
17158
  return [4 /*yield*/, register_as_enduser_tests()];
16481
- case 121:
17159
+ case 126:
16482
17160
  _l.sent();
16483
17161
  return [4 /*yield*/, lockout_tests()];
16484
- case 122:
17162
+ case 127:
16485
17163
  _l.sent();
16486
17164
  return [4 /*yield*/, delete_user_tests()
16487
17165
  // await test_send_with_template()
16488
17166
  ];
16489
- case 123:
17167
+ case 128:
16490
17168
  _l.sent();
16491
17169
  // await test_send_with_template()
16492
17170
  return [4 /*yield*/, bulk_read_tests()];
16493
- case 124:
17171
+ case 129:
16494
17172
  // await test_send_with_template()
16495
17173
  _l.sent();
16496
17174
  return [4 /*yield*/, ticket_reminder_tests()];
16497
- case 125:
17175
+ case 130:
16498
17176
  _l.sent();
16499
17177
  return [4 /*yield*/, marketing_email_unsubscribe_tests()];
16500
- case 126:
17178
+ case 131:
16501
17179
  _l.sent();
16502
17180
  return [4 /*yield*/, unique_strings_tests()];
16503
- case 127:
17181
+ case 132:
16504
17182
  _l.sent();
16505
17183
  return [4 /*yield*/, alternate_phones_tests()];
16506
- case 128:
17184
+ case 133:
16507
17185
  _l.sent();
16508
17186
  return [4 /*yield*/, role_based_access_tests()];
16509
- case 129:
17187
+ case 134:
16510
17188
  _l.sent();
16511
17189
  return [4 /*yield*/, enduser_session_tests()];
16512
- case 130:
17190
+ case 135:
16513
17191
  _l.sent();
16514
17192
  return [4 /*yield*/, nextReminderInMS_tests()];
16515
- case 131:
17193
+ case 136:
16516
17194
  _l.sent();
16517
17195
  return [4 /*yield*/, wait_for_trigger_tests()];
16518
- case 132:
17196
+ case 137:
16519
17197
  _l.sent();
16520
17198
  return [4 /*yield*/, pdf_generation()];
16521
- case 133:
17199
+ case 138:
16522
17200
  _l.sent();
16523
17201
  return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests().catch(console.error)]; // timing is unreliable, uncomment if changing logic
16524
- case 134:
17202
+ case 139:
16525
17203
  _l.sent(); // timing is unreliable, uncomment if changing logic
16526
17204
  return [4 /*yield*/, sub_organization_enduser_tests()];
16527
- case 135:
17205
+ case 140:
16528
17206
  _l.sent();
16529
17207
  return [4 /*yield*/, sub_organization_tests()];
16530
- case 136:
17208
+ case 141:
16531
17209
  _l.sent();
16532
17210
  return [4 /*yield*/, filter_by_date_tests()];
16533
- case 137:
17211
+ case 142:
16534
17212
  _l.sent();
16535
17213
  return [4 /*yield*/, generate_user_auth_tests()];
16536
- case 138:
17214
+ case 143:
16537
17215
  _l.sent();
16538
17216
  return [4 /*yield*/, generateEnduserAuthTests()];
16539
- case 139:
17217
+ case 144:
16540
17218
  _l.sent();
16541
17219
  return [4 /*yield*/, public_form_tests()];
16542
- case 140:
17220
+ case 145:
16543
17221
  _l.sent();
16544
17222
  return [4 /*yield*/, badInputTests()];
16545
- case 141:
17223
+ case 146:
16546
17224
  _l.sent();
16547
17225
  return [4 /*yield*/, filterTests()];
16548
- case 142:
17226
+ case 147:
16549
17227
  _l.sent();
16550
17228
  return [4 /*yield*/, updatesTests()];
16551
- case 143:
17229
+ case 148:
16552
17230
  _l.sent();
16553
- return [3 /*break*/, 145];
16554
- case 144:
17231
+ return [3 /*break*/, 150];
17232
+ case 149:
16555
17233
  err_1 = _l.sent();
16556
17234
  console.error("Failed during custom test");
16557
17235
  if (err_1.message && err_1.info) {
@@ -16561,18 +17239,18 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16561
17239
  console.error(err_1);
16562
17240
  }
16563
17241
  process.exit(1);
16564
- return [3 /*break*/, 145];
16565
- case 145:
17242
+ return [3 /*break*/, 150];
17243
+ case 150:
16566
17244
  _a = schema;
16567
17245
  _b = [];
16568
17246
  for (_c in _a)
16569
17247
  _b.push(_c);
16570
17248
  _i = 0;
16571
- _l.label = 146;
16572
- case 146:
16573
- if (!(_i < _b.length)) return [3 /*break*/, 149];
17249
+ _l.label = 151;
17250
+ case 151:
17251
+ if (!(_i < _b.length)) return [3 /*break*/, 154];
16574
17252
  _c = _b[_i];
16575
- if (!(_c in _a)) return [3 /*break*/, 148];
17253
+ if (!(_c in _a)) return [3 /*break*/, 153];
16576
17254
  n = _c;
16577
17255
  returnValidation = (_k = (_j = schema[n].customActions) === null || _j === void 0 ? void 0 : _j.create) === null || _k === void 0 ? void 0 : _k.returns;
16578
17256
  return [4 /*yield*/, run_generated_tests({
@@ -16583,41 +17261,41 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16583
17261
  create: returnValidation // ModelFields<ClientModel>,
16584
17262
  }
16585
17263
  })];
16586
- case 147:
17264
+ case 152:
16587
17265
  _l.sent();
16588
- _l.label = 148;
16589
- case 148:
17266
+ _l.label = 153;
17267
+ case 153:
16590
17268
  _i++;
16591
- return [3 /*break*/, 146];
16592
- case 149:
17269
+ return [3 /*break*/, 151];
17270
+ case 154:
16593
17271
  _d = tests;
16594
17272
  _f = [];
16595
17273
  for (_g in _d)
16596
17274
  _f.push(_g);
16597
17275
  _h = 0;
16598
- _l.label = 150;
16599
- case 150:
16600
- if (!(_h < _f.length)) return [3 /*break*/, 155];
17276
+ _l.label = 155;
17277
+ case 155:
17278
+ if (!(_h < _f.length)) return [3 /*break*/, 160];
16601
17279
  _g = _f[_h];
16602
- if (!(_g in _d)) return [3 /*break*/, 154];
17280
+ if (!(_g in _d)) return [3 /*break*/, 159];
16603
17281
  t = _g;
16604
- _l.label = 151;
16605
- case 151:
16606
- _l.trys.push([151, 153, , 154]);
17282
+ _l.label = 156;
17283
+ case 156:
17284
+ _l.trys.push([156, 158, , 159]);
16607
17285
  return [4 /*yield*/, tests[t]()];
16608
- case 152:
17286
+ case 157:
16609
17287
  _l.sent();
16610
- return [3 /*break*/, 154];
16611
- case 153:
17288
+ return [3 /*break*/, 159];
17289
+ case 158:
16612
17290
  err_2 = _l.sent();
16613
17291
  console.error("Error running test:");
16614
17292
  console.error(err_2);
16615
17293
  process.exit(1);
16616
- return [3 /*break*/, 154];
16617
- case 154:
17294
+ return [3 /*break*/, 159];
17295
+ case 159:
16618
17296
  _h++;
16619
- return [3 /*break*/, 150];
16620
- case 155:
17297
+ return [3 /*break*/, 155];
17298
+ case 160:
16621
17299
  process.exit();
16622
17300
  return [2 /*return*/];
16623
17301
  }