@tellescope/sdk 1.253.1 → 1.254.1

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 (124) 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/ai_decision_summary_config.test.d.ts +16 -0
  8. package/lib/cjs/tests/api_tests/ai_decision_summary_config.test.d.ts.map +1 -0
  9. package/lib/cjs/tests/api_tests/ai_decision_summary_config.test.js +187 -0
  10. package/lib/cjs/tests/api_tests/ai_decision_summary_config.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/journey_error_branching.test.js +7 -2
  15. package/lib/cjs/tests/api_tests/journey_error_branching.test.js.map +1 -1
  16. package/lib/cjs/tests/api_tests/mdi_case_offerings.test.d.ts +6 -0
  17. package/lib/cjs/tests/api_tests/mdi_case_offerings.test.d.ts.map +1 -0
  18. package/lib/cjs/tests/api_tests/mdi_case_offerings.test.js +443 -0
  19. package/lib/cjs/tests/api_tests/mdi_case_offerings.test.js.map +1 -0
  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-0116-F-0119-enduser-cross-create.test.d.ts +21 -0
  25. package/lib/cjs/tests/api_tests/security/F-0116-F-0119-enduser-cross-create.test.d.ts.map +1 -0
  26. package/lib/cjs/tests/api_tests/security/F-0116-F-0119-enduser-cross-create.test.js +362 -0
  27. package/lib/cjs/tests/api_tests/security/F-0116-F-0119-enduser-cross-create.test.js.map +1 -0
  28. package/lib/cjs/tests/api_tests/security/F-0145-globalunique-leak.test.d.ts +20 -0
  29. package/lib/cjs/tests/api_tests/security/F-0145-globalunique-leak.test.d.ts.map +1 -0
  30. package/lib/cjs/tests/api_tests/security/F-0145-globalunique-leak.test.js +139 -0
  31. package/lib/cjs/tests/api_tests/security/F-0145-globalunique-leak.test.js.map +1 -0
  32. package/lib/cjs/tests/api_tests/security/F-0151-load-inbox-redaction.test.d.ts +18 -0
  33. package/lib/cjs/tests/api_tests/security/F-0151-load-inbox-redaction.test.d.ts.map +1 -0
  34. package/lib/cjs/tests/api_tests/security/F-0151-load-inbox-redaction.test.js +156 -0
  35. package/lib/cjs/tests/api_tests/security/F-0151-load-inbox-redaction.test.js.map +1 -0
  36. package/lib/cjs/tests/api_tests/security/F-0155-webhook-timeout.test.d.ts +20 -0
  37. package/lib/cjs/tests/api_tests/security/F-0155-webhook-timeout.test.d.ts.map +1 -0
  38. package/lib/cjs/tests/api_tests/security/F-0155-webhook-timeout.test.js +157 -0
  39. package/lib/cjs/tests/api_tests/security/F-0155-webhook-timeout.test.js.map +1 -0
  40. package/lib/cjs/tests/api_tests/time_tracks.test.d.ts +8 -0
  41. package/lib/cjs/tests/api_tests/time_tracks.test.d.ts.map +1 -1
  42. package/lib/cjs/tests/api_tests/time_tracks.test.js +638 -1
  43. package/lib/cjs/tests/api_tests/time_tracks.test.js.map +1 -1
  44. package/lib/cjs/tests/setup.d.ts.map +1 -1
  45. package/lib/cjs/tests/setup.js +20 -1
  46. package/lib/cjs/tests/setup.js.map +1 -1
  47. package/lib/cjs/tests/tests.d.ts.map +1 -1
  48. package/lib/cjs/tests/tests.js +606 -178
  49. package/lib/cjs/tests/tests.js.map +1 -1
  50. package/lib/esm/sdk.d.ts +6 -2
  51. package/lib/esm/sdk.d.ts.map +1 -1
  52. package/lib/esm/tests/api_tests/_tmp_bc_verify.test.d.ts +2 -0
  53. package/lib/esm/tests/api_tests/_tmp_bc_verify.test.d.ts.map +1 -0
  54. package/lib/esm/tests/api_tests/_tmp_bc_verify.test.js +120 -0
  55. package/lib/esm/tests/api_tests/_tmp_bc_verify.test.js.map +1 -0
  56. package/lib/esm/tests/api_tests/_tmp_blank_status_verify.test.d.ts +2 -0
  57. package/lib/esm/tests/api_tests/_tmp_blank_status_verify.test.d.ts.map +1 -0
  58. package/lib/esm/tests/api_tests/_tmp_blank_status_verify.test.js +200 -0
  59. package/lib/esm/tests/api_tests/_tmp_blank_status_verify.test.js.map +1 -0
  60. package/lib/esm/tests/api_tests/_tmp_followup_verify.test.d.ts +2 -0
  61. package/lib/esm/tests/api_tests/_tmp_followup_verify.test.d.ts.map +1 -0
  62. package/lib/esm/tests/api_tests/_tmp_followup_verify.test.js +194 -0
  63. package/lib/esm/tests/api_tests/_tmp_followup_verify.test.js.map +1 -0
  64. package/lib/esm/tests/api_tests/_tmp_nonmatch_verify.test.d.ts +2 -0
  65. package/lib/esm/tests/api_tests/_tmp_nonmatch_verify.test.d.ts.map +1 -0
  66. package/lib/esm/tests/api_tests/_tmp_nonmatch_verify.test.js +115 -0
  67. package/lib/esm/tests/api_tests/_tmp_nonmatch_verify.test.js.map +1 -0
  68. package/lib/esm/tests/api_tests/ai_decision_summary_config.test.d.ts +16 -0
  69. package/lib/esm/tests/api_tests/ai_decision_summary_config.test.d.ts.map +1 -0
  70. package/lib/esm/tests/api_tests/ai_decision_summary_config.test.js +183 -0
  71. package/lib/esm/tests/api_tests/ai_decision_summary_config.test.js.map +1 -0
  72. package/lib/esm/tests/api_tests/field_redaction.test.d.ts.map +1 -1
  73. package/lib/esm/tests/api_tests/field_redaction.test.js +112 -99
  74. package/lib/esm/tests/api_tests/field_redaction.test.js.map +1 -1
  75. package/lib/esm/tests/api_tests/journey_error_branching.test.js +7 -2
  76. package/lib/esm/tests/api_tests/journey_error_branching.test.js.map +1 -1
  77. package/lib/esm/tests/api_tests/mdi_case_offerings.test.d.ts +6 -0
  78. package/lib/esm/tests/api_tests/mdi_case_offerings.test.d.ts.map +1 -0
  79. package/lib/esm/tests/api_tests/mdi_case_offerings.test.js +439 -0
  80. package/lib/esm/tests/api_tests/mdi_case_offerings.test.js.map +1 -0
  81. package/lib/esm/tests/api_tests/resource_access_tags.test.d.ts +22 -0
  82. package/lib/esm/tests/api_tests/resource_access_tags.test.d.ts.map +1 -0
  83. package/lib/esm/tests/api_tests/resource_access_tags.test.js +484 -0
  84. package/lib/esm/tests/api_tests/resource_access_tags.test.js.map +1 -0
  85. package/lib/esm/tests/api_tests/security/F-0116-F-0119-enduser-cross-create.test.d.ts +21 -0
  86. package/lib/esm/tests/api_tests/security/F-0116-F-0119-enduser-cross-create.test.d.ts.map +1 -0
  87. package/lib/esm/tests/api_tests/security/F-0116-F-0119-enduser-cross-create.test.js +358 -0
  88. package/lib/esm/tests/api_tests/security/F-0116-F-0119-enduser-cross-create.test.js.map +1 -0
  89. package/lib/esm/tests/api_tests/security/F-0145-globalunique-leak.test.d.ts +20 -0
  90. package/lib/esm/tests/api_tests/security/F-0145-globalunique-leak.test.d.ts.map +1 -0
  91. package/lib/esm/tests/api_tests/security/F-0145-globalunique-leak.test.js +135 -0
  92. package/lib/esm/tests/api_tests/security/F-0145-globalunique-leak.test.js.map +1 -0
  93. package/lib/esm/tests/api_tests/security/F-0151-load-inbox-redaction.test.d.ts +18 -0
  94. package/lib/esm/tests/api_tests/security/F-0151-load-inbox-redaction.test.d.ts.map +1 -0
  95. package/lib/esm/tests/api_tests/security/F-0151-load-inbox-redaction.test.js +152 -0
  96. package/lib/esm/tests/api_tests/security/F-0151-load-inbox-redaction.test.js.map +1 -0
  97. package/lib/esm/tests/api_tests/security/F-0155-webhook-timeout.test.d.ts +20 -0
  98. package/lib/esm/tests/api_tests/security/F-0155-webhook-timeout.test.d.ts.map +1 -0
  99. package/lib/esm/tests/api_tests/security/F-0155-webhook-timeout.test.js +150 -0
  100. package/lib/esm/tests/api_tests/security/F-0155-webhook-timeout.test.js.map +1 -0
  101. package/lib/esm/tests/api_tests/time_tracks.test.d.ts +8 -0
  102. package/lib/esm/tests/api_tests/time_tracks.test.d.ts.map +1 -1
  103. package/lib/esm/tests/api_tests/time_tracks.test.js +635 -0
  104. package/lib/esm/tests/api_tests/time_tracks.test.js.map +1 -1
  105. package/lib/esm/tests/setup.d.ts.map +1 -1
  106. package/lib/esm/tests/setup.js +20 -1
  107. package/lib/esm/tests/setup.js.map +1 -1
  108. package/lib/esm/tests/tests.d.ts.map +1 -1
  109. package/lib/esm/tests/tests.js +607 -179
  110. package/lib/esm/tests/tests.js.map +1 -1
  111. package/lib/tsconfig.tsbuildinfo +1 -1
  112. package/package.json +10 -10
  113. package/src/tests/api_tests/field_redaction.test.ts +13 -0
  114. package/src/tests/api_tests/journey_error_branching.test.ts +5 -1
  115. package/src/tests/api_tests/mdi_case_offerings.test.ts +414 -0
  116. package/src/tests/api_tests/resource_access_tags.test.ts +303 -0
  117. package/src/tests/api_tests/security/F-0116-F-0119-enduser-cross-create.test.ts +221 -0
  118. package/src/tests/api_tests/security/F-0145-globalunique-leak.test.ts +78 -0
  119. package/src/tests/api_tests/security/F-0151-load-inbox-redaction.test.ts +81 -0
  120. package/src/tests/api_tests/security/F-0155-webhook-timeout.test.ts +85 -0
  121. package/src/tests/api_tests/time_tracks.test.ts +420 -0
  122. package/src/tests/setup.ts +9 -0
  123. package/src/tests/tests.ts +308 -5
  124. package/test_generated.pdf +0 -0
