@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
@@ -137,8 +137,10 @@ var calendar_event_limits_test_1 = require("./api_tests/calendar_event_limits.te
137
137
  var custom_aggregation_test_1 = require("./api_tests/custom_aggregation.test");
138
138
  var chats_analytics_test_1 = require("./api_tests/chats_analytics.test");
139
139
  var no_access_permission_checks_test_1 = require("./api_tests/no_access_permission_checks.test");
140
+ var resource_access_tags_test_1 = require("./api_tests/resource_access_tags.test");
140
141
  var field_redaction_test_1 = require("./api_tests/field_redaction.test");
141
142
  var F_0001_data_sync_redaction_bypass_test_1 = require("./api_tests/security/F-0001-data-sync-redaction-bypass.test");
143
+ var F_0106_F_0110_enduser_write_restrictions_test_1 = require("./api_tests/security/F-0106-F-0110-enduser-write-restrictions.test");
142
144
  var F_0005_ai_conversations_rbac_test_1 = require("./api_tests/security/F-0005-ai-conversations-rbac.test");
143
145
  var F_0053_cascade_role_rename_cross_tenant_test_1 = require("./api_tests/security/F-0053-cascade-role-rename-cross-tenant.test");
144
146
  var F_0076_self_admin_role_assignment_test_1 = require("./api_tests/security/F-0076-self-admin-role-assignment.test");
@@ -162,6 +164,7 @@ var organization_settings_duplicates_test_1 = require("./api_tests/organization_
162
164
  var calendar_events_bulk_update_test_1 = require("./api_tests/calendar_events_bulk_update.test");
163
165
  var openloop_webhooks_test_1 = require("./api_tests/openloop_webhooks.test");
164
166
  var beluga_pharmacy_mappings_test_1 = require("./api_tests/beluga_pharmacy_mappings.test");
167
+ var beluga_manual_sync_test_1 = require("./api_tests/beluga_manual_sync.test");
165
168
  var mdi_webhooks_test_1 = require("./api_tests/mdi_webhooks.test");
166
169
  var account_switcher_test_1 = require("./api_tests/account_switcher.test");
167
170
  var set_fields_order_templates_test_1 = require("./api_tests/set_fields_order_templates.test");
@@ -4520,6 +4523,388 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4520
4523
  }
4521
4524
  });
4522
4525
  }); };