@@ -102,12 +102,13 @@ import { cross_org_api_key_tests } from "./api_tests/cross_org_api_key.test";
102
102
  import { custom_dashboards_tests } from "./api_tests/custom_dashboards.test";
103
103
  import { message_assignment_trigger_tests } from "./api_tests/message_assignment_trigger.test";
104
104
  import { outbound_chat_sent_trigger_tests } from "./api_tests/outbound_chat_sent_trigger.test";
105
- import { time_tracks_tests, time_tracks_historical_tests, time_tracks_correction_tests, time_tracks_review_tests, time_tracks_lock_tests, time_tracks_edge_case_tests } from "./api_tests/time_tracks.test";
105
+ import { time_tracks_tests, time_tracks_historical_tests, time_tracks_correction_tests, time_tracks_review_tests, time_tracks_lock_tests, time_tracks_edge_case_tests, time_tracks_resubmit_tests, time_tracks_appointment_duration_tests } from "./api_tests/time_tracks.test";
106
106
  import { monthly_availability_restrictions_tests } from "./api_tests/monthly_availability_restrictions.test";
107
107
  import { calendar_event_limits_tests } from "./api_tests/calendar_event_limits.test";
108
108
  import { custom_aggregation_tests } from "./api_tests/custom_aggregation.test";
109
109
  import { chats_analytics_tests } from "./api_tests/chats_analytics.test";
110
110
  import { no_access_permission_checks_tests } from "./api_tests/no_access_permission_checks.test";
111
+ import { resource_access_tags_tests } from "./api_tests/resource_access_tags.test";
111
112
  import { field_redaction_tests } from "./api_tests/field_redaction.test";
112
113
  import { data_sync_redaction_bypass_tests } from "./api_tests/security/F-0001-data-sync-redaction-bypass.test";
113
114
  import { enduser_write_restrictions_tests } from "./api_tests/security/F-0106-F-0110-enduser-write-restrictions.test";
@@ -118,6 +119,10 @@ import { invite_user_enumeration_tests } from "./api_tests/security/F-0007-invit
118
119
  import { handle_incoming_communication_cross_tenant_tests } from "./api_tests/security/F-0008-handle-incoming-communication-cross-tenant.test";
119
120
  import { sanitize_user_html_xss_tests } from "./api_tests/security/F-0013-sanitize-user-html.test";
120
121
  import { prototype_pollution_tests } from "./api_tests/security/F-0016-prototype-pollution.test";
122
+ import { enduser_cross_create_tests } from "./api_tests/security/F-0116-F-0119-enduser-cross-create.test";
123
+ import { globalunique_leak_tests } from "./api_tests/security/F-0145-globalunique-leak.test";
124
+ import { load_inbox_redaction_tests } from "./api_tests/security/F-0151-load-inbox-redaction.test";
125
+ import { webhook_timeout_tests } from "./api_tests/security/F-0155-webhook-timeout.test";
121
126
  import { bulk_assignment_tests } from "./api_tests/bulk_assignment.test";
122
127
  import { managed_content_enduser_access_tests } from "./api_tests/managed_content_enduser_access.test";
123
128
  import { managed_content_file_access_tests } from "./api_tests/managed_content_file_access.test";
@@ -134,6 +139,7 @@ import { organization_settings_duplicates_tests } from "./api_tests/organization
134
139
  import { calendar_events_bulk_update_tests } from "./api_tests/calendar_events_bulk_update.test";
135
140
  import { openloop_webhooks_tests } from "./api_tests/openloop_webhooks.test";
136
141
  import { beluga_pharmacy_mappings_tests } from "./api_tests/beluga_pharmacy_mappings.test";
142
+ import { mdi_case_offerings_tests } from "./api_tests/mdi_case_offerings.test";
137
143
  import { beluga_manual_sync_tests } from "./api_tests/beluga_manual_sync.test";
138
144
  import { mdi_webhooks_tests } from "./api_tests/mdi_webhooks.test";
139
145
  import { account_switcher_tests } from "./api_tests/account_switcher.test";
@@ -4488,6 +4494,388 @@ var order_status_equals_tests = function () { return __awaiter(void 0, void 0, v
4488
4494
  }
4489
4495
  });
4490
4496
  }); };