4526
+ // Covers the "blank status matches any order status" behavior (Order Status Equals acting as "Order Status Changed").
4527
+ // Kept separate from order_status_equals_tests because a blank-status trigger would break that test's exact tag-count assertions.
4528
+ var order_status_blank_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
4529
+ var A, A2, B, C, D, BA, BD, BD2, P, e2, e3, e4, e5, e6, e7, o7, eb1, eb2, eb3, e8, o8, e9, e10;
4530
+ return __generator(this, function (_a) {
4531
+ switch (_a.label) {
4532
+ case 0:
4533
+ (0, testing_1.log_header)("Automation Trigger Tests (Order Status Equals - blank status)");
4534
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4535
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource' } },
4536
+ action: { type: 'Add Tags', info: { tags: ['AnyOmit'] } },
4537
+ status: 'Active',
4538
+ title: "Blank status (omitted)"
4539
+ })];
4540
+ case 1:
4541
+ A = _a.sent();
4542
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4543
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: '' } },
4544
+ action: { type: 'Add Tags', info: { tags: ['AnyEmpty'] } },
4545
+ status: 'Active',
4546
+ title: "Blank status (empty string)"
4547
+ })];
4548
+ case 2:
4549
+ A2 = _a.sent();
4550
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4551
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: '', skus: ['MATCH-SKU'] } },
4552
+ action: { type: 'Add Tags', info: { tags: ['BlankWithSku'] } },
4553
+ status: 'Active',
4554
+ title: "Blank status with SKU filter"
4555
+ })];
4556
+ case 3:
4557
+ B = _a.sent();
4558
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4559
+ event: { type: 'Order Status Equals', info: { source: 'OtherSource' } },
4560
+ action: { type: 'Add Tags', info: { tags: ['WrongSource'] } },
4561
+ status: 'Active',
4562
+ title: "Blank status, other source"
4563
+ })];
4564
+ case 4:
4565
+ C = _a.sent();
4566
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4567
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: 'Shipped' } },
4568
+ action: { type: 'Add Tags', info: { tags: ['ShippedOnly'] } },
4569
+ status: 'Active',
4570
+ title: "Status-specific (regression)"
4571
+ })
4572
+ // BA/BD exercise the separate bulk-create code path (createSome of 2+); kept on their own source so the
4573
+ // pre-existing "bulk ignores sku/protocol filters" divergence doesn't affect these assertions.
4574
+ ];
4575
+ case 5:
4576
+ D = _a.sent();
4577
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4578
+ event: { type: 'Order Status Equals', info: { source: 'BulkSource' } },
4579
+ action: { type: 'Add Tags', info: { tags: ['BulkAny'] } },
4580
+ status: 'Active',
4581
+ title: "Bulk blank status"
4582
+ })];
4583
+ case 6:
4584
+ BA = _a.sent();
4585
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4586
+ event: { type: 'Order Status Equals', info: { source: 'BulkSource', status: 'Shipped' } },
4587
+ action: { type: 'Add Tags', info: { tags: ['BulkShipped'] } },
4588
+ status: 'Active',
4589
+ title: "Bulk status-specific"
4590
+ })
4591
+ // BD2's status matches NO order in the bulk batch below; backwards-compat: it must never fire (the query's $in
4592
+ // branch excludes it entirely, exactly as before the blank-status change).
4593
+ ];
4594
+ case 7:
4595
+ BD = _a.sent();
4596
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4597
+ event: { type: 'Order Status Equals', info: { source: 'BulkSource', status: 'NeverInBatch' } },
4598
+ action: { type: 'Add Tags', info: { tags: ['BulkNever'] } },
4599
+ status: 'Active',
4600
+ title: "Bulk status-specific (absent from batch)"
4601
+ })
4602
+ // P: blank status composed with a protocol filter (proves blank works with non-SKU filters + the no-protocol branch)
4603
+ ];
4604
+ case 8:
4605
+ BD2 = _a.sent();
4606
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4607
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: '', protocols: ['Protocol-A'] } },
4608
+ action: { type: 'Add Tags', info: { tags: ['BlankProtocol'] } },
4609
+ status: 'Active',
4610
+ title: "Blank status with protocol filter"
4611
+ })
4612
+ // Case 1: validation accepts triggers with no status / empty status (A and A2 created above without error)
4613
+ ];
4614
+ case 9:
4615
+ P = _a.sent();
4616
+ // Case 1: validation accepts triggers with no status / empty status (A and A2 created above without error)
4617
+ return [4 /*yield*/, (0, testing_1.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; } })];
4618
+ case 10:
4619
+ // Case 1: validation accepts triggers with no status / empty status (A and A2 created above without error)
4620
+ _a.sent();
4621
+ return [4 /*yield*/, (0, testing_1.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 === ''; } })
4622
+ // Case 2: blank status fires on an arbitrary status
4623
+ ];
4624
+ case 11:
4625
+ _a.sent();
4626
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4627
+ case 12:
4628
+ e2 = _a.sent();
4629
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'StatusOne', source: 'BlankSource', title: 'Title', externalId: 'blank-1', enduserId: e2.id })];
4630
+ case 13:
4631
+ _a.sent();
4632
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4633
+ case 14:
4634
+ _a.sent(); // allow triggers to happen
4635
+ return [4 /*yield*/, (0, testing_1.async_test)("Blank status fires on arbitrary status (no other tags)", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
4636
+ var _a, _b, _c, _d, _f;
4637
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4638
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4639
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BlankWithSku'))
4640
+ && !((_d = e.tags) === null || _d === void 0 ? void 0 : _d.includes('WrongSource'))
4641
+ && !((_f = e.tags) === null || _f === void 0 ? void 0 : _f.includes('ShippedOnly')));
4642
+ } })
4643
+ // Case 3: blank status fires on a totally different status value (status-value-independent)
4644
+ ];
4645
+ case 15:
4646
+ _a.sent();
4647
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4648
+ case 16:
4649
+ e3 = _a.sent();
4650
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'totally-arbitrary-xyz', source: 'BlankSource', title: 'Title', externalId: 'blank-2', enduserId: e3.id })];
4651
+ case 17:
4652
+ _a.sent();
4653
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4654
+ case 18:
4655
+ _a.sent(); // allow triggers to happen
4656
+ return [4 /*yield*/, (0, testing_1.async_test)("Blank status fires on a different arbitrary status", function () { return sdk.api.endusers.getOne(e3.id); }, { onResult: function (e) {
4657
+ var _a, _b;
4658
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4659
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty')));
4660
+ } })
4661
+ // Case 4: source isolation - blank trigger does not fire for a different source
4662
+ ];
4663
+ case 19:
4664
+ _a.sent();
4665
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4666
+ case 20:
4667
+ e4 = _a.sent();
4668
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'StatusOne', source: 'DifferentSource', title: 'Title', externalId: 'blank-3', enduserId: e4.id })];
4669
+ case 21:
4670
+ _a.sent();
4671
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4672
+ case 22:
4673
+ _a.sent(); // allow triggers to happen
4674
+ return [4 /*yield*/, (0, testing_1.async_test)("Blank status is still scoped to its source", function () { return sdk.api.endusers.getOne(e4.id); }, { onResult: function (e) {
4675
+ var _a, _b, _c;
4676
+ return !!(!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4677
+ && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4678
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('WrongSource')) // C only matches OtherSource
4679
+ );
4680
+ } })
4681
+ // Case 5a: other filters still enforced with blank status (sku mismatch)
4682
+ ];
4683
+ case 23:
4684
+ _a.sent();
4685
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4686
+ case 24:
4687
+ e5 = _a.sent();
4688
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'blank-4', enduserId: e5.id, sku: 'NOPE' })];
4689
+ case 25:
4690
+ _a.sent();
4691
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4692
+ case 26:
4693
+ _a.sent(); // allow triggers to happen
4694
+ return [4 /*yield*/, (0, testing_1.async_test)("Blank status + SKU filter does not fire on SKU mismatch", function () { return sdk.api.endusers.getOne(e5.id); }, { onResult: function (e) {
4695
+ var _a, _b, _c;
4696
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4697
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4698
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BlankWithSku')));
4699
+ } })
4700
+ // Case 5b: other filters still enforced with blank status (sku match)
4701
+ ];
4702
+ case 27:
4703
+ _a.sent();
4704
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4705
+ case 28:
4706
+ e6 = _a.sent();
4707
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'blank-5', enduserId: e6.id, sku: 'MATCH-SKU' })];
4708
+ case 29:
4709
+ _a.sent();
4710
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4711
+ case 30:
4712
+ _a.sent(); // allow triggers to happen
4713
+ return [4 /*yield*/, (0, testing_1.async_test)("Blank status + SKU filter fires on SKU match", function () { return sdk.api.endusers.getOne(e6.id); }, { onResult: function (e) {
4714
+ var _a, _b, _c;
4715
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4716
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4717
+ && ((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BlankWithSku')));
4718
+ } })
4719
+ // Case 6: update path + regression coexistence with a status-specific trigger
4720
+ ];
4721
+ case 31:
4722
+ _a.sent();
4723
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4724
+ case 32:
4725
+ e7 = _a.sent();
4726
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Created', source: 'BlankSource', title: 'Title', externalId: 'blank-6', enduserId: e7.id })];
4727
+ case 33:
4728
+ o7 = _a.sent();
4729
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4730
+ case 34:
4731
+ _a.sent(); // allow triggers to happen
4732
+ return [4 /*yield*/, (0, testing_1.async_test)("Blank fires on create; status-specific (Shipped) does not yet", function () { return sdk.api.endusers.getOne(e7.id); }, { onResult: function (e) {
4733
+ var _a, _b, _c;
4734
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4735
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4736
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('ShippedOnly')));
4737
+ } })
4738
+ // update to a NON-matching status: blank fires again, but the status-specific trigger must stay un-fired
4739
+ ];
4740
+ case 35:
4741
+ _a.sent();
4742
+ // update to a NON-matching status: blank fires again, but the status-specific trigger must stay un-fired
4743
+ return [4 /*yield*/, sdk.api.enduser_orders.updateOne(o7.id, { status: 'Delivered', externalId: 'blank-6-delivered' })];
4744
+ case 36:
4745
+ // update to a NON-matching status: blank fires again, but the status-specific trigger must stay un-fired
4746
+ _a.sent();
4747
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4748
+ case 37:
4749
+ _a.sent(); // allow triggers to happen
4750
+ return [4 /*yield*/, (0, testing_1.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) {
4751
+ var _a, _b, _c;
4752
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit') // proves the update event was processed
4753
+ )
4754
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4755
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('ShippedOnly')) // 'Delivered' must not trigger the 'Shipped' trigger
4756
+ );
4757
+ } })
4758
+ // now update to the matching status: status-specific trigger fires
4759
+ ];
4760
+ case 38:
4761
+ _a.sent();
4762
+ // now update to the matching status: status-specific trigger fires
4763
+ return [4 /*yield*/, sdk.api.enduser_orders.updateOne(o7.id, { status: 'Shipped', externalId: 'blank-6-shipped' })];
4764
+ case 39:
4765
+ // now update to the matching status: status-specific trigger fires
4766
+ _a.sent();
4767
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4768
+ case 40:
4769
+ _a.sent(); // allow triggers to happen
4770
+ return [4 /*yield*/, (0, testing_1.async_test)("Blank fires on update too; status-specific (Shipped) now fires", function () { return sdk.api.endusers.getOne(e7.id); }, { onResult: function (e) {
4771
+ var _a, _b, _c;
4772
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4773
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4774
+ && ((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('ShippedOnly')));
4775
+ } })
4776
+ // Case 7: bulk create path (createSome of 2+) must honor blank status + status-specific selectivity.
4777
+ // This exercises a SEPARATE matching code path (handle_orders_create bulk branch) from single creates.
4778
+ ];
4779
+ case 41:
4780
+ _a.sent();
4781
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4782
+ case 42:
4783
+ eb1 = _a.sent();
4784
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4785
+ case 43:
4786
+ eb2 = _a.sent();
4787
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4788
+ case 44:
4789
+ eb3 = _a.sent();
4790
+ return [4 /*yield*/, sdk.api.enduser_orders.createSome([
4791
+ { status: 'StatusA', source: 'BulkSource', title: 'Title', externalId: 'bulk-1', enduserId: eb1.id },
4792
+ { status: 'Shipped', source: 'BulkSource', title: 'Title', externalId: 'bulk-2', enduserId: eb2.id },
4793
+ { status: 'StatusB', source: 'BulkSource', title: 'Title', externalId: 'bulk-3', enduserId: eb3.id },
4794
+ ])];
4795
+ case 45:
4796
+ _a.sent();
4797
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4798
+ case 46:
4799
+ _a.sent(); // allow triggers to happen
4800
+ return [4 /*yield*/, (0, testing_1.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'))); } })];
4801
+ case 47:
4802
+ _a.sent();
4803
+ return [4 /*yield*/, (0, testing_1.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'))); } })];
4804
+ case 48:
4805
+ _a.sent();
4806
+ return [4 /*yield*/, (0, testing_1.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'))); } })
4807
+ // Case 8: an order update that does NOT change status must not run the handler (true "status changed" semantic).
4808
+ ];
4809
+ case 49:
4810
+ _a.sent();
4811
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4812
+ case 50:
4813
+ e8 = _a.sent();
4814
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Shipped', source: 'BlankSource', title: 'Title', externalId: 'noChange-1', enduserId: e8.id })];
4815
+ case 51:
4816
+ o8 = _a.sent();
4817
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4818
+ case 52:
4819
+ _a.sent(); // allow triggers to happen
4820
+ return [4 /*yield*/, (0, testing_1.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'))); } })
4821
+ // clear tags (replaceObjectFields forces the empty array to actually replace)
4822
+ ];
4823
+ case 53:
4824
+ _a.sent();
4825
+ // clear tags (replaceObjectFields forces the empty array to actually replace)
4826
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e8.id, { tags: [] }, { replaceObjectFields: true })
4827
+ // sanity-check the clear actually took, so a later failure points at re-firing rather than a broken clear
4828
+ ];
4829
+ case 54:
4830
+ // clear tags (replaceObjectFields forces the empty array to actually replace)
4831
+ _a.sent();
4832
+ // sanity-check the clear actually took, so a later failure points at re-firing rather than a broken clear
4833
+ return [4 /*yield*/, (0, testing_1.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); } })
4834
+ // update a non-status field (status stays 'Shipped'); handler should early-return and re-add nothing.
4835
+ // If it wrongly fired, the blank triggers A/A2 would re-add AnyOmit/AnyEmpty, so empty tags proves non-firing.
4836
+ ];
4837
+ case 55:
4838
+ // sanity-check the clear actually took, so a later failure points at re-firing rather than a broken clear
4839
+ _a.sent();
4840
+ // update a non-status field (status stays 'Shipped'); handler should early-return and re-add nothing.
4841
+ // If it wrongly fired, the blank triggers A/A2 would re-add AnyOmit/AnyEmpty, so empty tags proves non-firing.
4842
+ return [4 /*yield*/, sdk.api.enduser_orders.updateOne(o8.id, { tracking: 'tracking-123', externalId: 'noChange-1b' })];
4843
+ case 56:
4844
+ // update a non-status field (status stays 'Shipped'); handler should early-return and re-add nothing.
4845
+ // If it wrongly fired, the blank triggers A/A2 would re-add AnyOmit/AnyEmpty, so empty tags proves non-firing.
4846
+ _a.sent();
4847
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4848
+ case 57:
4849
+ _a.sent(); // allow triggers to happen
4850
+ return [4 /*yield*/, (0, testing_1.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); } })
4851
+ // Case 9: protocol filter with blank status - order without a protocol must not fire (the order.protocol ? : false branch)
4852
+ ];
4853
+ case 58:
4854
+ _a.sent();
4855
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4856
+ case 59:
4857
+ e9 = _a.sent();
4858
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'proto-1', enduserId: e9.id })];
4859
+ case 60:
4860
+ _a.sent();
4861
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4862
+ case 61:
4863
+ _a.sent(); // allow triggers to happen
4864
+ return [4 /*yield*/, (0, testing_1.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'))); } })];
4865
+ case 62:
4866
+ _a.sent();
4867
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4868
+ case 63:
4869
+ e10 = _a.sent();
4870
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'proto-2', enduserId: e10.id, protocol: 'Protocol-A' })];
4871
+ case 64:
4872
+ _a.sent();
4873
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
4874
+ case 65:
4875
+ _a.sent(); // allow triggers to happen
4876
+ return [4 /*yield*/, (0, testing_1.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'))); } })];
4877
+ case 66:
4878
+ _a.sent();
4879
+ return [4 /*yield*/, Promise.all([
4880
+ sdk.api.automation_triggers.deleteOne(A.id),
4881
+ sdk.api.automation_triggers.deleteOne(A2.id),
4882
+ sdk.api.automation_triggers.deleteOne(B.id),
4883
+ sdk.api.automation_triggers.deleteOne(C.id),
4884
+ sdk.api.automation_triggers.deleteOne(D.id),
4885
+ sdk.api.automation_triggers.deleteOne(BA.id),
4886
+ sdk.api.automation_triggers.deleteOne(BD.id),
4887
+ sdk.api.automation_triggers.deleteOne(BD2.id),
4888
+ sdk.api.automation_triggers.deleteOne(P.id),
4889
+ sdk.api.endusers.deleteOne(e2.id),
4890
+ sdk.api.endusers.deleteOne(e3.id),
4891
+ sdk.api.endusers.deleteOne(e4.id),
4892
+ sdk.api.endusers.deleteOne(e5.id),
4893
+ sdk.api.endusers.deleteOne(e6.id),
4894
+ sdk.api.endusers.deleteOne(e7.id),
4895
+ sdk.api.endusers.deleteOne(eb1.id),
4896
+ sdk.api.endusers.deleteOne(eb2.id),
4897
+ sdk.api.endusers.deleteOne(eb3.id),
4898
+ sdk.api.endusers.deleteOne(e8.id),
4899
+ sdk.api.endusers.deleteOne(e9.id),
4900
+ sdk.api.endusers.deleteOne(e10.id),
4901
+ ])];
4902
+ case 67:
4903
+ _a.sent();
4904
+ return [2 /*return*/];
4905
+ }
4906
+ });
4907
+ }); };
4523
4908
  var tag_added_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
4524
4909
  var t1, t2, t3, e;
4525
4910
  return __generator(this, function (_a) {
@@ -5168,7 +5553,7 @@ var contact_created_tests = function () { return __awaiter(void 0, void 0, void
5168
5553
  }); };
5169
5554
  // includes primary care team tests
5170
5555
  var assign_care_team_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
5171
- var t1, t2, t3, e1;
5556
+ var t1, t2, t3, e1, t4, e2, e3, e4, t5, e5, e6, e7, bulkEvents, t6, bulkEventsAny, u2, t7, e8, t8, e9, e10, bulkEventsOne;
5172
5557
  return __generator(this, function (_a) {
5173
5558
  switch (_a.label) {
5174
5559
  case 0:
@@ -5251,30 +5636,257 @@ var assign_care_team_tests = function () { return __awaiter(void 0, void 0, void
5251
5636
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
5252
5637
  case 13:
5253
5638
  _a.sent(); // allow triggers to happen
5254
- return [4 /*yield*/, (0, testing_1.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]; } })];
5639
+ return [4 /*yield*/, (0, testing_1.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]; } })
5640
+ // restrictByState (state credentialing) tests
5641
+ ];
5255
5642
  case 14:
5256
5643
  _a.sent();
5644
+ // restrictByState (state credentialing) tests
5645
+ return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, { credentialedStates: [{ state: 'CA' }] }, { replaceObjectFields: true })];
5646
+ case 15:
5647
+ // restrictByState (state credentialing) tests
5648
+ _a.sent();
5649
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
5650
+ title: 't4',
5651
+ event: { type: 'Tag Added', info: { tag: 'Trigger State' } },
5652
+ action: {
5653
+ type: "Assign Care Team",
5654
+ info: {
5655
+ tags: { qualifier: 'One Of', values: ["Assignment"] },
5656
+ restrictByState: true,
5657
+ },
5658
+ },
5659
+ status: 'Active',
5660
+ })];
5661
+ case 16:
5662
+ t4 = _a.sent();
5663
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'CA' })];
5664
+ case 17:
5665
+ e2 = _a.sent();
5666
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'NY' })];
5667
+ case 18:
5668
+ e3 = _a.sent();
5669
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
5670
+ case 19:
5671
+ e4 = _a.sent();
5257
5672
  return [4 /*yield*/, Promise.all([
5258
- sdk.api.users.updateOne(sdk.userInfo.id, { tags: [] }, { replaceObjectFields: true }),
5259
- sdk.api.endusers.deleteOne(e1.id),
5260
- sdk.api.automation_triggers.deleteOne(t1.id),
5261
- sdk.api.automation_triggers.deleteOne(t2.id),
5262
- sdk.api.automation_triggers.deleteOne(t3.id),
5673
+ sdk.api.endusers.updateOne(e2.id, { tags: ['Trigger State'] }),
5674
+ sdk.api.endusers.updateOne(e3.id, { tags: ['Trigger State'] }),
5675
+ sdk.api.endusers.updateOne(e4.id, { tags: ['Trigger State'] }),
5263
5676
  ])];
5264
- case 15:
5677
+ case 20:
5265
5678
  _a.sent();
5266
- return [2 /*return*/];
5267
- }
5268
- });
5269
- }); };
5270
- var set_fields_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
5271
- 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;
5272
- return __generator(this, function (_b) {
5273
- switch (_b.label) {
5274
- case 0:
5275
- (0, testing_1.log_header)("Automation Trigger Tests (Set Fields)");
5276
- // First, test the date calculation utilities directly
5277
- (0, testing_1.log_header)("Date Utility Function Tests");
5679
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
5680
+ case 21:
5681
+ _a.sent(); // allow triggers to happen
5682
+ return [4 /*yield*/, (0, testing_1.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; } })];
5683
+ case 22:
5684
+ _a.sent();
5685
+ return [4 /*yield*/, (0, testing_1.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); } })];
5686
+ case 23:
5687
+ _a.sent();
5688
+ return [4 /*yield*/, (0, testing_1.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); } })
5689
+ // creating multiple appointments in a single request routes through bulk_handle_actions_for_triggers
5690
+ // (unlike Tag Added above, which uses the per-enduser handler), covering the bulk Assign Care Team
5691
+ // path with mixed enduser states in one batch
5692
+ ];
5693
+ case 24:
5694
+ _a.sent();
5695
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
5696
+ title: 't5',
5697
+ event: { type: 'Appointment Created', info: { titles: ['Bulk Assign State'] } },
5698
+ action: {
5699
+ type: "Assign Care Team",
5700
+ info: {
5701
+ tags: { qualifier: 'One Of', values: ["Assignment"] },
5702
+ restrictByState: true,
5703
+ setAsPrimary: true, // not yet supported in the bulk handler — see canary assertion below
5704
+ },
5705
+ },
5706
+ status: 'Active',
5707
+ })];
5708
+ case 25:
5709
+ t5 = _a.sent();
5710
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'CA' })];
5711
+ case 26:
5712
+ e5 = _a.sent();
5713
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'NY' })];
5714
+ case 27:
5715
+ e6 = _a.sent();
5716
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
5717
+ case 28:
5718
+ e7 = _a.sent();
5719
+ return [4 /*yield*/, sdk.api.calendar_events.createSome([
5720
+ { title: 'Bulk Assign State', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e5.id }] },
5721
+ { title: 'Bulk Assign State', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e6.id }] },
5722
+ { title: 'Bulk Assign State', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e7.id }] },
5723
+ ])];
5724
+ case 29:
5725
+ bulkEvents = (_a.sent()).created;
5726
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
5727
+ case 30:
5728
+ _a.sent(); // allow triggers to happen
5729
+ return [4 /*yield*/, (0, testing_1.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; } })
5730
+ // canary: the bulk handler doesn't implement setAsPrimary (the per-enduser handler does), so a set
5731
+ // primaryAssignee here means multi-event creates no longer route through the bulk handler (or
5732
+ // setAsPrimary was implemented there — update this test if so)
5733
+ ];
5734
+ case 31:
5735
+ _a.sent();
5736
+ // canary: the bulk handler doesn't implement setAsPrimary (the per-enduser handler does), so a set
5737
+ // primaryAssignee here means multi-event creates no longer route through the bulk handler (or
5738
+ // setAsPrimary was implemented there — update this test if so)
5739
+ return [4 /*yield*/, (0, testing_1.async_test)("(Bulk) Primary not set (bulk handler routing canary)", function () { return sdk.api.endusers.getOne(e5.id); }, { onResult: function (e) { return !e.primaryAssignee; } })];
5740
+ case 32:
5741
+ // canary: the bulk handler doesn't implement setAsPrimary (the per-enduser handler does), so a set
5742
+ // primaryAssignee here means multi-event creates no longer route through the bulk handler (or
5743
+ // setAsPrimary was implemented there — update this test if so)
5744
+ _a.sent();
5745
+ return [4 /*yield*/, (0, testing_1.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); } })];
5746
+ case 33:
5747
+ _a.sent();
5748
+ return [4 /*yield*/, (0, testing_1.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); } })
5749
+ // bulk path with restrictByState off: state should not matter (default behavior unchanged)
5750
+ ];
5751
+ case 34:
5752
+ _a.sent();
5753
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
5754
+ title: 't6',
5755
+ event: { type: 'Appointment Created', info: { titles: ['Bulk Assign Any'] } },
5756
+ action: {
5757
+ type: "Assign Care Team",
5758
+ info: {
5759
+ tags: { qualifier: 'One Of', values: ["Assignment"] },
5760
+ },
5761
+ },
5762
+ status: 'Active',
5763
+ })];
5764
+ case 35:
5765
+ t6 = _a.sent();
5766
+ return [4 /*yield*/, sdk.api.calendar_events.createSome([
5767
+ { title: 'Bulk Assign Any', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e6.id }] },
5768
+ { title: 'Bulk Assign Any', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e7.id }] },
5769
+ ])];
5770
+ case 36:
5771
+ bulkEventsAny = (_a.sent()).created;
5772
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
5773
+ case 37:
5774
+ _a.sent(); // allow triggers to happen
5775
+ return [4 /*yield*/, (0, testing_1.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; } })];
5776
+ case 38:
5777
+ _a.sent();
5778
+ return [4 /*yield*/, (0, testing_1.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; } })
5779
+ // limitToOneUser on both handler branches: with two matching users, exactly one is assigned
5780
+ ];
5781
+ case 39:
5782
+ _a.sent();
5783
+ return [4 /*yield*/, sdk.api.users.createOne({
5784
+ email: "assign-care-team-limit-".concat(Date.now(), "@tellescope.example"), fname: 'Throwaway', lname: 'Assignment',
5785
+ })];
5786
+ case 40:
5787
+ u2 = _a.sent();
5788
+ return [4 /*yield*/, sdk.api.users.updateOne(u2.id, { tags: ['Assignment'], credentialedStates: [{ state: 'CA' }] }, { replaceObjectFields: true })];
5789
+ case 41:
5790
+ _a.sent();
5791
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
5792
+ title: 't7',
5793
+ event: { type: 'Tag Added', info: { tag: 'Trigger One' } },
5794
+ action: {
5795
+ type: "Assign Care Team",
5796
+ info: {
5797
+ tags: { qualifier: 'One Of', values: ["Assignment"] },
5798
+ restrictByState: true,
5799
+ limitToOneUser: true,
5800
+ },
5801
+ },
5802
+ status: 'Active',
5803
+ })];
5804
+ case 42:
5805
+ t7 = _a.sent();
5806
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'CA' })];
5807
+ case 43:
5808
+ e8 = _a.sent();
5809
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e8.id, { tags: ['Trigger One'] })];
5810
+ case 44:
5811
+ _a.sent();
5812
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
5813
+ case 45:
5814
+ _a.sent(); // allow triggers to happen
5815
+ return [4 /*yield*/, (0, testing_1.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; } })];
5816
+ case 46:
5817
+ _a.sent();
5818
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
5819
+ title: 't8',
5820
+ event: { type: 'Appointment Created', info: { titles: ['Bulk Assign One'] } },
5821
+ action: {
5822
+ type: "Assign Care Team",
5823
+ info: {
5824
+ tags: { qualifier: 'One Of', values: ["Assignment"] },
5825
+ restrictByState: true,
5826
+ limitToOneUser: true,
5827
+ },
5828
+ },
5829
+ status: 'Active',
5830
+ })];
5831
+ case 47:
5832
+ t8 = _a.sent();
5833
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'CA' })];
5834
+ case 48:
5835
+ e9 = _a.sent();
5836
+ return [4 /*yield*/, sdk.api.endusers.createOne({ state: 'CA' })];
5837
+ case 49:
5838
+ e10 = _a.sent();
5839
+ return [4 /*yield*/, sdk.api.calendar_events.createSome([
5840
+ { title: 'Bulk Assign One', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e9.id }] },
5841
+ { title: 'Bulk Assign One', durationInMinutes: 30, startTimeInMS: Date.now(), attendees: [{ type: 'enduser', id: e10.id }] },
5842
+ ])];
5843
+ case 50:
5844
+ bulkEventsOne = (_a.sent()).created;
5845
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // allow triggers to happen
5846
+ case 51:
5847
+ _a.sent(); // allow triggers to happen
5848
+ return [4 /*yield*/, (0, testing_1.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; } })];
5849
+ case 52:
5850
+ _a.sent();
5851
+ return [4 /*yield*/, (0, testing_1.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; } })];
5852
+ case 53:
5853
+ _a.sent();
5854
+ return [4 /*yield*/, Promise.all(__spreadArray(__spreadArray(__spreadArray([
5855
+ sdk.api.users.updateOne(sdk.userInfo.id, { tags: [], credentialedStates: [] }, { replaceObjectFields: true }),
5856
+ sdk.api.endusers.deleteOne(e1.id),
5857
+ sdk.api.endusers.deleteOne(e2.id),
5858
+ sdk.api.endusers.deleteOne(e3.id),
5859
+ sdk.api.endusers.deleteOne(e4.id),
5860
+ sdk.api.endusers.deleteOne(e5.id),
5861
+ sdk.api.endusers.deleteOne(e6.id),
5862
+ sdk.api.endusers.deleteOne(e7.id),
5863
+ sdk.api.automation_triggers.deleteOne(t1.id),
5864
+ sdk.api.automation_triggers.deleteOne(t2.id),
5865
+ sdk.api.automation_triggers.deleteOne(t3.id),
5866
+ sdk.api.endusers.deleteOne(e8.id),
5867
+ sdk.api.endusers.deleteOne(e9.id),
5868
+ sdk.api.endusers.deleteOne(e10.id),
5869
+ sdk.api.users.deleteOne(u2.id),
5870
+ sdk.api.automation_triggers.deleteOne(t4.id),
5871
+ sdk.api.automation_triggers.deleteOne(t5.id),
5872
+ sdk.api.automation_triggers.deleteOne(t6.id),
5873
+ sdk.api.automation_triggers.deleteOne(t7.id),
5874
+ sdk.api.automation_triggers.deleteOne(t8.id)
5875
+ ], 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))];
5876
+ case 54:
5877
+ _a.sent();
5878
+ return [2 /*return*/];
5879
+ }
5880
+ });
5881
+ }); };
5882
+ var set_fields_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
5883
+ 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;
5884
+ return __generator(this, function (_b) {
5885
+ switch (_b.label) {
5886
+ case 0:
5887
+ (0, testing_1.log_header)("Automation Trigger Tests (Set Fields)");
5888
+ // First, test the date calculation utilities directly
5889
+ (0, testing_1.log_header)("Date Utility Function Tests");
5278
5890
  return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require("@tellescope/utilities")); })];