4497
+ // Covers the "blank status matches any order status" behavior (Order Status Equals acting as "Order Status Changed").
4498
+ // Kept separate from order_status_equals_tests because a blank-status trigger would break that test's exact tag-count assertions.
4499
+ var order_status_blank_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
4500
+ var A, A2, B, C, D, BA, BD, BD2, P, e2, e3, e4, e5, e6, e7, o7, eb1, eb2, eb3, e8, o8, e9, e10;
4501
+ return __generator(this, function (_a) {
4502
+ switch (_a.label) {
4503
+ case 0:
4504
+ log_header("Automation Trigger Tests (Order Status Equals - blank status)");
4505
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4506
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource' } },
4507
+ action: { type: 'Add Tags', info: { tags: ['AnyOmit'] } },
4508
+ status: 'Active',
4509
+ title: "Blank status (omitted)"
4510
+ })];
4511
+ case 1:
4512
+ A = _a.sent();
4513
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4514
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: '' } },
4515
+ action: { type: 'Add Tags', info: { tags: ['AnyEmpty'] } },
4516
+ status: 'Active',
4517
+ title: "Blank status (empty string)"
4518
+ })];
4519
+ case 2:
4520
+ A2 = _a.sent();
4521
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4522
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: '', skus: ['MATCH-SKU'] } },
4523
+ action: { type: 'Add Tags', info: { tags: ['BlankWithSku'] } },
4524
+ status: 'Active',
4525
+ title: "Blank status with SKU filter"
4526
+ })];
4527
+ case 3:
4528
+ B = _a.sent();
4529
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4530
+ event: { type: 'Order Status Equals', info: { source: 'OtherSource' } },
4531
+ action: { type: 'Add Tags', info: { tags: ['WrongSource'] } },
4532
+ status: 'Active',
4533
+ title: "Blank status, other source"
4534
+ })];
4535
+ case 4:
4536
+ C = _a.sent();
4537
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4538
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: 'Shipped' } },
4539
+ action: { type: 'Add Tags', info: { tags: ['ShippedOnly'] } },
4540
+ status: 'Active',
4541
+ title: "Status-specific (regression)"
4542
+ })
4543
+ // BA/BD exercise the separate bulk-create code path (createSome of 2+); kept on their own source so the
4544
+ // pre-existing "bulk ignores sku/protocol filters" divergence doesn't affect these assertions.
4545
+ ];
4546
+ case 5:
4547
+ D = _a.sent();
4548
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4549
+ event: { type: 'Order Status Equals', info: { source: 'BulkSource' } },
4550
+ action: { type: 'Add Tags', info: { tags: ['BulkAny'] } },
4551
+ status: 'Active',
4552
+ title: "Bulk blank status"
4553
+ })];
4554
+ case 6:
4555
+ BA = _a.sent();
4556
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4557
+ event: { type: 'Order Status Equals', info: { source: 'BulkSource', status: 'Shipped' } },
4558
+ action: { type: 'Add Tags', info: { tags: ['BulkShipped'] } },
4559
+ status: 'Active',
4560
+ title: "Bulk status-specific"
4561
+ })
4562
+ // BD2's status matches NO order in the bulk batch below; backwards-compat: it must never fire (the query's $in
4563
+ // branch excludes it entirely, exactly as before the blank-status change).
4564
+ ];
4565
+ case 7:
4566
+ BD = _a.sent();
4567
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4568
+ event: { type: 'Order Status Equals', info: { source: 'BulkSource', status: 'NeverInBatch' } },
4569
+ action: { type: 'Add Tags', info: { tags: ['BulkNever'] } },
4570
+ status: 'Active',
4571
+ title: "Bulk status-specific (absent from batch)"
4572
+ })
4573
+ // P: blank status composed with a protocol filter (proves blank works with non-SKU filters + the no-protocol branch)
4574
+ ];
4575
+ case 8:
4576
+ BD2 = _a.sent();
4577
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
4578
+ event: { type: 'Order Status Equals', info: { source: 'BlankSource', status: '', protocols: ['Protocol-A'] } },
4579
+ action: { type: 'Add Tags', info: { tags: ['BlankProtocol'] } },
4580
+ status: 'Active',
4581
+ title: "Blank status with protocol filter"
4582
+ })
4583
+ // Case 1: validation accepts triggers with no status / empty status (A and A2 created above without error)
4584
+ ];
4585
+ case 9:
4586
+ P = _a.sent();
4587
+ // Case 1: validation accepts triggers with no status / empty status (A and A2 created above without error)
4588
+ return [4 /*yield*/, async_test("Trigger with omitted status was created", function () { return Promise.resolve(A); }, { onResult: function (t) { return !!t.id && t.event.type === 'Order Status Equals' && !t.event.info.status; } })];
4589
+ case 10:
4590
+ // Case 1: validation accepts triggers with no status / empty status (A and A2 created above without error)
4591
+ _a.sent();
4592
+ return [4 /*yield*/, async_test("Trigger with empty-string status was created", function () { return Promise.resolve(A2); }, { onResult: function (t) { return !!t.id && t.event.type === 'Order Status Equals' && t.event.info.status === ''; } })
4593
+ // Case 2: blank status fires on an arbitrary status
4594
+ ];
4595
+ case 11:
4596
+ _a.sent();
4597
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4598
+ case 12:
4599
+ e2 = _a.sent();
4600
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'StatusOne', source: 'BlankSource', title: 'Title', externalId: 'blank-1', enduserId: e2.id })];
4601
+ case 13:
4602
+ _a.sent();
4603
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4604
+ case 14:
4605
+ _a.sent(); // allow triggers to happen
4606
+ return [4 /*yield*/, async_test("Blank status fires on arbitrary status (no other tags)", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
4607
+ var _a, _b, _c, _d, _f;
4608
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4609
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4610
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BlankWithSku'))
4611
+ && !((_d = e.tags) === null || _d === void 0 ? void 0 : _d.includes('WrongSource'))
4612
+ && !((_f = e.tags) === null || _f === void 0 ? void 0 : _f.includes('ShippedOnly')));
4613
+ } })
4614
+ // Case 3: blank status fires on a totally different status value (status-value-independent)
4615
+ ];
4616
+ case 15:
4617
+ _a.sent();
4618
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4619
+ case 16:
4620
+ e3 = _a.sent();
4621
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'totally-arbitrary-xyz', source: 'BlankSource', title: 'Title', externalId: 'blank-2', enduserId: e3.id })];
4622
+ case 17:
4623
+ _a.sent();
4624
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4625
+ case 18:
4626
+ _a.sent(); // allow triggers to happen
4627
+ return [4 /*yield*/, async_test("Blank status fires on a different arbitrary status", function () { return sdk.api.endusers.getOne(e3.id); }, { onResult: function (e) {
4628
+ var _a, _b;
4629
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4630
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty')));
4631
+ } })
4632
+ // Case 4: source isolation - blank trigger does not fire for a different source
4633
+ ];
4634
+ case 19:
4635
+ _a.sent();
4636
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4637
+ case 20:
4638
+ e4 = _a.sent();
4639
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'StatusOne', source: 'DifferentSource', title: 'Title', externalId: 'blank-3', enduserId: e4.id })];
4640
+ case 21:
4641
+ _a.sent();
4642
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4643
+ case 22:
4644
+ _a.sent(); // allow triggers to happen
4645
+ return [4 /*yield*/, async_test("Blank status is still scoped to its source", function () { return sdk.api.endusers.getOne(e4.id); }, { onResult: function (e) {
4646
+ var _a, _b, _c;
4647
+ return !!(!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4648
+ && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4649
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('WrongSource')) // C only matches OtherSource
4650
+ );
4651
+ } })
4652
+ // Case 5a: other filters still enforced with blank status (sku mismatch)
4653
+ ];
4654
+ case 23:
4655
+ _a.sent();
4656
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4657
+ case 24:
4658
+ e5 = _a.sent();
4659
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'blank-4', enduserId: e5.id, sku: 'NOPE' })];
4660
+ case 25:
4661
+ _a.sent();
4662
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4663
+ case 26:
4664
+ _a.sent(); // allow triggers to happen
4665
+ return [4 /*yield*/, async_test("Blank status + SKU filter does not fire on SKU mismatch", function () { return sdk.api.endusers.getOne(e5.id); }, { onResult: function (e) {
4666
+ var _a, _b, _c;
4667
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4668
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4669
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BlankWithSku')));
4670
+ } })
4671
+ // Case 5b: other filters still enforced with blank status (sku match)
4672
+ ];
4673
+ case 27:
4674
+ _a.sent();
4675
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4676
+ case 28:
4677
+ e6 = _a.sent();
4678
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'blank-5', enduserId: e6.id, sku: 'MATCH-SKU' })];
4679
+ case 29:
4680
+ _a.sent();
4681
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4682
+ case 30:
4683
+ _a.sent(); // allow triggers to happen
4684
+ return [4 /*yield*/, async_test("Blank status + SKU filter fires on SKU match", function () { return sdk.api.endusers.getOne(e6.id); }, { onResult: function (e) {
4685
+ var _a, _b, _c;
4686
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4687
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4688
+ && ((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BlankWithSku')));
4689
+ } })
4690
+ // Case 6: update path + regression coexistence with a status-specific trigger
4691
+ ];
4692
+ case 31:
4693
+ _a.sent();
4694
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4695
+ case 32:
4696
+ e7 = _a.sent();
4697
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Created', source: 'BlankSource', title: 'Title', externalId: 'blank-6', enduserId: e7.id })];
4698
+ case 33:
4699
+ o7 = _a.sent();
4700
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4701
+ case 34:
4702
+ _a.sent(); // allow triggers to happen
4703
+ return [4 /*yield*/, async_test("Blank fires on create; status-specific (Shipped) does not yet", function () { return sdk.api.endusers.getOne(e7.id); }, { onResult: function (e) {
4704
+ var _a, _b, _c;
4705
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4706
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4707
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('ShippedOnly')));
4708
+ } })
4709
+ // update to a NON-matching status: blank fires again, but the status-specific trigger must stay un-fired
4710
+ ];
4711
+ case 35:
4712
+ _a.sent();
4713
+ // update to a NON-matching status: blank fires again, but the status-specific trigger must stay un-fired
4714
+ return [4 /*yield*/, sdk.api.enduser_orders.updateOne(o7.id, { status: 'Delivered', externalId: 'blank-6-delivered' })];
4715
+ case 36:
4716
+ // update to a NON-matching status: blank fires again, but the status-specific trigger must stay un-fired
4717
+ _a.sent();
4718
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4719
+ case 37:
4720
+ _a.sent(); // allow triggers to happen
4721
+ return [4 /*yield*/, async_test("Update to non-matching status: blank fires, status-specific (Shipped) does NOT fire", function () { return sdk.api.endusers.getOne(e7.id); }, { onResult: function (e) {
4722
+ var _a, _b, _c;
4723
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit') // proves the update event was processed
4724
+ )
4725
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4726
+ && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('ShippedOnly')) // 'Delivered' must not trigger the 'Shipped' trigger
4727
+ );
4728
+ } })
4729
+ // now update to the matching status: status-specific trigger fires
4730
+ ];
4731
+ case 38:
4732
+ _a.sent();
4733
+ // now update to the matching status: status-specific trigger fires
4734
+ return [4 /*yield*/, sdk.api.enduser_orders.updateOne(o7.id, { status: 'Shipped', externalId: 'blank-6-shipped' })];
4735
+ case 39:
4736
+ // now update to the matching status: status-specific trigger fires
4737
+ _a.sent();
4738
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4739
+ case 40:
4740
+ _a.sent(); // allow triggers to happen
4741
+ return [4 /*yield*/, async_test("Blank fires on update too; status-specific (Shipped) now fires", function () { return sdk.api.endusers.getOne(e7.id); }, { onResult: function (e) {
4742
+ var _a, _b, _c;
4743
+ return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit'))
4744
+ && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('AnyEmpty'))
4745
+ && ((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('ShippedOnly')));
4746
+ } })
4747
+ // Case 7: bulk create path (createSome of 2+) must honor blank status + status-specific selectivity.
4748
+ // This exercises a SEPARATE matching code path (handle_orders_create bulk branch) from single creates.
4749
+ ];
4750
+ case 41:
4751
+ _a.sent();
4752
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4753
+ case 42:
4754
+ eb1 = _a.sent();
4755
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4756
+ case 43:
4757
+ eb2 = _a.sent();
4758
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4759
+ case 44:
4760
+ eb3 = _a.sent();
4761
+ return [4 /*yield*/, sdk.api.enduser_orders.createSome([
4762
+ { status: 'StatusA', source: 'BulkSource', title: 'Title', externalId: 'bulk-1', enduserId: eb1.id },
4763
+ { status: 'Shipped', source: 'BulkSource', title: 'Title', externalId: 'bulk-2', enduserId: eb2.id },
4764
+ { status: 'StatusB', source: 'BulkSource', title: 'Title', externalId: 'bulk-3', enduserId: eb3.id },
4765
+ ])];
4766
+ case 45:
4767
+ _a.sent();
4768
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4769
+ case 46:
4770
+ _a.sent(); // allow triggers to happen
4771
+ return [4 /*yield*/, async_test("Bulk create: blank fires on non-Shipped order; status-specific (matching + absent) do not", function () { return sdk.api.endusers.getOne(eb1.id); }, { onResult: function (e) { var _a, _b, _c; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('BulkAny')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('BulkShipped')) && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BulkNever'))); } })];
4772
+ case 47:
4773
+ _a.sent();
4774
+ return [4 /*yield*/, async_test("Bulk create: blank + matching status-specific fire on the Shipped order; absent-status one does not", function () { return sdk.api.endusers.getOne(eb2.id); }, { onResult: function (e) { var _a, _b, _c; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('BulkAny')) && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('BulkShipped')) && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BulkNever'))); } })];
4775
+ case 48:
4776
+ _a.sent();
4777
+ return [4 /*yield*/, async_test("Bulk create: blank fires on the other non-Shipped order; status-specific (matching + absent) do not", function () { return sdk.api.endusers.getOne(eb3.id); }, { onResult: function (e) { var _a, _b, _c; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('BulkAny')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('BulkShipped')) && !((_c = e.tags) === null || _c === void 0 ? void 0 : _c.includes('BulkNever'))); } })
4778
+ // Case 8: an order update that does NOT change status must not run the handler (true "status changed" semantic).
4779
+ ];
4780
+ case 49:
4781
+ _a.sent();
4782
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4783
+ case 50:
4784
+ e8 = _a.sent();
4785
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'Shipped', source: 'BlankSource', title: 'Title', externalId: 'noChange-1', enduserId: e8.id })];
4786
+ case 51:
4787
+ o8 = _a.sent();
4788
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4789
+ case 52:
4790
+ _a.sent(); // allow triggers to happen
4791
+ return [4 /*yield*/, async_test("Setup: status-specific (Shipped) fired on create", function () { return sdk.api.endusers.getOne(e8.id); }, { onResult: function (e) { var _a, _b; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit')) && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('ShippedOnly'))); } })
4792
+ // clear tags (replaceObjectFields forces the empty array to actually replace)
4793
+ ];
4794
+ case 53:
4795
+ _a.sent();
4796
+ // clear tags (replaceObjectFields forces the empty array to actually replace)
4797
+ return [4 /*yield*/, sdk.api.endusers.updateOne(e8.id, { tags: [] }, { replaceObjectFields: true })
4798
+ // sanity-check the clear actually took, so a later failure points at re-firing rather than a broken clear
4799
+ ];
4800
+ case 54:
4801
+ // clear tags (replaceObjectFields forces the empty array to actually replace)
4802
+ _a.sent();
4803
+ // sanity-check the clear actually took, so a later failure points at re-firing rather than a broken clear
4804
+ return [4 /*yield*/, async_test("Setup: tags cleared before non-status update", function () { return sdk.api.endusers.getOne(e8.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })
4805
+ // update a non-status field (status stays 'Shipped'); handler should early-return and re-add nothing.
4806
+ // If it wrongly fired, the blank triggers A/A2 would re-add AnyOmit/AnyEmpty, so empty tags proves non-firing.
4807
+ ];
4808
+ case 55:
4809
+ // sanity-check the clear actually took, so a later failure points at re-firing rather than a broken clear
4810
+ _a.sent();
4811
+ // update a non-status field (status stays 'Shipped'); handler should early-return and re-add nothing.
4812
+ // If it wrongly fired, the blank triggers A/A2 would re-add AnyOmit/AnyEmpty, so empty tags proves non-firing.
4813
+ return [4 /*yield*/, sdk.api.enduser_orders.updateOne(o8.id, { tracking: 'tracking-123', externalId: 'noChange-1b' })];
4814
+ case 56:
4815
+ // update a non-status field (status stays 'Shipped'); handler should early-return and re-add nothing.
4816
+ // If it wrongly fired, the blank triggers A/A2 would re-add AnyOmit/AnyEmpty, so empty tags proves non-firing.
4817
+ _a.sent();
4818
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4819
+ case 57:
4820
+ _a.sent(); // allow triggers to happen
4821
+ return [4 /*yield*/, async_test("Update with unchanged status does not fire any trigger", function () { return sdk.api.endusers.getOne(e8.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })
4822
+ // Case 9: protocol filter with blank status - order without a protocol must not fire (the order.protocol ? : false branch)
4823
+ ];
4824
+ case 58:
4825
+ _a.sent();
4826
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4827
+ case 59:
4828
+ e9 = _a.sent();
4829
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'proto-1', enduserId: e9.id })];
4830
+ case 60:
4831
+ _a.sent();
4832
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4833
+ case 61:
4834
+ _a.sent(); // allow triggers to happen
4835
+ return [4 /*yield*/, async_test("Blank + protocol filter does not fire when order has no protocol", function () { return sdk.api.endusers.getOne(e9.id); }, { onResult: function (e) { var _a, _b; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit')) && !((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('BlankProtocol'))); } })];
4836
+ case 62:
4837
+ _a.sent();
4838
+ return [4 /*yield*/, sdk.api.endusers.createOne({})];
4839
+ case 63:
4840
+ e10 = _a.sent();
4841
+ return [4 /*yield*/, sdk.api.enduser_orders.createOne({ status: 'whatever', source: 'BlankSource', title: 'Title', externalId: 'proto-2', enduserId: e10.id, protocol: 'Protocol-A' })];
4842
+ case 64:
4843
+ _a.sent();
4844
+ return [4 /*yield*/, wait(undefined, 500)]; // allow triggers to happen
4845
+ case 65:
4846
+ _a.sent(); // allow triggers to happen
4847
+ return [4 /*yield*/, async_test("Blank + protocol filter fires when order protocol matches", function () { return sdk.api.endusers.getOne(e10.id); }, { onResult: function (e) { var _a, _b; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('AnyOmit')) && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('BlankProtocol'))); } })];
4848
+ case 66:
4849
+ _a.sent();
4850
+ return [4 /*yield*/, Promise.all([
4851
+ sdk.api.automation_triggers.deleteOne(A.id),
4852
+ sdk.api.automation_triggers.deleteOne(A2.id),
4853
+ sdk.api.automation_triggers.deleteOne(B.id),
4854
+ sdk.api.automation_triggers.deleteOne(C.id),
4855
+ sdk.api.automation_triggers.deleteOne(D.id),
4856
+ sdk.api.automation_triggers.deleteOne(BA.id),
4857
+ sdk.api.automation_triggers.deleteOne(BD.id),
4858
+ sdk.api.automation_triggers.deleteOne(BD2.id),
4859
+ sdk.api.automation_triggers.deleteOne(P.id),
4860
+ sdk.api.endusers.deleteOne(e2.id),
4861
+ sdk.api.endusers.deleteOne(e3.id),
4862
+ sdk.api.endusers.deleteOne(e4.id),
4863
+ sdk.api.endusers.deleteOne(e5.id),
4864
+ sdk.api.endusers.deleteOne(e6.id),
4865
+ sdk.api.endusers.deleteOne(e7.id),
4866
+ sdk.api.endusers.deleteOne(eb1.id),
4867
+ sdk.api.endusers.deleteOne(eb2.id),
4868
+ sdk.api.endusers.deleteOne(eb3.id),
4869
+ sdk.api.endusers.deleteOne(e8.id),
4870
+ sdk.api.endusers.deleteOne(e9.id),
4871
+ sdk.api.endusers.deleteOne(e10.id),
4872
+ ])];
4873
+ case 67:
4874
+ _a.sent();
4875
+ return [2 /*return*/];
4876
+ }
4877
+ });
4878
+ }); };
4491
4879
  var tag_added_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
4492
4880
  var t1, t2, t3, e;
4493
4881
  return __generator(this, function (_a) {
@@ -6418,56 +6806,59 @@ var automation_trigger_tests = function () { return __awaiter(void 0, void 0, vo
6418
6806
  return [4 /*yield*/, order_status_equals_tests()];
6419
6807
  case 3:
6420
6808
  _a.sent();
6421
- return [4 /*yield*/, set_fields_order_templates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6809
+ return [4 /*yield*/, order_status_blank_tests()];
6422
6810
  case 4:
6423
6811
  _a.sent();
6424
- return [4 /*yield*/, medication_added_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6812
+ return [4 /*yield*/, set_fields_order_templates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6425
6813
  case 5:
6426
6814
  _a.sent();
6427
- return [4 /*yield*/, appointment_cancelled_tests()];
6815
+ return [4 /*yield*/, medication_added_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6428
6816
  case 6:
6429
6817
  _a.sent();
6430
- return [4 /*yield*/, set_fields_tests()];
6818
+ return [4 /*yield*/, appointment_cancelled_tests()];
6431
6819
  case 7:
6432
6820
  _a.sent();
6433
- return [4 /*yield*/, purchase_made_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6821
+ return [4 /*yield*/, set_fields_tests()];
6434
6822
  case 8:
6435
6823
  _a.sent();
6436
- return [4 /*yield*/, appointment_rescheduled_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6824
+ return [4 /*yield*/, purchase_made_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6437
6825
  case 9:
6438
6826
  _a.sent();
6439
- return [4 /*yield*/, form_response_set_fields_trigger_tests()];
6827
+ return [4 /*yield*/, appointment_rescheduled_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6440
6828
  case 10:
6441
6829
  _a.sent();
6442
- return [4 /*yield*/, form_response_set_fields_journey_tests()];
6830
+ return [4 /*yield*/, form_response_set_fields_trigger_tests()];
6443
6831
  case 11:
6444
6832
  _a.sent();
6445
- return [4 /*yield*/, appointment_completed_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6833
+ return [4 /*yield*/, form_response_set_fields_journey_tests()];
6446
6834
  case 12:
6447
6835
  _a.sent();
6448
- return [4 /*yield*/, trigger_events_api_tests()];
6836
+ return [4 /*yield*/, appointment_completed_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
6449
6837
  case 13:
6450
6838
  _a.sent();
6451
- return [4 /*yield*/, fields_changed_tests()];
6839
+ return [4 /*yield*/, trigger_events_api_tests()];
6452
6840
  case 14:
6453
6841
  _a.sent();
6454
- return [4 /*yield*/, field_equals_trigger_tests()];
6842
+ return [4 /*yield*/, fields_changed_tests()];
6455
6843
  case 15:
6456
6844
  _a.sent();
6457
- return [4 /*yield*/, contact_created_tests()];
6845
+ return [4 /*yield*/, field_equals_trigger_tests()];
6458
6846
  case 16:
6459
6847
  _a.sent();
6460
- return [4 /*yield*/, appointment_created_tests()];
6848
+ return [4 /*yield*/, contact_created_tests()];
6461
6849
  case 17:
6462
6850
  _a.sent();
6463
- return [4 /*yield*/, tag_added_tests()];
6851
+ return [4 /*yield*/, appointment_created_tests()];
6464
6852
  case 18:
6465
6853
  _a.sent();
6466
- return [4 /*yield*/, order_created_tests()];
6854
+ return [4 /*yield*/, tag_added_tests()];
6467
6855
  case 19:
6468
6856
  _a.sent();
6469
- return [4 /*yield*/, formSubmittedTriggerTests()];
6857
+ return [4 /*yield*/, order_created_tests()];
6470
6858
  case 20:
6859
+ _a.sent();
6860
+ return [4 /*yield*/, formSubmittedTriggerTests()];
6861
+ case 21:
6471
6862
  _a.sent();
6472
6863
  return [2 /*return*/];
6473
6864
  }
@@ -10259,7 +10650,11 @@ export var switch_to_related_contacts_tests = function () { return __awaiter(voi
10259
10650
  return [4 /*yield*/, sdk.api.endusers.updateOne(child.id, { journeys: (_a = {}, _a[journey.id] = '', _a) })];
10260
10651
  case 6:
10261
10652
  _b.sent();
10262
- return [4 /*yield*/, async_test("Related contact got tags", function () { return pollForResults(function () { return sdk.api.endusers.getOne(parent.id); }, function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Success')); }, 50, 200); }, passOnAnyResult)];
10653
+ return [4 /*yield*/, async_test("Related contact got tags", function () { return pollForResults(function () { return sdk.api.endusers.getOne(parent.id); }, function (e) { var _a; return !!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('Success')); },
10654
+ // switchToRelatedContact (cycle 1) then the afterAction addEnduserTags (cycle 2) each wait a
10655
+ // full worker poll cycle (>= 8s, see worker pollingDelaySeconds), so ~16s worst case. Poll for
10656
+ // 30s (500ms x 60) to cover two cycles plus buffer; the old 10s window timed out flakily.
10657
+ 500, 60); }, passOnAnyResult)];
10263
10658
  case 7:
10264
10659
  _b.sent();
10265
10660
  return [2 /*return*/, Promise.all([
@@ -16242,12 +16637,16 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16242
16637
  return [4 /*yield*/, wait(undefined, 500)]; // wait for IP to be set
16243
16638
  case 4:
16244
16639
  _a.sent(); // wait for IP to be set
16245
- 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); } });
16640
+ return [4 /*yield*/, async_test('IP Set on Enduser creation', function () { return sdk.api.endusers.getOne(enduserId); }, { onResult: function (result) { var _a; return !!((_a = result.fields) === null || _a === void 0 ? void 0 : _a.IP); } })
16641
+ // clear ip and set other field to make sure IP doesn't overwrite other custom fields
16642
+ ];
16643
+ case 5:
16644
+ _a.sent();
16246
16645
  // clear ip and set other field to make sure IP doesn't overwrite other custom fields
16247
16646
  return [4 /*yield*/, sdk.api.endusers.updateOne(enduserId, { fields: { otherField: "Set" } }, { replaceObjectFields: true })
16248
16647
  // should match and update in place
16249
16648
  ];
16250
- case 5:
16649
+ case 6:
16251
16650
  // clear ip and set other field to make sure IP doesn't overwrite other custom fields
16252
16651
  _a.sent();
16253
16652
  // should match and update in place
@@ -16259,15 +16658,20 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16259
16658
  fname: 'session',
16260
16659
  lname: 'test',
16261
16660
  })];
16262
- case 6:
16661
+ case 7:
16263
16662
  // should match and update in place
16264
16663
  _a.sent();
16265
- 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; } });
16664
+ return [4 /*yield*/, wait(undefined, 500)]; // wait for IP to be re-set
16665
+ case 8:
16666
+ _a.sent(); // wait for IP to be re-set
16667
+ return [4 /*yield*/, async_test('IP Set on update', function () { return sdk.api.endusers.getOne(enduserId); }, { onResult: function (result) { var _a, _b; return !!((_a = result.fields) === null || _a === void 0 ? void 0 : _a.IP) && ((_b = result.fields) === null || _b === void 0 ? void 0 : _b.otherField) === 'Set' && result.id === enduserId; } })];
16668
+ case 9:
16669
+ _a.sent();
16266
16670
  return [4 /*yield*/, Promise.all([
16267
16671
  sdk.api.forms.deleteOne(form.id),
16268
16672
  sdk.api.endusers.deleteOne(enduserId),
16269
16673
  ])];
16270
- case 7:
16674
+ case 10:
16271
16675
  _a.sent();
16272
16676
  return [2 /*return*/];
16273
16677
  }
@@ -16288,7 +16692,7 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16288
16692
  assert(truncate_string(null, { length: 4, showEllipsis: false }) === '', 'truncate doesnt work for non string', 'trucate works for non-string');
16289
16693
  _l.label = 2;
16290
16694
  case 2:
16291
- _l.trys.push([2, 146, , 147]);
16695
+ _l.trys.push([2, 154, , 155]);
16292
16696
  get_next_reminder_timestamp_tests();
16293
16697
  form_conditional_logic_tests();
16294
16698
  return [4 /*yield*/, test_weighted_round_robin()];
@@ -16435,393 +16839,417 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16435
16839
  return [4 /*yield*/, setup_tests(sdk, sdkNonAdmin)];
16436
16840
  case 18:
16437
16841
  _l.sent();
16438
- return [4 /*yield*/, beluga_manual_sync_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16842
+ return [4 /*yield*/, resource_access_tags_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16439
16843
  case 19:
16440
16844
  _l.sent();
16441
- return [4 /*yield*/, beluga_pharmacy_mappings_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16845
+ return [4 /*yield*/, beluga_manual_sync_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16442
16846
  case 20:
16443
16847
  _l.sent();
16444
- return [4 /*yield*/, enduser_write_restrictions_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16848
+ return [4 /*yield*/, beluga_pharmacy_mappings_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16445
16849
  case 21:
16446
16850
  _l.sent();
16447
- return [4 /*yield*/, user_portal_settings_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16851
+ return [4 /*yield*/, mdi_case_offerings_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16448
16852
  case 22:
16449
16853
  _l.sent();
16450
- return [4 /*yield*/, automation_trigger_tests()];
16854
+ return [4 /*yield*/, enduser_write_restrictions_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16451
16855
  case 23:
16452
16856
  _l.sent();
16453
- return [4 /*yield*/, invite_user_enumeration_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16857
+ return [4 /*yield*/, enduser_cross_create_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16454
16858
  case 24:
16455
16859
  _l.sent();
16456
- return [4 /*yield*/, handle_incoming_communication_cross_tenant_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16860
+ return [4 /*yield*/, globalunique_leak_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16457
16861
  case 25:
16458
16862
  _l.sent();
16459
- return [4 /*yield*/, calendar_event_webhook_template_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16863
+ return [4 /*yield*/, load_inbox_redaction_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16460
16864
  case 26:
16461
16865
  _l.sent();
16462
- return [4 /*yield*/, outbound_chat_sent_trigger_tests({ sdk: sdk })];
16866
+ return [4 /*yield*/, webhook_timeout_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16463
16867
  case 27:
16464
16868
  _l.sent();
16465
- return [4 /*yield*/, enduser_login_rate_limits_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16869
+ return [4 /*yield*/, user_portal_settings_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16466
16870
  case 28:
16467
16871
  _l.sent();
16468
- return [4 /*yield*/, data_sync_redaction_bypass_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16872
+ return [4 /*yield*/, automation_trigger_tests()];
16469
16873
  case 29:
16470
16874
  _l.sent();
16471
- return [4 /*yield*/, ai_conversations_rbac_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16875
+ return [4 /*yield*/, invite_user_enumeration_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16472
16876
  case 30:
16473
16877
  _l.sent();
16474
- return [4 /*yield*/, cascade_role_rename_cross_tenant_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16878
+ return [4 /*yield*/, handle_incoming_communication_cross_tenant_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16475
16879
  case 31:
16476
16880
  _l.sent();
16477
- return [4 /*yield*/, self_admin_role_assignment_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16881
+ return [4 /*yield*/, calendar_event_webhook_template_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16478
16882
  case 32:
16479
16883
  _l.sent();
16480
- return [4 /*yield*/, sanitize_user_html_xss_tests()];
16884
+ return [4 /*yield*/, outbound_chat_sent_trigger_tests({ sdk: sdk })];
16481
16885
  case 33:
16482
16886
  _l.sent();
16483
- return [4 /*yield*/, prototype_pollution_tests()];
16887
+ return [4 /*yield*/, enduser_login_rate_limits_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16484
16888
  case 34:
16485
16889
  _l.sent();
16486
- return [4 /*yield*/, account_switcher_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16890
+ return [4 /*yield*/, data_sync_redaction_bypass_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16487
16891
  case 35:
16488
16892
  _l.sent();
16489
- return [4 /*yield*/, enduser_login_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16893
+ return [4 /*yield*/, ai_conversations_rbac_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16490
16894
  case 36:
16491
16895
  _l.sent();
16492
- return [4 /*yield*/, outbound_chat_sent_trigger_tests({ sdk: sdk })];
16896
+ return [4 /*yield*/, cascade_role_rename_cross_tenant_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16493
16897
  case 37:
16494
16898
  _l.sent();
16495
- return [4 /*yield*/, enduser_cross_access_isolation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16899
+ return [4 /*yield*/, self_admin_role_assignment_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16496
16900
  case 38:
16497
16901
  _l.sent();
16498
- return [4 /*yield*/, eom_procedure_codes_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16902
+ return [4 /*yield*/, sanitize_user_html_xss_tests()];
16499
16903
  case 39:
16500
16904
  _l.sent();
16501
- return [4 /*yield*/, cross_org_api_key_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16905
+ return [4 /*yield*/, prototype_pollution_tests()];
16502
16906
  case 40:
16503
16907
  _l.sent();
16504
- return [4 /*yield*/, organization_settings_duplicates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16908
+ return [4 /*yield*/, account_switcher_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16505
16909
  case 41:
16506
16910
  _l.sent();
16507
- return [4 /*yield*/, enduser_session_invalidation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16911
+ return [4 /*yield*/, enduser_login_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16508
16912
  case 42:
16509
16913
  _l.sent();
16510
- return [4 /*yield*/, chats_analytics_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16914
+ return [4 /*yield*/, outbound_chat_sent_trigger_tests({ sdk: sdk })];
16511
16915
  case 43:
16512
16916
  _l.sent();
16513
- return [4 /*yield*/, field_redaction_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16917
+ return [4 /*yield*/, enduser_cross_access_isolation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16514
16918
  case 44:
16515
16919
  _l.sent();
16516
- return [4 /*yield*/, form_submitted_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16920
+ return [4 /*yield*/, eom_procedure_codes_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16517
16921
  case 45:
16518
16922
  _l.sent();
16519
- return [4 /*yield*/, date_string_validation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16923
+ return [4 /*yield*/, cross_org_api_key_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16520
16924
  case 46:
16521
16925
  _l.sent();
16522
- return [4 /*yield*/, openloop_webhooks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16926
+ return [4 /*yield*/, organization_settings_duplicates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16523
16927
  case 47:
16524
16928
  _l.sent();
16525
- return [4 /*yield*/, mdi_webhooks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16929
+ return [4 /*yield*/, enduser_session_invalidation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16526
16930
  case 48:
16527
16931
  _l.sent();
16528
- return [4 /*yield*/, integrations_redacted_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16932
+ return [4 /*yield*/, chats_analytics_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16529
16933
  case 49:
16530
16934
  _l.sent();
16531
- return [4 /*yield*/, mdb_sort_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16935
+ return [4 /*yield*/, field_redaction_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16532
16936
  case 50:
16533
16937
  _l.sent();
16534
- return [4 /*yield*/, search_tests()];
16938
+ return [4 /*yield*/, form_submitted_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16535
16939
  case 51:
16536
16940
  _l.sent();
16537
- return [4 /*yield*/, time_tracks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16941
+ return [4 /*yield*/, date_string_validation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16538
16942
  case 52:
16539
16943
  _l.sent();
16540
- return [4 /*yield*/, time_tracks_historical_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16944
+ return [4 /*yield*/, openloop_webhooks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16541
16945
  case 53:
16542
16946
  _l.sent();
16543
- return [4 /*yield*/, time_tracks_correction_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16947
+ return [4 /*yield*/, mdi_webhooks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16544
16948
  case 54:
16545
16949
  _l.sent();
16546
- return [4 /*yield*/, time_tracks_review_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16950
+ return [4 /*yield*/, integrations_redacted_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16547
16951
  case 55:
16548
16952
  _l.sent();
16549
- return [4 /*yield*/, time_tracks_lock_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16953
+ return [4 /*yield*/, mdb_sort_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16550
16954
  case 56:
16551
16955
  _l.sent();
16552
- return [4 /*yield*/, time_tracks_edge_case_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16956
+ return [4 /*yield*/, search_tests()];
16553
16957
  case 57:
16554
16958
  _l.sent();
16555
- return [4 /*yield*/, calendar_event_limits_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16959
+ return [4 /*yield*/, time_tracks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16556
16960
  case 58:
16557
16961
  _l.sent();
16558
- return [4 /*yield*/, get_some_projection_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16962
+ return [4 /*yield*/, time_tracks_historical_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16559
16963
  case 59:
16560
16964
  _l.sent();
16561
- return [4 /*yield*/, elation_user_id_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16965
+ return [4 /*yield*/, time_tracks_correction_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16562
16966
  case 60:
16563
16967
  _l.sent();
16564
- return [4 /*yield*/, custom_dashboards_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16968
+ return [4 /*yield*/, time_tracks_review_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16565
16969
  case 61:
16566
16970
  _l.sent();
16567
- return [4 /*yield*/, concurrent_build_threads_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16971
+ return [4 /*yield*/, time_tracks_lock_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16568
16972
  case 62:
16569
16973
  _l.sent();
16570
- return [4 /*yield*/, custom_aggregation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16974
+ return [4 /*yield*/, time_tracks_edge_case_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16571
16975
  case 63:
16572
16976
  _l.sent();
16573
- return [4 /*yield*/, no_access_permission_checks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16977
+ return [4 /*yield*/, time_tracks_resubmit_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16574
16978
  case 64:
16575
16979
  _l.sent();
16576
- return [4 /*yield*/, enduser_tests()];
16980
+ return [4 /*yield*/, time_tracks_appointment_duration_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16577
16981
  case 65:
16578
16982
  _l.sent();
16579
- return [4 /*yield*/, form_started_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16983
+ return [4 /*yield*/, calendar_event_limits_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16580
16984
  case 66:
16581
16985
  _l.sent();
16582
- return [4 /*yield*/, load_team_chat_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16986
+ return [4 /*yield*/, get_some_projection_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16583
16987
  case 67:
16584
16988
  _l.sent();
16585
- return [4 /*yield*/, ai_conversations_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16989
+ return [4 /*yield*/, elation_user_id_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16586
16990
  case 68:
16587
16991
  _l.sent();
16588
- return [4 /*yield*/, inbox_thread_assignment_updates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16992
+ return [4 /*yield*/, custom_dashboards_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16589
16993
  case 69:
16590
16994
  _l.sent();
16591
- return [4 /*yield*/, inbox_thread_draft_scheduled_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16995
+ return [4 /*yield*/, concurrent_build_threads_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16592
16996
  case 70:
16593
16997
  _l.sent();
16594
- return [4 /*yield*/, load_threads_autobuild_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16998
+ return [4 /*yield*/, custom_aggregation_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16595
16999
  case 71:
16596
17000
  _l.sent();
16597
- return [4 /*yield*/, inbox_threads_new_fields_tests()];
17001
+ return [4 /*yield*/, no_access_permission_checks_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16598
17002
  case 72:
16599
17003
  _l.sent();
16600
- return [4 /*yield*/, auto_merge_form_submission_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17004
+ return [4 /*yield*/, enduser_tests()];
16601
17005
  case 73:
16602
17006
  _l.sent();
16603
- return [4 /*yield*/, threadKeyTests()];
17007
+ return [4 /*yield*/, form_started_trigger_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16604
17008
  case 74:
16605
17009
  _l.sent();
16606
- return [4 /*yield*/, managed_content_enduser_access_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17010
+ return [4 /*yield*/, load_team_chat_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16607
17011
  case 75:
16608
17012
  _l.sent();
16609
- return [4 /*yield*/, managed_content_file_access_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17013
+ return [4 /*yield*/, ai_conversations_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16610
17014
  case 76:
16611
17015
  _l.sent();
16612
- return [4 /*yield*/, afteraction_day_of_month_delay_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17016
+ return [4 /*yield*/, inbox_thread_assignment_updates_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16613
17017
  case 77:
16614
17018
  _l.sent();
16615
- return [4 /*yield*/, bulk_assignment_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17019
+ return [4 /*yield*/, inbox_thread_draft_scheduled_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16616
17020
  case 78:
16617
17021
  _l.sent();
16618
- return [4 /*yield*/, formsort_tests()];
17022
+ return [4 /*yield*/, load_threads_autobuild_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16619
17023
  case 79:
16620
17024
  _l.sent();
16621
- return [4 /*yield*/, self_serve_appointment_booking_tests()];
17025
+ return [4 /*yield*/, inbox_threads_new_fields_tests()];
16622
17026
  case 80:
16623
17027
  _l.sent();
16624
- return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
17028
+ return [4 /*yield*/, auto_merge_form_submission_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16625
17029
  case 81:
16626
17030
  _l.sent();
16627
- return [4 /*yield*/, monthly_availability_restrictions_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17031
+ return [4 /*yield*/, threadKeyTests()];
16628
17032
  case 82:
16629
17033
  _l.sent();
16630
- return [4 /*yield*/, journey_error_branching_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17034
+ return [4 /*yield*/, managed_content_enduser_access_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16631
17035
  case 83:
16632
17036
  _l.sent();
16633
- return [4 /*yield*/, message_assignment_trigger_tests({ sdk: sdk })];
17037
+ return [4 /*yield*/, managed_content_file_access_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16634
17038
  case 84:
16635
17039
  _l.sent();
16636
- return [4 /*yield*/, inbox_threads_building_tests()];
17040
+ return [4 /*yield*/, afteraction_day_of_month_delay_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16637
17041
  case 85:
16638
17042
  _l.sent();
16639
- return [4 /*yield*/, inbox_threads_loading_tests()];
17043
+ return [4 /*yield*/, bulk_assignment_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16640
17044
  case 86:
16641
17045
  _l.sent();
16642
- return [4 /*yield*/, load_inbox_data_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17046
+ return [4 /*yield*/, formsort_tests()];
16643
17047
  case 87:
16644
17048
  _l.sent();
16645
- return [4 /*yield*/, enduser_observations_acknowledge_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
17049
+ return [4 /*yield*/, self_serve_appointment_booking_tests()];
16646
17050
  case 88:
16647
17051
  _l.sent();
16648
- return [4 /*yield*/, create_user_notifications_trigger_tests({ sdk: sdk })];
17052
+ return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
16649
17053
  case 89:
16650
17054
  _l.sent();
16651
- return [4 /*yield*/, group_mms_active_tests()];
17055
+ return [4 /*yield*/, monthly_availability_restrictions_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16652
17056
  case 90:
16653
17057
  _l.sent();
16654
- return [4 /*yield*/, auto_reply_tests()];
17058
+ return [4 /*yield*/, journey_error_branching_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16655
17059
  case 91:
16656
17060
  _l.sent();
16657
- return [4 /*yield*/, relationships_tests()];
17061
+ return [4 /*yield*/, message_assignment_trigger_tests({ sdk: sdk })];
16658
17062
  case 92:
16659
17063
  _l.sent();
16660
- return [4 /*yield*/, rate_limit_tests()];
17064
+ return [4 /*yield*/, inbox_threads_building_tests()];
16661
17065
  case 93:
16662
17066
  _l.sent();
16663
- return [4 /*yield*/, ip_address_form_tests()];
17067
+ return [4 /*yield*/, inbox_threads_loading_tests()];
16664
17068
  case 94:
16665
17069
  _l.sent();
16666
- return [4 /*yield*/, bulk_update_tests()];
17070
+ return [4 /*yield*/, load_inbox_data_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16667
17071
  case 95:
16668
17072
  _l.sent();
16669
- return [4 /*yield*/, calendar_events_bulk_update_tests({ sdk: sdk })];
17073
+ return [4 /*yield*/, enduser_observations_acknowledge_tests({ sdk: sdk, sdkNonAdmin: sdkNonAdmin })];
16670
17074
  case 96:
16671
17075
  _l.sent();
16672
- return [4 /*yield*/, cancel_upcoming_appointments_journey_action_test()];
17076
+ return [4 /*yield*/, create_user_notifications_trigger_tests({ sdk: sdk })];
16673
17077
  case 97:
16674
17078
  _l.sent();
16675
- return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
17079
+ return [4 /*yield*/, group_mms_active_tests()];
16676
17080
  case 98:
17081
+ _l.sent();
17082
+ return [4 /*yield*/, auto_reply_tests()];
17083
+ case 99:
17084
+ _l.sent();
17085
+ return [4 /*yield*/, relationships_tests()];
17086
+ case 100:
17087
+ _l.sent();
17088
+ return [4 /*yield*/, rate_limit_tests()];
17089
+ case 101:
17090
+ _l.sent();
17091
+ return [4 /*yield*/, ip_address_form_tests()];
17092
+ case 102:
17093
+ _l.sent();
17094
+ return [4 /*yield*/, bulk_update_tests()];
17095
+ case 103:
17096
+ _l.sent();
17097
+ return [4 /*yield*/, calendar_events_bulk_update_tests({ sdk: sdk })];
17098
+ case 104:
17099
+ _l.sent();
17100
+ return [4 /*yield*/, cancel_upcoming_appointments_journey_action_test()];
17101
+ case 105:
17102
+ _l.sent();
17103
+ return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
17104
+ case 106:
16677
17105
  _l.sent(); // should come right after setup tests
16678
17106
  return [4 /*yield*/, sync_tests_with_access_tags()]; // should come directly after setup to avoid extra sync values
16679
- case 99:
17107
+ case 107:
16680
17108
  _l.sent(); // should come directly after setup to avoid extra sync values
16681
17109
  return [4 /*yield*/, sync_tests()]; // should come directly after setup to avoid extra sync values
16682
- case 100:
17110
+ case 108:
16683
17111
  _l.sent(); // should come directly after setup to avoid extra sync values
16684
17112
  return [4 /*yield*/, get_templated_message_tests()];
16685
- case 101:
17113
+ case 109:
16686
17114
  _l.sent();
16687
17115
  return [4 /*yield*/, updatedAt_tests()];
16688
- case 102:
17116
+ case 110:
16689
17117
  _l.sent();
16690
17118
  return [4 /*yield*/, file_source_tests()];
16691
- case 103:
17119
+ case 111:
16692
17120
  _l.sent();
16693
17121
  return [4 /*yield*/, enduser_access_tags_tests()];
16694
- case 104:
17122
+ case 112:
16695
17123
  _l.sent();
16696
17124
  return [4 /*yield*/, enduserAccessTests()];
16697
- case 105:
17125
+ case 113:
16698
17126
  _l.sent();
16699
17127
  return [4 /*yield*/, test_form_response_search()];
16700
- case 106:
17128
+ case 114:
16701
17129
  _l.sent();
16702
17130
  return [4 /*yield*/, date_parsing_tests()];
16703
- case 107:
17131
+ case 115:
16704
17132
  _l.sent();
16705
17133
  return [4 /*yield*/, fromEmailOverride_tests()];
16706
- case 108:
17134
+ case 116:
16707
17135
  _l.sent();
16708
17136
  return [4 /*yield*/, ticket_tests()];
16709
- case 109:
17137
+ case 117:
16710
17138
  _l.sent();
16711
17139
  return [4 /*yield*/, uniqueness_tests()];
16712
- case 110:
17140
+ case 118:
16713
17141
  _l.sent();
16714
17142
  return [4 /*yield*/, enduser_orders_tests()];
16715
- case 111:
17143
+ case 119:
16716
17144
  _l.sent();
16717
17145
  return [4 /*yield*/, calendar_event_care_team_tests()];
16718
- case 112:
17146
+ case 120:
16719
17147
  _l.sent();
16720
17148
  return [4 /*yield*/, merge_enduser_tests()];
16721
- case 113:
17149
+ case 121:
16722
17150
  _l.sent();
16723
17151
  return [4 /*yield*/, input_modifier_tests()];
16724
- case 114:
17152
+ case 122:
16725
17153
  _l.sent();
16726
17154
  return [4 /*yield*/, switch_to_related_contacts_tests()];
16727
- case 115:
17155
+ case 123:
16728
17156
  _l.sent();
16729
17157
  return [4 /*yield*/, redaction_tests()];
16730
- case 116:
17158
+ case 124:
16731
17159
  _l.sent();
16732
17160
  return [4 /*yield*/, no_chained_triggers_tests()];
16733
- case 117:
17161
+ case 125:
16734
17162
  _l.sent();
16735
17163
  return [4 /*yield*/, mdb_filter_tests()];
16736
- case 118:
17164
+ case 126:
16737
17165
  _l.sent();
16738
17166
  return [4 /*yield*/, superadmin_tests()];
16739
- case 119:
17167
+ case 127:
16740
17168
  _l.sent();
16741
17169
  return [4 /*yield*/, ticket_queue_tests()];
16742
- case 120:
17170
+ case 128:
16743
17171
  _l.sent();
16744
17172
  return [4 /*yield*/, vital_trigger_tests()];
16745
- case 121:
17173
+ case 129:
16746
17174
  _l.sent();
16747
17175
  return [4 /*yield*/, close_reasons_no_duplicates_tests()];
16748
- case 122:
17176
+ case 130:
16749
17177
  _l.sent();
16750
17178
  return [4 /*yield*/, register_as_enduser_tests()];
16751
- case 123:
17179
+ case 131:
16752
17180
  _l.sent();
16753
17181
  return [4 /*yield*/, lockout_tests()];
16754
- case 124:
17182
+ case 132:
16755
17183
  _l.sent();
16756
17184
  return [4 /*yield*/, delete_user_tests()
16757
17185
  // await test_send_with_template()
16758
17186
  ];
16759
- case 125:
17187
+ case 133:
16760
17188
  _l.sent();
16761
17189
  // await test_send_with_template()
16762
17190
  return [4 /*yield*/, bulk_read_tests()];
16763
- case 126:
17191
+ case 134:
16764
17192
  // await test_send_with_template()
16765
17193
  _l.sent();
16766
17194
  return [4 /*yield*/, ticket_reminder_tests()];
16767
- case 127:
17195
+ case 135:
16768
17196
  _l.sent();
16769
17197
  return [4 /*yield*/, marketing_email_unsubscribe_tests()];
16770
- case 128:
17198
+ case 136:
16771
17199
  _l.sent();
16772
17200
  return [4 /*yield*/, unique_strings_tests()];
16773
- case 129:
17201
+ case 137:
16774
17202
  _l.sent();
16775
17203
  return [4 /*yield*/, alternate_phones_tests()];
16776
- case 130:
17204
+ case 138:
16777
17205
  _l.sent();
16778
17206
  return [4 /*yield*/, role_based_access_tests()];
16779
- case 131:
17207
+ case 139:
16780
17208
  _l.sent();
16781
17209
  return [4 /*yield*/, enduser_session_tests()];
16782
- case 132:
17210
+ case 140:
16783
17211
  _l.sent();
16784
17212
  return [4 /*yield*/, nextReminderInMS_tests()];
16785
- case 133:
17213
+ case 141:
16786
17214
  _l.sent();
16787
17215
  return [4 /*yield*/, wait_for_trigger_tests()];
16788
- case 134:
17216
+ case 142:
16789
17217
  _l.sent();
16790
17218
  return [4 /*yield*/, pdf_generation()];
16791
- case 135:
17219
+ case 143:
16792
17220
  _l.sent();
16793
17221
  return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests().catch(console.error)]; // timing is unreliable, uncomment if changing logic
16794
- case 136:
17222
+ case 144:
16795
17223
  _l.sent(); // timing is unreliable, uncomment if changing logic
16796
17224
  return [4 /*yield*/, sub_organization_enduser_tests()];
16797
- case 137:
17225
+ case 145:
16798
17226
  _l.sent();
16799
17227
  return [4 /*yield*/, sub_organization_tests()];
16800
- case 138:
17228
+ case 146:
16801
17229
  _l.sent();
16802
17230
  return [4 /*yield*/, filter_by_date_tests()];
16803
- case 139:
17231
+ case 147:
16804
17232
  _l.sent();
16805
17233
  return [4 /*yield*/, generate_user_auth_tests()];
16806
- case 140:
17234
+ case 148:
16807
17235
  _l.sent();
16808
17236
  return [4 /*yield*/, generateEnduserAuthTests()];
16809
- case 141:
17237
+ case 149:
16810
17238
  _l.sent();
16811
17239
  return [4 /*yield*/, public_form_tests()];
16812
- case 142:
17240
+ case 150:
16813
17241
  _l.sent();
16814
17242
  return [4 /*yield*/, badInputTests()];
16815
- case 143:
17243
+ case 151:
16816
17244
  _l.sent();
16817
17245
  return [4 /*yield*/, filterTests()];
16818
- case 144:
17246
+ case 152:
16819
17247
  _l.sent();
16820
17248
  return [4 /*yield*/, updatesTests()];
16821
- case 145:
17249
+ case 153:
16822
17250
  _l.sent();
16823
- return [3 /*break*/, 147];
16824
- case 146:
17251
+ return [3 /*break*/, 155];
17252
+ case 154:
16825
17253
  err_1 = _l.sent();
16826
17254
  console.error("Failed during custom test");
16827
17255
  if (err_1.message && err_1.info) {
@@ -16831,18 +17259,18 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16831
17259
  console.error(err_1);
16832
17260
  }
16833
17261
  process.exit(1);
16834
- return [3 /*break*/, 147];
16835
- case 147:
17262
+ return [3 /*break*/, 155];
17263
+ case 155:
16836
17264
  _a = schema;
16837
17265
  _b = [];
16838
17266
  for (_c in _a)
16839
17267
  _b.push(_c);
16840
17268
  _i = 0;
16841
- _l.label = 148;
16842
- case 148:
16843
- if (!(_i < _b.length)) return [3 /*break*/, 151];
17269
+ _l.label = 156;
17270
+ case 156:
17271
+ if (!(_i < _b.length)) return [3 /*break*/, 159];
16844
17272
  _c = _b[_i];
16845
- if (!(_c in _a)) return [3 /*break*/, 150];
17273
+ if (!(_c in _a)) return [3 /*break*/, 158];
16846
17274
  n = _c;
16847
17275
  returnValidation = (_k = (_j = schema[n].customActions) === null || _j === void 0 ? void 0 : _j.create) === null || _k === void 0 ? void 0 : _k.returns;
16848
17276
  return [4 /*yield*/, run_generated_tests({
@@ -16853,41 +17281,41 @@ var ip_address_form_tests = function () { return __awaiter(void 0, void 0, void
16853
17281
  create: returnValidation // ModelFields<ClientModel>,
16854
17282
  }
16855
17283
  })];
16856
- case 149:
17284
+ case 157:
16857
17285
  _l.sent();
16858
- _l.label = 150;
16859
- case 150:
17286
+ _l.label = 158;
17287
+ case 158:
16860
17288
  _i++;
16861
- return [3 /*break*/, 148];
16862
- case 151:
17289
+ return [3 /*break*/, 156];
17290
+ case 159:
16863
17291
  _d = tests;
16864
17292
  _f = [];
16865
17293
  for (_g in _d)
16866
17294
  _f.push(_g);
16867
17295
  _h = 0;
16868
- _l.label = 152;
16869
- case 152:
16870
- if (!(_h < _f.length)) return [3 /*break*/, 157];
17296
+ _l.label = 160;
17297
+ case 160:
17298
+ if (!(_h < _f.length)) return [3 /*break*/, 165];
16871
17299
  _g = _f[_h];
16872
- if (!(_g in _d)) return [3 /*break*/, 156];
17300
+ if (!(_g in _d)) return [3 /*break*/, 164];
16873
17301
  t = _g;
16874
- _l.label = 153;
16875
- case 153:
16876
- _l.trys.push([153, 155, , 156]);
17302
+ _l.label = 161;
17303
+ case 161:
17304
+ _l.trys.push([161, 163, , 164]);
16877
17305
  return [4 /*yield*/, tests[t]()];
16878
- case 154:
17306
+ case 162:
16879
17307
  _l.sent();
16880
- return [3 /*break*/, 156];
16881
- case 155:
17308
+ return [3 /*break*/, 164];
17309
+ case 163:
16882
17310
  err_2 = _l.sent();
16883
17311
  console.error("Error running test:");
16884
17312
  console.error(err_2);
16885
17313
  process.exit(1);
16886
- return [3 /*break*/, 156];
16887
- case 156:
17314
+ return [3 /*break*/, 164];
17315
+ case 164:
16888
17316
  _h++;
16889
- return [3 /*break*/, 152];
16890
- case 157:
17317
+ return [3 /*break*/, 160];
17318
+ case 165:
16891
17319
  process.exit();
16892
17320
  return [2 /*return*/];
16893
17321
  }