5279
5891
  case 1:
5280
5892
  _a = _b.sent(), calculate_days_between_dates = _a.calculate_days_between_dates, parse_date_string = _a.parse_date_string, resolve_date_value = _a.resolve_date_value, calculate_days_between_dates_from_enduser = _a.calculate_days_between_dates_from_enduser, calculate_date_difference_for_set_fields = _a.calculate_date_difference_for_set_fields;
@@ -6212,65 +6824,68 @@ var automation_trigger_tests = function () { return __awaiter(void 0, void 0, vo
6212
6824
  switch (_a.label) {
6213
6825
  case 0:
6214
6826
  (0, testing_1.log_header)("Automation Trigger Tests");
6215
- return [4 /*yield*/, (0, push_forms_to_portal_group_completion_test_1.push_forms_to_portal_group_completion_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6827
+ return [4 /*yield*/, assign_care_team_tests()];
6216
6828
  case 1:
6217
6829
  _a.sent();
6218
- return [4 /*yield*/, order_status_equals_tests()];
6830
+ return [4 /*yield*/, (0, push_forms_to_portal_group_completion_test_1.push_forms_to_portal_group_completion_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6219
6831
  case 2:
6220
6832
  _a.sent();
6221
- return [4 /*yield*/, (0, set_fields_order_templates_test_1.set_fields_order_templates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6833
+ return [4 /*yield*/, order_status_equals_tests()];
6222
6834
  case 3:
6223
6835
  _a.sent();
6224
- return [4 /*yield*/, (0, medication_added_trigger_test_1.medication_added_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6836
+ return [4 /*yield*/, order_status_blank_tests()];
6225
6837
  case 4:
6226
6838
  _a.sent();
6227
- return [4 /*yield*/, appointment_cancelled_tests()];
6839
+ return [4 /*yield*/, (0, set_fields_order_templates_test_1.set_fields_order_templates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6228
6840
  case 5:
6229
6841
  _a.sent();
6230
- return [4 /*yield*/, set_fields_tests()];
6842
+ return [4 /*yield*/, (0, medication_added_trigger_test_1.medication_added_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6231
6843
  case 6:
6232
6844
  _a.sent();
6233
- return [4 /*yield*/, (0, purchase_made_trigger_test_1.purchase_made_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6845
+ return [4 /*yield*/, appointment_cancelled_tests()];
6234
6846
  case 7:
6235
6847
  _a.sent();
6236
- return [4 /*yield*/, (0, appointment_rescheduled_trigger_test_1.appointment_rescheduled_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6848
+ return [4 /*yield*/, set_fields_tests()];
6237
6849
  case 8:
6238
6850
  _a.sent();
6239
- return [4 /*yield*/, form_response_set_fields_trigger_tests()];
6851
+ return [4 /*yield*/, (0, purchase_made_trigger_test_1.purchase_made_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6240
6852
  case 9:
6241
6853
  _a.sent();
6242
- return [4 /*yield*/, form_response_set_fields_journey_tests()];
6854
+ return [4 /*yield*/, (0, appointment_rescheduled_trigger_test_1.appointment_rescheduled_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6243
6855
  case 10:
6244
6856
  _a.sent();
6245
- return [4 /*yield*/, (0, appointment_completed_trigger_test_1.appointment_completed_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6857
+ return [4 /*yield*/, form_response_set_fields_trigger_tests()];
6246
6858
  case 11:
6247
6859
  _a.sent();
6248
- return [4 /*yield*/, trigger_events_api_tests()];
6860
+ return [4 /*yield*/, form_response_set_fields_journey_tests()];
6249
6861
  case 12:
6250
6862
  _a.sent();
6251
- return [4 /*yield*/, fields_changed_tests()];
6863
+ return [4 /*yield*/, (0, appointment_completed_trigger_test_1.appointment_completed_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6252
6864
  case 13:
6253
6865
  _a.sent();
6254
- return [4 /*yield*/, field_equals_trigger_tests()];
6866
+ return [4 /*yield*/, trigger_events_api_tests()];
6255
6867
  case 14:
6256
6868
  _a.sent();
6257
- return [4 /*yield*/, assign_care_team_tests()];
6869
+ return [4 /*yield*/, fields_changed_tests()];
6258
6870
  case 15:
6259
6871
  _a.sent();
6260
- return [4 /*yield*/, contact_created_tests()];
6872
+ return [4 /*yield*/, field_equals_trigger_tests()];
6261
6873
  case 16:
6262
6874
  _a.sent();
6263
- return [4 /*yield*/, appointment_created_tests()];
6875
+ return [4 /*yield*/, contact_created_tests()];
6264
6876
  case 17:
6265
6877
  _a.sent();
6266
- return [4 /*yield*/, tag_added_tests()];
6878
+ return [4 /*yield*/, appointment_created_tests()];
6267
6879
  case 18:
6268
6880
  _a.sent();
6269
- return [4 /*yield*/, order_created_tests()];
6881
+ return [4 /*yield*/, tag_added_tests()];
6270
6882
  case 19:
6271
6883
  _a.sent();
6272
- return [4 /*yield*/, formSubmittedTriggerTests()];
6884
+ return [4 /*yield*/, order_created_tests()];
6273
6885
  case 20:
6886
+ _a.sent();
6887
+ return [4 /*yield*/, formSubmittedTriggerTests()];
6888
+ case 21:
6274
6889
  _a.sent();
6275
6890
  return [2 /*return*/];
6276
6891
  }
@@ -10072,7 +10687,11 @@ var switch_to_related_contacts_tests = function () { return __awaiter(void 0, vo
10072
10687
  return [4 /*yield*/, sdk.api.endusers.updateOne(child.id, { journeys: (_a = {}, _a[journey.id] = '', _a) })];
10073
10688
  case 6:
10074
10689
  _b.sent();
10075
- return [4 /*yield*/, (0, testing_1.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); }, testing_1.passOnAnyResult)];
10690
+ return [4 /*yield*/, (0, testing_1.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')); },
10691
+ // switchToRelatedContact (cycle 1) then the afterAction addEnduserTags (cycle 2) each wait a
10692
+ // full worker poll cycle (>= 8s, see worker pollingDelaySeconds), so ~16s worst case. Poll for
10693
+ // 30s (500ms x 60) to cover two cycles plus buffer; the old 10s window timed out flakily.
10694
+ 500, 60); }, testing_1.passOnAnyResult)];
10076
10695
  case 7:
10077
10696
  _b.sent();
10078
10697
  return [2 /*return*/, Promise.all([
@@ -12777,7 +13396,42 @@ var register_as_enduser_tests = function () { return __awaiter(void 0, void 0, v
12777
13396
  return [4 /*yield*/, (0, testing_1.async_test)("Enduser register", function () { return enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' }); }, testing_1.passOnAnyResult)];
12778
13397
  case 1:
12779
13398
  _a.sent();
12780
- return [4 /*yield*/, (0, testing_1.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"; } })];
13399
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser register (rate limited)",
13400
+ // The register limiter records its throttle event at request start with a 1s expiry
13401
+ // (countPerInterval: 1, intervalInMS: 1000), so back-to-back registers are only
13402
+ // rate limited when they land within 1s of each other. A slow register (bcrypt on a
13403
+ // cold/loaded server) can exceed the window and flake — retry the pair instead of
13404
+ // failing on a timing miss. Any "Too many requests" from either call is the expected error.
13405
+ function () { return __awaiter(void 0, void 0, void 0, function () {
13406
+ var attempt, windowStart;
13407
+ return __generator(this, function (_a) {
13408
+ switch (_a.label) {
13409
+ case 0:
13410
+ attempt = 0;
13411
+ _a.label = 1;
13412
+ case 1:
13413
+ if (!(attempt < 3)) return [3 /*break*/, 6];
13414
+ windowStart = Date.now();
13415
+ return [4 /*yield*/, enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' })];
13416
+ case 2:
13417
+ _a.sent();
13418
+ return [4 /*yield*/, enduserSDK.register({ email: 'test@tellescope.com', password: 'testpassWord12345!' })];
13419
+ case 3:
13420
+ _a.sent();
13421
+ if (Date.now() - windowStart < 900) {
13422
+ return [2 /*return*/, 'two registers within the same 1s window were not rate limited'];
13423
+ }
13424
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 1100)]; // let the throttle window expire before retrying the pair
13425
+ case 4:
13426
+ _a.sent(); // let the throttle window expire before retrying the pair
13427
+ _a.label = 5;
13428
+ case 5:
13429
+ attempt++;
13430
+ return [3 /*break*/, 1];
13431
+ case 6: return [2 /*return*/, 'rate-limit timing window missed on every attempt'];
13432
+ }
13433
+ });
13434
+ }); }, { shouldError: true, onError: function (e) { return e.message === "Too many requests"; } })];
12781
13435
  case 2:
12782
13436
  _a.sent();
12783
13437
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)];
@@ -16027,12 +16681,16 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16027
16681
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // wait for IP to be set
16028
16682
  case 4:
16029
16683
  _a.sent(); // wait for IP to be set
16030
- (0, testing_1.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); } });
16684
+ return [4 /*yield*/, (0, testing_1.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); } })
16685
+ // clear ip and set other field to make sure IP doesn't overwrite other custom fields
16686
+ ];
16687
+ case 5:
16688
+ _a.sent();
16031
16689
  // clear ip and set other field to make sure IP doesn't overwrite other custom fields
16032
16690
  return [4 /*yield*/, sdk.api.endusers.updateOne(enduserId, { fields: { otherField: "Set" } }, { replaceObjectFields: true })
16033
16691
  // should match and update in place
16034
16692
  ];
16035
- case 5:
16693
+ case 6:
16036
16694
  // clear ip and set other field to make sure IP doesn't overwrite other custom fields
16037
16695
  _a.sent();
16038
16696
  // should match and update in place
@@ -16044,15 +16702,20 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16044
16702
  fname: 'session',
16045
16703
  lname: 'test',
16046
16704
  })];
16047
- case 6:
16705
+ case 7:
16048
16706
  // should match and update in place
16049
16707
  _a.sent();
16050
- (0, testing_1.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; } });
16708
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 500)]; // wait for IP to be re-set
16709
+ case 8:
16710
+ _a.sent(); // wait for IP to be re-set
16711
+ return [4 /*yield*/, (0, testing_1.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; } })];
16712
+ case 9:
16713
+ _a.sent();
16051
16714
  return [4 /*yield*/, Promise.all([
16052
16715
  sdk.api.forms.deleteOne(form.id),
16053
16716
  sdk.api.endusers.deleteOne(enduserId),
16054
16717
  ])];
16055
- case 7:
16718
+ case 10:
16056
16719
  _a.sent();
16057
16720
  return [2 /*return*/];
16058
16721
  }
@@ -16073,7 +16736,7 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16073
16736
  (0, testing_1.assert)((0, utilities_1.truncate_string)(null, { length: 4, showEllipsis: false }) === '', 'truncate doesnt work for non string', 'trucate works for non-string');
16074
16737
  _l.label = 2;
16075
16738
  case 2:
16076
- _l.trys.push([2, 144, , 145]);
16739
+ _l.trys.push([2, 149, , 150]);
16077
16740
  get_next_reminder_timestamp_tests();
16078
16741
  (0, exports.form_conditional_logic_tests)();
16079
16742
  return [4 /*yield*/, test_weighted_round_robin()];
@@ -16220,387 +16883,402 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16220
16883
  return [4 /*yield*/, (0, setup_1.setup_tests)(sdk, sdkNonAdmin)];
16221
16884
  case 18:
16222
16885
  _l.sent();
16223
- return [4 /*yield*/, (0, F_0007_invite_user_enumeration_test_1.invite_user_enumeration_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16886
+ return [4 /*yield*/, (0, resource_access_tags_test_1.resource_access_tags_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16224
16887
  case 19:
16225
16888
  _l.sent();
16226
- return [4 /*yield*/, (0, F_0008_handle_incoming_communication_cross_tenant_test_1.handle_incoming_communication_cross_tenant_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16889
+ return [4 /*yield*/, (0, beluga_manual_sync_test_1.beluga_manual_sync_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16227
16890
  case 20:
16228
16891
  _l.sent();
16229
- return [4 /*yield*/, (0, calendar_event_webhook_template_test_1.calendar_event_webhook_template_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16892
+ return [4 /*yield*/, (0, beluga_pharmacy_mappings_test_1.beluga_pharmacy_mappings_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16230
16893
  case 21:
16231
16894
  _l.sent();
16232
- return [4 /*yield*/, (0, outbound_chat_sent_trigger_test_1.outbound_chat_sent_trigger_tests)({ sdk: sdk })];
16895
+ return [4 /*yield*/, (0, F_0106_F_0110_enduser_write_restrictions_test_1.enduser_write_restrictions_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16233
16896
  case 22:
16234
16897
  _l.sent();
16235
- return [4 /*yield*/, (0, enduser_login_rate_limits_test_1.enduser_login_rate_limits_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16898
+ return [4 /*yield*/, (0, user_portal_settings_test_1.user_portal_settings_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16236
16899
  case 23:
16237
16900
  _l.sent();
16238
- return [4 /*yield*/, (0, F_0001_data_sync_redaction_bypass_test_1.data_sync_redaction_bypass_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16901
+ return [4 /*yield*/, automation_trigger_tests()];
16239
16902
  case 24:
16240
16903
  _l.sent();
16241
- return [4 /*yield*/, (0, F_0005_ai_conversations_rbac_test_1.ai_conversations_rbac_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16904
+ return [4 /*yield*/, (0, F_0007_invite_user_enumeration_test_1.invite_user_enumeration_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16242
16905
  case 25:
16243
16906
  _l.sent();
16244
- return [4 /*yield*/, (0, F_0053_cascade_role_rename_cross_tenant_test_1.cascade_role_rename_cross_tenant_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16907
+ return [4 /*yield*/, (0, F_0008_handle_incoming_communication_cross_tenant_test_1.handle_incoming_communication_cross_tenant_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16245
16908
  case 26:
16246
16909
  _l.sent();
16247
- return [4 /*yield*/, (0, F_0076_self_admin_role_assignment_test_1.self_admin_role_assignment_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16910
+ return [4 /*yield*/, (0, calendar_event_webhook_template_test_1.calendar_event_webhook_template_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16248
16911
  case 27:
16249
16912
  _l.sent();
16250
- return [4 /*yield*/, (0, F_0013_sanitize_user_html_test_1.sanitize_user_html_xss_tests)()];
16913
+ return [4 /*yield*/, (0, outbound_chat_sent_trigger_test_1.outbound_chat_sent_trigger_tests)({ sdk: sdk })];
16251
16914
  case 28:
16252
16915
  _l.sent();
16253
- return [4 /*yield*/, (0, F_0016_prototype_pollution_test_1.prototype_pollution_tests)()];
16916
+ return [4 /*yield*/, (0, enduser_login_rate_limits_test_1.enduser_login_rate_limits_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16254
16917
  case 29:
16255
16918
  _l.sent();
16256
- return [4 /*yield*/, automation_trigger_tests()];
16919
+ return [4 /*yield*/, (0, F_0001_data_sync_redaction_bypass_test_1.data_sync_redaction_bypass_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16257
16920
  case 30:
16258
16921
  _l.sent();
16259
- return [4 /*yield*/, (0, account_switcher_test_1.account_switcher_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16922
+ return [4 /*yield*/, (0, F_0005_ai_conversations_rbac_test_1.ai_conversations_rbac_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16260
16923
  case 31:
16261
16924
  _l.sent();
16262
- return [4 /*yield*/, (0, enduser_login_test_1.enduser_login_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16925
+ return [4 /*yield*/, (0, F_0053_cascade_role_rename_cross_tenant_test_1.cascade_role_rename_cross_tenant_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16263
16926
  case 32:
16264
16927
  _l.sent();
16265
- return [4 /*yield*/, (0, outbound_chat_sent_trigger_test_1.outbound_chat_sent_trigger_tests)({ sdk: sdk })];
16928
+ return [4 /*yield*/, (0, F_0076_self_admin_role_assignment_test_1.self_admin_role_assignment_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16266
16929
  case 33:
16267
16930
  _l.sent();
16268
- return [4 /*yield*/, (0, enduser_cross_access_isolation_test_1.enduser_cross_access_isolation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16931
+ return [4 /*yield*/, (0, F_0013_sanitize_user_html_test_1.sanitize_user_html_xss_tests)()];
16269
16932
  case 34:
16270
16933
  _l.sent();
16271
- return [4 /*yield*/, (0, eom_procedure_codes_test_1.eom_procedure_codes_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16934
+ return [4 /*yield*/, (0, F_0016_prototype_pollution_test_1.prototype_pollution_tests)()];
16272
16935
  case 35:
16273
16936
  _l.sent();
16274
- return [4 /*yield*/, (0, cross_org_api_key_test_1.cross_org_api_key_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16937
+ return [4 /*yield*/, (0, account_switcher_test_1.account_switcher_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16275
16938
  case 36:
16276
16939
  _l.sent();
16277
- return [4 /*yield*/, (0, organization_settings_duplicates_test_1.organization_settings_duplicates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16940
+ return [4 /*yield*/, (0, enduser_login_test_1.enduser_login_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16278
16941
  case 37:
16279
16942
  _l.sent();
16280
- return [4 /*yield*/, (0, enduser_session_invalidation_test_1.enduser_session_invalidation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16943
+ return [4 /*yield*/, (0, outbound_chat_sent_trigger_test_1.outbound_chat_sent_trigger_tests)({ sdk: sdk })];
16281
16944
  case 38:
16282
16945
  _l.sent();
16283
- return [4 /*yield*/, (0, chats_analytics_test_1.chats_analytics_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16946
+ return [4 /*yield*/, (0, enduser_cross_access_isolation_test_1.enduser_cross_access_isolation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16284
16947
  case 39:
16285
16948
  _l.sent();
16286
- return [4 /*yield*/, (0, field_redaction_test_1.field_redaction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16949
+ return [4 /*yield*/, (0, eom_procedure_codes_test_1.eom_procedure_codes_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16287
16950
  case 40:
16288
16951
  _l.sent();
16289
- return [4 /*yield*/, (0, form_submitted_trigger_test_1.form_submitted_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16952
+ return [4 /*yield*/, (0, cross_org_api_key_test_1.cross_org_api_key_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16290
16953
  case 41:
16291
16954
  _l.sent();
16292
- return [4 /*yield*/, (0, date_string_validation_test_1.date_string_validation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16955
+ return [4 /*yield*/, (0, organization_settings_duplicates_test_1.organization_settings_duplicates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16293
16956
  case 42:
16294
16957
  _l.sent();
16295
- return [4 /*yield*/, (0, openloop_webhooks_test_1.openloop_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16958
+ return [4 /*yield*/, (0, enduser_session_invalidation_test_1.enduser_session_invalidation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16296
16959
  case 43:
16297
16960
  _l.sent();
16298
- return [4 /*yield*/, (0, mdi_webhooks_test_1.mdi_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16961
+ return [4 /*yield*/, (0, chats_analytics_test_1.chats_analytics_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16299
16962
  case 44:
16300
16963
  _l.sent();
16301
- return [4 /*yield*/, (0, integrations_redacted_test_1.integrations_redacted_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16964
+ return [4 /*yield*/, (0, field_redaction_test_1.field_redaction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16302
16965
  case 45:
16303
16966
  _l.sent();
16304
- return [4 /*yield*/, (0, mdb_sort_test_1.mdb_sort_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16967
+ return [4 /*yield*/, (0, form_submitted_trigger_test_1.form_submitted_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16305
16968
  case 46:
16306
16969
  _l.sent();
16307
- return [4 /*yield*/, search_tests()];
16970
+ return [4 /*yield*/, (0, date_string_validation_test_1.date_string_validation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16308
16971
  case 47:
16309
16972
  _l.sent();
16310
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16973
+ return [4 /*yield*/, (0, openloop_webhooks_test_1.openloop_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16311
16974
  case 48:
16312
16975
  _l.sent();
16313
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_historical_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16976
+ return [4 /*yield*/, (0, mdi_webhooks_test_1.mdi_webhooks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16314
16977
  case 49:
16315
16978
  _l.sent();
16316
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_correction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16979
+ return [4 /*yield*/, (0, integrations_redacted_test_1.integrations_redacted_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16317
16980
  case 50:
16318
16981
  _l.sent();
16319
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_review_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16982
+ return [4 /*yield*/, (0, mdb_sort_test_1.mdb_sort_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16320
16983
  case 51:
16321
16984
  _l.sent();
16322
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_lock_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16985
+ return [4 /*yield*/, search_tests()];
16323
16986
  case 52:
16324
16987
  _l.sent();
16325
- return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_edge_case_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16988
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16326
16989
  case 53:
16327
16990
  _l.sent();
16328
- return [4 /*yield*/, (0, calendar_event_limits_test_1.calendar_event_limits_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16991
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_historical_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16329
16992
  case 54:
16330
16993
  _l.sent();
16331
- return [4 /*yield*/, (0, get_some_projection_test_1.get_some_projection_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16994
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_correction_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16332
16995
  case 55:
16333
16996
  _l.sent();
16334
- return [4 /*yield*/, (0, elation_user_id_test_1.elation_user_id_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16997
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_review_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16335
16998
  case 56:
16336
16999
  _l.sent();
16337
- return [4 /*yield*/, (0, custom_dashboards_test_1.custom_dashboards_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17000
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_lock_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16338
17001
  case 57:
16339
17002
  _l.sent();
16340
- return [4 /*yield*/, (0, concurrent_build_threads_test_1.concurrent_build_threads_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17003
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_edge_case_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16341
17004
  case 58:
16342
17005
  _l.sent();
16343
- return [4 /*yield*/, (0, custom_aggregation_test_1.custom_aggregation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17006
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_resubmit_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16344
17007
  case 59:
16345
17008
  _l.sent();
16346
- return [4 /*yield*/, (0, no_access_permission_checks_test_1.no_access_permission_checks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17009
+ return [4 /*yield*/, (0, time_tracks_test_1.time_tracks_appointment_duration_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16347
17010
  case 60:
16348
17011
  _l.sent();
16349
- return [4 /*yield*/, enduser_tests()];
17012
+ return [4 /*yield*/, (0, calendar_event_limits_test_1.calendar_event_limits_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16350
17013
  case 61:
16351
17014
  _l.sent();
16352
- return [4 /*yield*/, (0, form_started_trigger_test_1.form_started_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17015
+ return [4 /*yield*/, (0, get_some_projection_test_1.get_some_projection_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16353
17016
  case 62:
16354
17017
  _l.sent();
16355
- return [4 /*yield*/, (0, load_team_chat_test_1.load_team_chat_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17018
+ return [4 /*yield*/, (0, elation_user_id_test_1.elation_user_id_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16356
17019
  case 63:
16357
17020
  _l.sent();
16358
- return [4 /*yield*/, (0, ai_conversations_test_1.ai_conversations_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17021
+ return [4 /*yield*/, (0, custom_dashboards_test_1.custom_dashboards_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16359
17022
  case 64:
16360
17023
  _l.sent();
16361
- return [4 /*yield*/, (0, inbox_thread_assignment_updates_test_1.inbox_thread_assignment_updates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17024
+ return [4 /*yield*/, (0, concurrent_build_threads_test_1.concurrent_build_threads_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16362
17025
  case 65:
16363
17026
  _l.sent();
16364
- return [4 /*yield*/, (0, inbox_thread_draft_scheduled_test_1.inbox_thread_draft_scheduled_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17027
+ return [4 /*yield*/, (0, custom_aggregation_test_1.custom_aggregation_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16365
17028
  case 66:
16366
17029
  _l.sent();
16367
- return [4 /*yield*/, (0, load_threads_autobuild_test_1.load_threads_autobuild_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17030
+ return [4 /*yield*/, (0, no_access_permission_checks_test_1.no_access_permission_checks_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16368
17031
  case 67:
16369
17032
  _l.sent();
16370
- return [4 /*yield*/, inbox_threads_new_fields_tests()];
17033
+ return [4 /*yield*/, enduser_tests()];
16371
17034
  case 68:
16372
17035
  _l.sent();
16373
- return [4 /*yield*/, (0, auto_merge_form_submission_test_1.auto_merge_form_submission_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17036
+ return [4 /*yield*/, (0, form_started_trigger_test_1.form_started_trigger_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16374
17037
  case 69:
16375
17038
  _l.sent();
16376
- return [4 /*yield*/, (0, beluga_pharmacy_mappings_test_1.beluga_pharmacy_mappings_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17039
+ return [4 /*yield*/, (0, load_team_chat_test_1.load_team_chat_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16377
17040
  case 70:
16378
17041
  _l.sent();
16379
- return [4 /*yield*/, threadKeyTests()];
17042
+ return [4 /*yield*/, (0, ai_conversations_test_1.ai_conversations_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16380
17043
  case 71:
16381
17044
  _l.sent();
16382
- return [4 /*yield*/, (0, managed_content_enduser_access_test_1.managed_content_enduser_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17045
+ return [4 /*yield*/, (0, inbox_thread_assignment_updates_test_1.inbox_thread_assignment_updates_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16383
17046
  case 72:
16384
17047
  _l.sent();
16385
- return [4 /*yield*/, (0, managed_content_file_access_test_1.managed_content_file_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17048
+ return [4 /*yield*/, (0, inbox_thread_draft_scheduled_test_1.inbox_thread_draft_scheduled_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16386
17049
  case 73:
16387
17050
  _l.sent();
16388
- return [4 /*yield*/, (0, afteraction_day_of_month_delay_test_1.afteraction_day_of_month_delay_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17051
+ return [4 /*yield*/, (0, load_threads_autobuild_test_1.load_threads_autobuild_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16389
17052
  case 74:
16390
17053
  _l.sent();
16391
- return [4 /*yield*/, (0, bulk_assignment_test_1.bulk_assignment_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17054
+ return [4 /*yield*/, inbox_threads_new_fields_tests()];
16392
17055
  case 75:
16393
17056
  _l.sent();
16394
- return [4 /*yield*/, (0, exports.formsort_tests)()];
17057
+ return [4 /*yield*/, (0, auto_merge_form_submission_test_1.auto_merge_form_submission_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16395
17058
  case 76:
16396
17059
  _l.sent();
16397
- return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
17060
+ return [4 /*yield*/, threadKeyTests()];
16398
17061
  case 77:
16399
17062
  _l.sent();
16400
- return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
17063
+ return [4 /*yield*/, (0, managed_content_enduser_access_test_1.managed_content_enduser_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16401
17064
  case 78:
16402
17065
  _l.sent();
16403
- return [4 /*yield*/, (0, monthly_availability_restrictions_test_1.monthly_availability_restrictions_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17066
+ return [4 /*yield*/, (0, managed_content_file_access_test_1.managed_content_file_access_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16404
17067
  case 79:
16405
17068
  _l.sent();
16406
- return [4 /*yield*/, (0, journey_error_branching_test_1.journey_error_branching_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17069
+ return [4 /*yield*/, (0, afteraction_day_of_month_delay_test_1.afteraction_day_of_month_delay_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16407
17070
  case 80:
16408
17071
  _l.sent();
16409
- return [4 /*yield*/, (0, message_assignment_trigger_test_1.message_assignment_trigger_tests)({ sdk: sdk })];
17072
+ return [4 /*yield*/, (0, bulk_assignment_test_1.bulk_assignment_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16410
17073
  case 81:
16411
17074
  _l.sent();
16412
- return [4 /*yield*/, inbox_threads_building_tests()];
17075
+ return [4 /*yield*/, (0, exports.formsort_tests)()];
16413
17076
  case 82:
16414
17077
  _l.sent();
16415
- return [4 /*yield*/, inbox_threads_loading_tests()];
17078
+ return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
16416
17079
  case 83:
16417
17080
  _l.sent();
16418
- return [4 /*yield*/, (0, load_inbox_data_test_1.load_inbox_data_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17081
+ return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
16419
17082
  case 84:
16420
17083
  _l.sent();
16421
- return [4 /*yield*/, (0, enduser_observations_acknowledge_test_1.enduser_observations_acknowledge_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17084
+ return [4 /*yield*/, (0, monthly_availability_restrictions_test_1.monthly_availability_restrictions_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16422
17085
  case 85:
16423
17086
  _l.sent();
16424
- return [4 /*yield*/, (0, user_portal_settings_test_1.user_portal_settings_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17087
+ return [4 /*yield*/, (0, journey_error_branching_test_1.journey_error_branching_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16425
17088
  case 86:
16426
17089
  _l.sent();
16427
- return [4 /*yield*/, (0, create_user_notifications_trigger_test_1.create_user_notifications_trigger_tests)({ sdk: sdk })];
17090
+ return [4 /*yield*/, (0, message_assignment_trigger_test_1.message_assignment_trigger_tests)({ sdk: sdk })];
16428
17091
  case 87:
16429
17092
  _l.sent();
16430
- return [4 /*yield*/, group_mms_active_tests()];
17093
+ return [4 /*yield*/, inbox_threads_building_tests()];
16431
17094
  case 88:
16432
17095
  _l.sent();
16433
- return [4 /*yield*/, auto_reply_tests()];
17096
+ return [4 /*yield*/, inbox_threads_loading_tests()];
16434
17097
  case 89:
16435
17098
  _l.sent();
16436
- return [4 /*yield*/, (0, exports.relationships_tests)()];
17099
+ return [4 /*yield*/, (0, load_inbox_data_test_1.load_inbox_data_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16437
17100
  case 90:
16438
17101
  _l.sent();
16439
- return [4 /*yield*/, rate_limit_tests()];
17102
+ return [4 /*yield*/, (0, enduser_observations_acknowledge_test_1.enduser_observations_acknowledge_tests)({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16440
17103
  case 91:
16441
17104
  _l.sent();
16442
- return [4 /*yield*/, ip_address_form_tests()];
17105
+ return [4 /*yield*/, (0, create_user_notifications_trigger_test_1.create_user_notifications_trigger_tests)({ sdk: sdk })];
16443
17106
  case 92:
16444
17107
  _l.sent();
16445
- return [4 /*yield*/, bulk_update_tests()];
17108
+ return [4 /*yield*/, group_mms_active_tests()];
16446
17109
  case 93:
16447
17110
  _l.sent();
16448
- return [4 /*yield*/, (0, calendar_events_bulk_update_test_1.calendar_events_bulk_update_tests)({ sdk: sdk })];
17111
+ return [4 /*yield*/, auto_reply_tests()];
16449
17112
  case 94:
16450
17113
  _l.sent();
16451
- return [4 /*yield*/, (0, exports.cancel_upcoming_appointments_journey_action_test)()];
17114
+ return [4 /*yield*/, (0, exports.relationships_tests)()];
16452
17115
  case 95:
16453
17116
  _l.sent();
16454
- return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
17117
+ return [4 /*yield*/, rate_limit_tests()];
16455
17118
  case 96:
17119
+ _l.sent();
17120
+ return [4 /*yield*/, ip_address_form_tests()];
17121
+ case 97:
17122
+ _l.sent();
17123
+ return [4 /*yield*/, bulk_update_tests()];
17124
+ case 98:
17125
+ _l.sent();
17126
+ return [4 /*yield*/, (0, calendar_events_bulk_update_test_1.calendar_events_bulk_update_tests)({ sdk: sdk })];
17127
+ case 99:
17128
+ _l.sent();
17129
+ return [4 /*yield*/, (0, exports.cancel_upcoming_appointments_journey_action_test)()];
17130
+ case 100:
17131
+ _l.sent();
17132
+ return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
17133
+ case 101:
16456
17134
  _l.sent(); // should come right after setup tests
16457
17135
  return [4 /*yield*/, sync_tests_with_access_tags()]; // should come directly after setup to avoid extra sync values
16458
- case 97:
17136
+ case 102:
16459
17137
  _l.sent(); // should come directly after setup to avoid extra sync values
16460
17138
  return [4 /*yield*/, sync_tests()]; // should come directly after setup to avoid extra sync values
16461
- case 98:
17139
+ case 103:
16462
17140
  _l.sent(); // should come directly after setup to avoid extra sync values
16463
17141
  return [4 /*yield*/, get_templated_message_tests()];
16464
- case 99:
17142
+ case 104:
16465
17143
  _l.sent();
16466
17144
  return [4 /*yield*/, updatedAt_tests()];
16467
- case 100:
17145
+ case 105:
16468
17146
  _l.sent();
16469
17147
  return [4 /*yield*/, file_source_tests()];
16470
- case 101:
17148
+ case 106:
16471
17149
  _l.sent();
16472
17150
  return [4 /*yield*/, enduser_access_tags_tests()];
16473
- case 102:
17151
+ case 107:
16474
17152
  _l.sent();
16475
17153
  return [4 /*yield*/, enduserAccessTests()];
16476
- case 103:
17154
+ case 108:
16477
17155
  _l.sent();
16478
17156
  return [4 /*yield*/, test_form_response_search()];
16479
- case 104:
17157
+ case 109:
16480
17158
  _l.sent();
16481
17159
  return [4 /*yield*/, date_parsing_tests()];
16482
- case 105:
17160
+ case 110:
16483
17161
  _l.sent();
16484
17162
  return [4 /*yield*/, fromEmailOverride_tests()];
16485
- case 106:
17163
+ case 111:
16486
17164
  _l.sent();
16487
17165
  return [4 /*yield*/, ticket_tests()];
16488
- case 107:
17166
+ case 112:
16489
17167
  _l.sent();
16490
17168
  return [4 /*yield*/, uniqueness_tests()];
16491
- case 108:
17169
+ case 113:
16492
17170
  _l.sent();
16493
17171
  return [4 /*yield*/, (0, exports.enduser_orders_tests)()];
16494
- case 109:
17172
+ case 114:
16495
17173
  _l.sent();
16496
17174
  return [4 /*yield*/, calendar_event_care_team_tests()];
16497
- case 110:
17175
+ case 115:
16498
17176
  _l.sent();
16499
17177
  return [4 /*yield*/, merge_enduser_tests()];
16500
- case 111:
17178
+ case 116:
16501
17179
  _l.sent();
16502
17180
  return [4 /*yield*/, input_modifier_tests()];
16503
- case 112:
17181
+ case 117:
16504
17182
  _l.sent();
16505
17183
  return [4 /*yield*/, (0, exports.switch_to_related_contacts_tests)()];
16506
- case 113:
17184
+ case 118:
16507
17185
  _l.sent();
16508
17186
  return [4 /*yield*/, redaction_tests()];
16509
- case 114:
17187
+ case 119:
16510
17188
  _l.sent();
16511
17189
  return [4 /*yield*/, (0, exports.no_chained_triggers_tests)()];
16512
- case 115:
17190
+ case 120:
16513
17191
  _l.sent();
16514
17192
  return [4 /*yield*/, mdb_filter_tests()];
16515
- case 116:
17193
+ case 121:
16516
17194
  _l.sent();
16517
17195
  return [4 /*yield*/, superadmin_tests()];
16518
- case 117:
17196
+ case 122:
16519
17197
  _l.sent();
16520
17198
  return [4 /*yield*/, (0, exports.ticket_queue_tests)()];
16521
- case 118:
17199
+ case 123:
16522
17200
  _l.sent();
16523
17201
  return [4 /*yield*/, vital_trigger_tests()];
16524
- case 119:
17202
+ case 124:
16525
17203
  _l.sent();
16526
17204
  return [4 /*yield*/, close_reasons_no_duplicates_tests()];
16527
- case 120:
17205
+ case 125:
16528
17206
  _l.sent();
16529
17207
  return [4 /*yield*/, register_as_enduser_tests()];
16530
- case 121:
17208
+ case 126:
16531
17209
  _l.sent();
16532
17210
  return [4 /*yield*/, lockout_tests()];
16533
- case 122:
17211
+ case 127:
16534
17212
  _l.sent();
16535
17213
  return [4 /*yield*/, delete_user_tests()
16536
17214
  // await test_send_with_template()
16537
17215
  ];
16538
- case 123:
17216
+ case 128:
16539
17217
  _l.sent();
16540
17218
  // await test_send_with_template()
16541
17219
  return [4 /*yield*/, bulk_read_tests()];
16542
- case 124:
17220
+ case 129:
16543
17221
  // await test_send_with_template()
16544
17222
  _l.sent();
16545
17223
  return [4 /*yield*/, (0, exports.ticket_reminder_tests)()];
16546
- case 125:
17224
+ case 130:
16547
17225
  _l.sent();
16548
17226
  return [4 /*yield*/, marketing_email_unsubscribe_tests()];
16549
- case 126:
17227
+ case 131:
16550
17228
  _l.sent();
16551
17229
  return [4 /*yield*/, unique_strings_tests()];
16552
- case 127:
17230
+ case 132:
16553
17231
  _l.sent();
16554
17232
  return [4 /*yield*/, (0, exports.alternate_phones_tests)()];
16555
- case 128:
17233
+ case 133:
16556
17234
  _l.sent();
16557
17235
  return [4 /*yield*/, role_based_access_tests()];
16558
- case 129:
17236
+ case 134:
16559
17237
  _l.sent();
16560
17238
  return [4 /*yield*/, enduser_session_tests()];
16561
- case 130:
17239
+ case 135:
16562
17240
  _l.sent();
16563
17241
  return [4 /*yield*/, nextReminderInMS_tests()];
16564
- case 131:
17242
+ case 136:
16565
17243
  _l.sent();
16566
17244
  return [4 /*yield*/, wait_for_trigger_tests()];
16567
- case 132:
17245
+ case 137:
16568
17246
  _l.sent();
16569
17247
  return [4 /*yield*/, pdf_generation()];
16570
- case 133:
17248
+ case 138:
16571
17249
  _l.sent();
16572
17250
  return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests().catch(console.error)]; // timing is unreliable, uncomment if changing logic
16573
- case 134:
17251
+ case 139:
16574
17252
  _l.sent(); // timing is unreliable, uncomment if changing logic
16575
17253
  return [4 /*yield*/, sub_organization_enduser_tests()];
16576
- case 135:
17254
+ case 140:
16577
17255
  _l.sent();
16578
17256
  return [4 /*yield*/, sub_organization_tests()];
16579
- case 136:
17257
+ case 141:
16580
17258
  _l.sent();
16581
17259
  return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
16582
- case 137:
17260
+ case 142:
16583
17261
  _l.sent();
16584
17262
  return [4 /*yield*/, generate_user_auth_tests()];
16585
- case 138:
17263
+ case 143:
16586
17264
  _l.sent();
16587
17265
  return [4 /*yield*/, generateEnduserAuthTests()];
16588
- case 139:
17266
+ case 144:
16589
17267
  _l.sent();
16590
17268
  return [4 /*yield*/, public_form_tests()];
16591
- case 140:
17269
+ case 145:
16592
17270
  _l.sent();
16593
17271
  return [4 /*yield*/, badInputTests()];
16594
- case 141:
17272
+ case 146:
16595
17273
  _l.sent();
16596
17274
  return [4 /*yield*/, filterTests()];
16597
- case 142:
17275
+ case 147:
16598
17276
  _l.sent();
16599
17277
  return [4 /*yield*/, updatesTests()];
16600
- case 143:
17278
+ case 148:
16601
17279
  _l.sent();
16602
- return [3 /*break*/, 145];
16603
- case 144:
17280
+ return [3 /*break*/, 150];
17281
+ case 149:
16604
17282
  err_1 = _l.sent();
16605
17283
  console.error("Failed during custom test");
16606
17284
  if (err_1.message && err_1.info) {
@@ -16610,18 +17288,18 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16610
17288
  console.error(err_1);
16611
17289
  }
16612
17290
  process.exit(1);
16613
- return [3 /*break*/, 145];
16614
- case 145:
17291
+ return [3 /*break*/, 150];
17292
+ case 150:
16615
17293
  _a = schema_1.schema;
16616
17294
  _b = [];
16617
17295
  for (_c in _a)
16618
17296
  _b.push(_c);
16619
17297
  _i = 0;
16620
- _l.label = 146;
16621
- case 146:
16622
- if (!(_i < _b.length)) return [3 /*break*/, 149];
17298
+ _l.label = 151;
17299
+ case 151:
17300
+ if (!(_i < _b.length)) return [3 /*break*/, 154];
16623
17301
  _c = _b[_i];
16624
- if (!(_c in _a)) return [3 /*break*/, 148];
17302
+ if (!(_c in _a)) return [3 /*break*/, 153];
16625
17303
  n = _c;
16626
17304
  returnValidation = (_k = (_j = schema_1.schema[n].customActions) === null || _j === void 0 ? void 0 : _j.create) === null || _k === void 0 ? void 0 : _k.returns;
16627
17305
  return [4 /*yield*/, run_generated_tests({
@@ -16632,41 +17310,41 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16632
17310
  create: returnValidation // ModelFields<ClientModel>,
16633
17311
  }
16634
17312
  })];
16635
- case 147:
17313
+ case 152:
16636
17314
  _l.sent();
16637
- _l.label = 148;
16638
- case 148:
17315
+ _l.label = 153;
17316
+ case 153:
16639
17317
  _i++;
16640
- return [3 /*break*/, 146];
16641
- case 149:
17318
+ return [3 /*break*/, 151];
17319
+ case 154:
16642
17320
  _d = tests;
16643
17321
  _f = [];
16644
17322
  for (_g in _d)
16645
17323
  _f.push(_g);
16646
17324
  _h = 0;
16647
- _l.label = 150;
16648
- case 150:
16649
- if (!(_h < _f.length)) return [3 /*break*/, 155];
17325
+ _l.label = 155;
17326
+ case 155:
17327
+ if (!(_h < _f.length)) return [3 /*break*/, 160];
16650
17328
  _g = _f[_h];
16651
- if (!(_g in _d)) return [3 /*break*/, 154];
17329
+ if (!(_g in _d)) return [3 /*break*/, 159];
16652
17330
  t = _g;
16653
- _l.label = 151;
16654
- case 151:
16655
- _l.trys.push([151, 153, , 154]);
17331
+ _l.label = 156;
17332
+ case 156:
17333
+ _l.trys.push([156, 158, , 159]);
16656
17334
  return [4 /*yield*/, tests[t]()];
16657
- case 152:
17335
+ case 157:
16658
17336
  _l.sent();
16659
- return [3 /*break*/, 154];
16660
- case 153:
17337
+ return [3 /*break*/, 159];
17338
+ case 158:
16661
17339
  err_2 = _l.sent();
16662
17340
  console.error("Error running test:");
16663
17341
  console.error(err_2);
16664
17342
  process.exit(1);
16665
- return [3 /*break*/, 154];
16666
- case 154:
17343
+ return [3 /*break*/, 159];
17344
+ case 159:
16667
17345
  _h++;
16668
- return [3 /*break*/, 150];
16669
- case 155:
17346
+ return [3 /*break*/, 155];
17347
+ case 160:
16670
17348
  process.exit();
16671
17349
  return [2 /*return*/];
16672
17350
  }