@tellescope/sdk 1.67.5 → 1.67.7

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.
@@ -82,7 +82,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
82
82
  return (mod && mod.__esModule) ? mod : { "default": mod };
83
83
  };
84
84
  Object.defineProperty(exports, "__esModule", { value: true });
85
- exports.role_based_access_permissions_tests = exports.self_serve_appointment_booking_tests = exports.filter_by_date_tests = exports.databases_tests = exports.calendar_event_RSVPs_tests = exports.managed_content_records_tests = exports.meetings_tests = exports.automationSameJourneyTests = exports.formsSubmittedNoUnsubmittedTest = exports.formsUnsubmittedTest = exports.formsUnsubmittedCancelConditionTest = exports.formUnsubmittedCancelConditionTest = void 0;
85
+ exports.no_chained_triggers_tests = exports.role_based_access_permissions_tests = exports.self_serve_appointment_booking_tests = exports.filter_by_date_tests = exports.databases_tests = exports.calendar_event_RSVPs_tests = exports.managed_content_records_tests = exports.meetings_tests = exports.automationSameJourneyTests = exports.formsSubmittedNoUnsubmittedTest = exports.formsUnsubmittedTest = exports.formsUnsubmittedCancelConditionTest = exports.formUnsubmittedCancelConditionTest = void 0;
86
86
  require('source-map-support').install();
87
87
  var axios_1 = __importDefault(require("axios"));
88
88
  var crypto_1 = __importDefault(require("crypto"));
@@ -906,18 +906,24 @@ var run_generated_tests = function (_a) {
906
906
  case 5: return [4 /*yield*/, (0, testing_1.async_test)("create-".concat(singularName), function () { return queries.createOne(instance); }, { onResult: function (r) { return !!(_id = r.id) && (name === 'api_keys' || !!r.creator) && validateReturnType(returns.create, r, defaultValidation); } })];
907
907
  case 6:
908
908
  _c.sent();
909
- return [4 /*yield*/, (0, testing_1.async_test)("log-".concat(singularName, " create"), function () { return sdk.api.user_logs.getOne({ resourceId: _id, resource: name, action: 'create' }); }, { onResult: function (r) { return r && r.userId === sdk.userInfo.id; } })];
909
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)];
910
910
  case 7:
911
911
  _c.sent();
912
- if (!model.defaultActions.update) return [3 /*break*/, 10];
913
- return [4 /*yield*/, (0, testing_1.async_test)("update-".concat(singularName), function () { return queries.updateOne(_id, updates, { replaceObjectFields: true }); }, { onResult: function (u) { return typeof u === 'object' && u.id === _id; } })];
912
+ return [4 /*yield*/, (0, testing_1.async_test)("log-".concat(singularName, " create"), function () { return sdk.api.user_logs.getOne({ resourceId: _id, resource: name, action: 'create' }); }, { onResult: function (r) { return r && r.userId === sdk.userInfo.id; } })];
914
913
  case 8:
915
914
  _c.sent();
916
- return [4 /*yield*/, (0, testing_1.async_test)("log-".concat(singularName, " update"), function () { return sdk.api.user_logs.getOne({ resourceId: _id, resource: name, action: 'update' }); }, { onResult: function (r) { return r && r.userId === sdk.userInfo.id; } })];
915
+ if (!model.defaultActions.update) return [3 /*break*/, 12];
916
+ return [4 /*yield*/, (0, testing_1.async_test)("update-".concat(singularName), function () { return queries.updateOne(_id, updates, { replaceObjectFields: true }); }, { onResult: function (u) { return typeof u === 'object' && u.id === _id; } })];
917
917
  case 9:
918
918
  _c.sent();
919
- _c.label = 10;
920
- case 10: return [4 /*yield*/, (0, testing_1.async_test)("get-".concat(singularName), function () { return queries.getOne(_id); }, { onResult: function (d) {
919
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)];
920
+ case 10:
921
+ _c.sent();
922
+ return [4 /*yield*/, (0, testing_1.async_test)("log-".concat(singularName, " update"), function () { return sdk.api.user_logs.getOne({ resourceId: _id, resource: name, action: 'update' }); }, { onResult: function (r) { return r && r.userId === sdk.userInfo.id; } })];
923
+ case 11:
924
+ _c.sent();
925
+ _c.label = 12;
926
+ case 12: return [4 /*yield*/, (0, testing_1.async_test)("get-".concat(singularName), function () { return queries.getOne(_id); }, { onResult: function (d) {
921
927
  if (!(d === null || d === void 0 ? void 0 : d.id))
922
928
  return false;
923
929
  for (var k in instance) {
@@ -928,7 +934,7 @@ var run_generated_tests = function (_a) {
928
934
  return true;
929
935
  }
930
936
  })];
931
- case 11:
937
+ case 13:
932
938
  _c.sent();
933
939
  return [4 /*yield*/, (0, testing_1.async_test)("get-".concat(safeName), function () { return queries.getSome({ filter: filter }); }, { onResult: function (_a) {
934
940
  var d = _a[0];
@@ -943,27 +949,30 @@ var run_generated_tests = function (_a) {
943
949
  return true;
944
950
  }
945
951
  })];
946
- case 12:
952
+ case 14:
947
953
  _c.sent();
948
954
  return [4 /*yield*/, (0, testing_1.async_test)("delete-".concat(singularName), function () { return queries.deleteOne(_id); }, passOnVoid)];
949
- case 13:
955
+ case 15:
956
+ _c.sent();
957
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)];
958
+ case 16:
950
959
  _c.sent();
951
960
  return [4 /*yield*/, (0, testing_1.async_test)("get-".concat(singularName, " (verify delete)"), function () { return queries.getOne(_id); }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a record for the given id'; } })
952
961
  // lots of side effects
953
962
  ];
954
- case 14:
963
+ case 17:
955
964
  _c.sent();
956
- if (!(name === 'endusers')) return [3 /*break*/, 16];
965
+ if (!(name === 'endusers')) return [3 /*break*/, 19];
957
966
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
958
- case 15:
967
+ case 18:
959
968
  _c.sent();
960
- return [3 /*break*/, 18];
961
- case 16: return [4 /*yield*/, (0, testing_1.wait)(undefined, 50)];
962
- case 17:
969
+ return [3 /*break*/, 21];
970
+ case 19: return [4 /*yield*/, (0, testing_1.wait)(undefined, 50)];
971
+ case 20:
963
972
  _c.sent();
964
- _c.label = 18;
965
- case 18: return [4 /*yield*/, (0, testing_1.async_test)("log-".concat(singularName, " delete"), function () { return sdk.api.user_logs.getOne({ resourceId: _id, resource: name, action: 'delete' }); }, { onResult: function (r) { return r && r.userId === sdk.userInfo.id; } })];
966
- case 19:
973
+ _c.label = 21;
974
+ case 21: return [4 /*yield*/, (0, testing_1.async_test)("log-".concat(singularName, " delete"), function () { return sdk.api.user_logs.getOne({ resourceId: _id, resource: name, action: 'delete' }); }, { onResult: function (r) { return r && r.userId === sdk.userInfo.id; } })];
975
+ case 22:
967
976
  _c.sent();
968
977
  return [2 /*return*/];
969
978
  }
@@ -1927,21 +1936,24 @@ var files_tests = function () { return __awaiter(void 0, void 0, void 0, functio
1927
1936
  return [4 /*yield*/, enduserSDK.authenticate(email, password).catch(console.error)];
1928
1937
  case 3:
1929
1938
  _c.sent();
1939
+ return [4 /*yield*/, sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword)]; // to use new role, handle logout on role change
1940
+ case 4:
1941
+ _c.sent(); // to use new role, handle logout on role change
1930
1942
  buff = buffer.Buffer.from('test file data');
1931
1943
  return [4 /*yield*/, (0, testing_1.async_test)("non admin can prepare file upload", function () { return sdkNonAdmin.api.files.prepare_file_upload({
1932
1944
  name: 'Test File', size: buff.byteLength, type: 'text/plain'
1933
1945
  }); }, { onResult: function (t) { return true; } })];
1934
- case 4:
1946
+ case 5:
1935
1947
  _c.sent();
1936
1948
  return [4 /*yield*/, sdk.api.files.prepare_file_upload({
1937
1949
  name: 'Test Private', size: buff.byteLength, type: 'text/plain', enduserId: enduser.id,
1938
1950
  })];
1939
- case 5:
1951
+ case 6:
1940
1952
  _a = _c.sent(), presignedUpload = _a.presignedUpload, file = _a.file;
1941
1953
  return [4 /*yield*/, sdk.api.files.prepare_file_upload({
1942
1954
  name: 'Test Private (no enduser)', size: buff.byteLength, type: 'text/plain',
1943
1955
  })];
1944
- case 6:
1956
+ case 7:
1945
1957
  _b = _c.sent(), presignedNonEnduser = _b.presignedUpload, fileNonEnduser = _b.file;
1946
1958
  return [4 /*yield*/, sdk.api.files.prepare_file_upload({
1947
1959
  name: 'Test Public', size: buff.byteLength, type: 'text/plain',
@@ -1949,62 +1961,62 @@ var files_tests = function () { return __awaiter(void 0, void 0, void 0, functio
1949
1961
  publicRead: true,
1950
1962
  publicName: 'public',
1951
1963
  })];
1952
- case 7:
1964
+ case 8:
1953
1965
  presigned2 = (_c.sent()).presignedUpload;
1954
1966
  return [4 /*yield*/, sdk.UPLOAD(
1955
1967
  // @ts-ignore
1956
1968
  presignedUpload, buff)];
1957
- case 8:
1969
+ case 9:
1958
1970
  _c.sent();
1959
1971
  return [4 /*yield*/, sdk.UPLOAD(
1960
1972
  // @ts-ignore
1961
1973
  presignedNonEnduser, buff)];
1962
- case 9:
1974
+ case 10:
1963
1975
  _c.sent();
1964
1976
  return [4 /*yield*/, sdk.UPLOAD(
1965
1977
  // @ts-ignore
1966
1978
  presigned2, buff)];
1967
- case 10:
1979
+ case 11:
1968
1980
  _c.sent();
1969
1981
  return [4 /*yield*/, (0, testing_1.async_test)("Files associated with enduser on prepare_file_upload", function () { return sdk.api.files.getSome({ filter: { enduserId: enduser.id } }); }, { onResult: function (fs) { return fs.length === 2; } })];
1970
- case 11:
1982
+ case 12:
1971
1983
  _c.sent();
1972
1984
  return [4 /*yield*/, sdk.api.files.file_download_URL({ secureName: file.secureName })];
1973
- case 12:
1985
+ case 13:
1974
1986
  downloadURL = (_c.sent()).downloadURL;
1975
1987
  return [4 /*yield*/, sdk.DOWNLOAD(downloadURL)];
1976
- case 13:
1988
+ case 14:
1977
1989
  downloaded = _c.sent();
1978
1990
  (0, testing_1.assert)(downloaded === buff.toString(), 'downloaded file does not match uploaded file', 'upload, download comparison');
1979
1991
  return [4 /*yield*/, sdk.api.files.file_download_URL({ secureName: file.secureName })];
1980
- case 14:
1992
+ case 15:
1981
1993
  cachedURL = (_c.sent()).downloadURL;
1982
1994
  (0, testing_1.assert)(downloadURL === cachedURL, 'cache download url failed', 'download url cache');
1983
1995
  return [4 /*yield*/, enduserSDK.api.files.file_download_URL({ secureName: file.secureName })];
1984
- case 15:
1996
+ case 16:
1985
1997
  urlForEnduser = (_c.sent()).downloadURL;
1986
1998
  (0, testing_1.assert)(downloadURL === urlForEnduser, 'failed to get download url for enduser', 'download url for enduser');
1987
1999
  return [4 /*yield*/, Promise.all([
1988
2000
  sdk.api.endusers.deleteOne(enduser.id),
1989
2001
  ])];
1990
- case 16:
2002
+ case 17:
1991
2003
  _c.sent();
1992
2004
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 2000)]; // wait for files to be deleted as side effect
1993
- case 17:
2005
+ case 18:
1994
2006
  _c.sent(); // wait for files to be deleted as side effect
1995
2007
  return [4 /*yield*/, (0, testing_1.async_test)("Files cleaned up as side effect of deleting enduser", function () { return sdk.api.files.getSome({ filter: { enduserId: enduser.id } }); }, { onResult: function (fs) { return fs.length === 0; } })];
1996
- case 18:
2008
+ case 19:
1997
2009
  _c.sent();
1998
2010
  return [4 /*yield*/, (0, testing_1.async_test)("Non-enduser file is left", function () { return sdk.api.files.getSome(); }, { onResult: function (fs) { return fs.length > 0; } })
1999
2011
  // cleanup other file
2000
2012
  ];
2001
- case 19:
2013
+ case 20:
2002
2014
  _c.sent();
2003
2015
  // cleanup other file
2004
2016
  return [4 /*yield*/, Promise.all([
2005
2017
  sdk.api.files.deleteOne(fileNonEnduser.id),
2006
2018
  ])];
2007
- case 20:
2019
+ case 21:
2008
2020
  // cleanup other file
2009
2021
  _c.sent();
2010
2022
  return [2 /*return*/];
@@ -2445,11 +2457,8 @@ var ticketEventTests = function () { return __awaiter(void 0, void 0, void 0, fu
2445
2457
  return [4 /*yield*/, sdk.api.endusers.updateOne(enduserWithTeam.id, { journeys: (_b = {}, _b[nullJourney.id] = 'Added (Null)', _b) })];
2446
2458
  case 16:
2447
2459
  _c.sent();
2448
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 2250)]; // wait for tickets to be automatically created
2460
+ return [4 /*yield*/, (0, testing_1.async_test)("Tickets automatically created", function () { return pollForResults(sdk.api.tickets.getSome, function (tickets) { return (tickets === null || tickets === void 0 ? void 0 : tickets.length) === 2; }, 500, 15); }, passOnAnyResult)];
2449
2461
  case 17:
2450
- _c.sent(); // wait for tickets to be automatically created
2451
- return [4 /*yield*/, (0, testing_1.async_test)("Tickets automatically created", function () { return sdk.api.tickets.getSome(); }, { onResult: function (tickets) { return (tickets === null || tickets === void 0 ? void 0 : tickets.length) === 2; } })];
2452
- case 18:
2453
2462
  _c.sent();
2454
2463
  return [4 /*yield*/, (0, testing_1.async_test)("Ticket for enduser, default assignment, testCloseReasons", function () { return sdk.api.tickets.getSome({ filter: { enduserId: enduser.id } }); }, { onResult: function (tickets) {
2455
2464
  var _a;
@@ -2457,10 +2466,10 @@ var ticketEventTests = function () { return __awaiter(void 0, void 0, void 0, fu
2457
2466
  && ((_a = tickets[0].closeReasons) === null || _a === void 0 ? void 0 : _a.length) === 3
2458
2467
  && tickets[0].owner === sdk.userInfo.id);
2459
2468
  } })];
2460
- case 19:
2469
+ case 18:
2461
2470
  _c.sent();
2462
2471
  return [4 /*yield*/, sdk.api.tickets.getOne({ enduserId: enduser.id })];
2463
- case 20:
2472
+ case 19:
2464
2473
  ticket = _c.sent();
2465
2474
  return [4 /*yield*/, (0, testing_1.async_test)("Ticket for enduser, care team assignment, no reasons", function () { return sdk.api.tickets.getSome({ filter: { enduserId: enduserWithTeam.id } }); }, { onResult: function (tickets) {
2466
2475
  var _a;
@@ -2469,19 +2478,19 @@ var ticketEventTests = function () { return __awaiter(void 0, void 0, void 0, fu
2469
2478
  && tickets[0].owner === sdkNonAdmin.userInfo.id;
2470
2479
  }
2471
2480
  })];
2472
- case 21:
2481
+ case 20:
2473
2482
  _c.sent();
2474
2483
  return [4 /*yield*/, sdk.api.tickets.getOne({ enduserId: enduserWithTeam.id })];
2475
- case 22:
2484
+ case 21:
2476
2485
  ticketNull = _c.sent();
2477
2486
  return [4 /*yield*/, sdk.api.tickets.updateOne(ticket.id, { closedForReason: 'Maybe', closedAt: new Date() })];
2478
- case 23:
2487
+ case 22:
2479
2488
  _c.sent();
2480
2489
  return [4 /*yield*/, sdk.api.tickets.updateOne(ticketNull.id, { closedAt: new Date() })];
2481
- case 24:
2490
+ case 23:
2482
2491
  _c.sent();
2483
2492
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)]; // wait for actions to be automatically created
2484
- case 25:
2493
+ case 24:
2485
2494
  _c.sent(); // wait for actions to be automatically created
2486
2495
  return [4 /*yield*/, (0, testing_1.async_test)("Automated actions for handle ticket created", function () { return sdk.api.automated_actions.getSome(); }, { onResult: (function (actions) { return (actions === null || actions === void 0 ? void 0 : actions.length) === 4 // ticket creations + ticket completions = 2 + 2
2487
2496
  && (!!actions.find(function (a) {
@@ -2498,7 +2507,7 @@ var ticketEventTests = function () { return __awaiter(void 0, void 0, void 0, fu
2498
2507
  && a.action.info.status === 'Null';
2499
2508
  } // null branch when completed without closedForReason
2500
2509
  )); }) })];
2501
- case 26:
2510
+ case 25:
2502
2511
  _c.sent();
2503
2512
  return [4 /*yield*/, Promise.all([
2504
2513
  sdk.api.journeys.deleteOne(journey.id),
@@ -2508,7 +2517,7 @@ var ticketEventTests = function () { return __awaiter(void 0, void 0, void 0, fu
2508
2517
  sdk.api.tickets.deleteOne(ticket.id),
2509
2518
  sdk.api.tickets.deleteOne(ticketNull.id),
2510
2519
  ])];
2511
- case 27:
2520
+ case 26:
2512
2521
  _c.sent();
2513
2522
  return [2 /*return*/];
2514
2523
  }
@@ -2577,17 +2586,14 @@ var removeFromJourneyTests = function () { return __awaiter(void 0, void 0, void
2577
2586
  return [4 /*yield*/, (0, testing_1.async_test)("Next step not trigged early", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a; return ((_a = e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) !== 'Delayed Step'; } })];
2578
2587
  case 10:
2579
2588
  _b.sent();
2580
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 4 * TEST_DELAY)]; // wait long enough for automation to process and delay to pass
2589
+ return [4 /*yield*/, (0, testing_1.async_test)("Sequenced action triggered", function () { return pollForResults(function () { return sdk.api.endusers.getOne(enduser.id); }, function (e) { var _a; return ((_a = e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) === 'Delayed Step'; }, TEST_DELAY, 15); }, passOnAnyResult)];
2581
2590
  case 11:
2582
- _b.sent(); // wait long enough for automation to process and delay to pass
2583
- return [4 /*yield*/, (0, testing_1.async_test)("Sequenced action triggered", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a; return ((_a = e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) === 'Delayed Step'; } })];
2584
- case 12:
2585
2591
  _b.sent();
2586
2592
  return [4 /*yield*/, Promise.all([
2587
2593
  sdk.api.journeys.deleteOne(journey.id),
2588
2594
  sdk.api.endusers.deleteOne(enduser.id),
2589
2595
  ])];
2590
- case 13:
2596
+ case 12:
2591
2597
  _b.sent();
2592
2598
  return [2 /*return*/];
2593
2599
  }
@@ -2818,14 +2824,11 @@ var formUnsubmittedCancelConditionTest = function () { return __awaiter(void 0,
2818
2824
  case 10:
2819
2825
  accessCode = (_a.sent()).accessCode;
2820
2826
  // allow fast followup to trigger
2821
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 4000)]; // allow background creation with generous pause
2822
- case 11:
2823
- // allow fast followup to trigger
2824
- _a.sent(); // allow background creation with generous pause
2825
- return [4 /*yield*/, (0, testing_1.async_test)("formUnsubmitted event with short delay is triggered", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a; return ((_a = e === null || e === void 0 ? void 0 : e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) === 'triggered again'; } })
2827
+ return [4 /*yield*/, (0, testing_1.async_test)("formUnsubmitted event with short delay is triggered", function () { return pollForResults(function () { return sdk.api.endusers.getOne(enduser.id); }, function (e) { var _a; return ((_a = e === null || e === void 0 ? void 0 : e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) === 'triggered again'; }, 1000, 10); }, passOnAnyResult)
2826
2828
  // trigger cancel conditions
2827
2829
  ];
2828
- case 12:
2830
+ case 11:
2831
+ // allow fast followup to trigger
2829
2832
  _a.sent();
2830
2833
  // trigger cancel conditions
2831
2834
  return [4 /*yield*/, sdk.api.form_responses.submit_form_response({ accessCode: accessCode, automationStepId: triggerStep.id, responses: [{
@@ -2836,11 +2839,11 @@ var formUnsubmittedCancelConditionTest = function () { return __awaiter(void 0,
2836
2839
  fieldId: field.id,
2837
2840
  fieldTitle: field.title,
2838
2841
  }] })];
2839
- case 13:
2842
+ case 12:
2840
2843
  // trigger cancel conditions
2841
2844
  _a.sent();
2842
2845
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 1500)]; // allow background creation with generous pause
2843
- case 14:
2846
+ case 13:
2844
2847
  _a.sent(); // allow background creation with generous pause
2845
2848
  return [4 /*yield*/, (0, testing_1.async_test)("Cancel conditions work for followup", function () { return sdk.api.automated_actions.getSome(); }, { onResult: function (as) {
2846
2849
  var _a, _b;
@@ -2850,14 +2853,14 @@ var formUnsubmittedCancelConditionTest = function () { return __awaiter(void 0,
2850
2853
  && as.filter(function (a) { return a.status === 'cancelled'; }).length === 2;
2851
2854
  }
2852
2855
  })];
2853
- case 15:
2856
+ case 14:
2854
2857
  _a.sent();
2855
2858
  return [4 /*yield*/, Promise.all([
2856
2859
  sdk.api.forms.deleteOne(form.id),
2857
2860
  sdk.api.journeys.deleteOne(journey.id),
2858
2861
  sdk.api.endusers.deleteOne(enduser.id)
2859
2862
  ])];
2860
- case 16:
2863
+ case 15:
2861
2864
  _a.sent();
2862
2865
  return [2 /*return*/];
2863
2866
  }
@@ -3037,7 +3040,7 @@ var formsUnsubmittedCancelConditionTest = function () { return __awaiter(void 0,
3037
3040
  } })];
3038
3041
  case 19:
3039
3042
  _a.sent();
3040
- return [4 /*yield*/, (0, testing_1.async_test)("formResponses triggered after both forms submitted", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a; return ((_a = e === null || e === void 0 ? void 0 : e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) === 'formsSubmitted'; } })];
3043
+ return [4 /*yield*/, (0, testing_1.async_test)("formResponses triggered after both forms submitted", function () { return pollForResults(function () { return sdk.api.endusers.getOne(enduser.id); }, function (e) { var _a; return ((_a = e === null || e === void 0 ? void 0 : e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) === 'formsSubmitted'; }, 500, 10); }, passOnAnyResult)];
3041
3044
  case 20:
3042
3045
  _a.sent();
3043
3046
  return [4 /*yield*/, Promise.all([
@@ -3138,20 +3141,13 @@ var formsUnsubmittedTest = function () { return __awaiter(void 0, void 0, void 0
3138
3141
  case 8:
3139
3142
  // triggers formsUnsubmitted automated actions to be created when forms generated in templated message
3140
3143
  _a.sent();
3141
- return [4 /*yield*/, sdk.api.form_responses.getSome()
3142
- // allow fast followup to trigger
3143
- ];
3144
+ return [4 /*yield*/, sdk.api.form_responses.getSome()];
3144
3145
  case 9:
3145
3146
  form_responses = _a.sent();
3146
- // allow fast followup to trigger
3147
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 5000)]; // allow background creation with generous pause
3148
- case 10:
3149
- // allow fast followup to trigger
3150
- _a.sent(); // allow background creation with generous pause
3151
- return [4 /*yield*/, (0, testing_1.async_test)("formsUnsubmitted handler worked", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a; return ((_a = e === null || e === void 0 ? void 0 : e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) === 'triggered'; } })
3147
+ return [4 /*yield*/, (0, testing_1.async_test)("formsUnsubmitted handler worked", function () { return pollForResults(function () { return sdk.api.endusers.getOne(enduser.id); }, function (e) { var _a; return ((_a = e === null || e === void 0 ? void 0 : e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) === 'triggered'; }, 1000, 10); }, passOnAnyResult)
3152
3148
  // trigger cancel conditions
3153
3149
  ];
3154
- case 11:
3150
+ case 10:
3155
3151
  _a.sent();
3156
3152
  // trigger cancel conditions
3157
3153
  return [4 /*yield*/, sdk.api.form_responses.submit_form_response({ accessCode: form_responses[0].accessCode, automationStepId: triggerStep.id, responses: [{
@@ -3162,14 +3158,14 @@ var formsUnsubmittedTest = function () { return __awaiter(void 0, void 0, void 0
3162
3158
  fieldId: field.id,
3163
3159
  fieldTitle: field.title,
3164
3160
  }] })];
3165
- case 12:
3161
+ case 11:
3166
3162
  // trigger cancel conditions
3167
3163
  _a.sent();
3168
3164
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 5000)]; // allow background creation with generous pause
3169
- case 13:
3165
+ case 12:
3170
3166
  _a.sent(); // allow background creation with generous pause
3171
3167
  return [4 /*yield*/, (0, testing_1.async_test)("formResponses not triggered yet after 1 form remaining", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a; return ((_a = e === null || e === void 0 ? void 0 : e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) !== 'formsSubmitted'; } })];
3172
- case 14:
3168
+ case 13:
3173
3169
  _a.sent();
3174
3170
  return [4 /*yield*/, sdk.api.form_responses.submit_form_response({ accessCode: form_responses[1].accessCode, automationStepId: triggerStep.id, responses: [{
3175
3171
  answer: {
@@ -3179,20 +3175,20 @@ var formsUnsubmittedTest = function () { return __awaiter(void 0, void 0, void 0
3179
3175
  fieldId: field.id,
3180
3176
  fieldTitle: field.title,
3181
3177
  }] })];
3182
- case 15:
3178
+ case 14:
3183
3179
  _a.sent();
3184
3180
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 5000)]; // allow background creation with generous pause
3185
- case 16:
3181
+ case 15:
3186
3182
  _a.sent(); // allow background creation with generous pause
3187
3183
  return [4 /*yield*/, (0, testing_1.async_test)("formResponses triggered after both forms submitted", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a; return ((_a = e === null || e === void 0 ? void 0 : e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) === 'formsSubmitted'; } })];
3188
- case 17:
3184
+ case 16:
3189
3185
  _a.sent();
3190
3186
  return [4 /*yield*/, Promise.all([
3191
3187
  sdk.api.forms.deleteOne(form.id),
3192
3188
  sdk.api.journeys.deleteOne(journey.id),
3193
3189
  sdk.api.endusers.deleteOne(enduser.id)
3194
3190
  ])];
3195
- case 18:
3191
+ case 17:
3196
3192
  _a.sent();
3197
3193
  return [2 /*return*/];
3198
3194
  }
@@ -3401,33 +3397,35 @@ var addToJourneyTests = function () { return __awaiter(void 0, void 0, void 0, f
3401
3397
  case 5:
3402
3398
  // add to journey and re-add
3403
3399
  _a.sent();
3404
- return [4 /*yield*/, (0, testing_1.async_test)("Journey state correctly set by add_to_journey (to default state)", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a, _b; return ((_a = e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) === '' || ((_b = e.journeys) === null || _b === void 0 ? void 0 : _b[journey.id]) === 'Root'; } })];
3400
+ return [4 /*yield*/, (0, testing_1.async_test)("Journey state correctly set by add_to_journey (to default state)", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a, _b; return ((_a = e.journeys) === null || _a === void 0 ? void 0 : _a[journey.id]) === '' || ((_b = e.journeys) === null || _b === void 0 ? void 0 : _b[journey.id]) === 'Root'; } })
3401
+ // ensure that second step is generated before first is cancelled
3402
+ ];
3405
3403
  case 6:
3406
3404
  _a.sent();
3407
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 4000)]; // allow onJourneyStart step to trigger
3405
+ // ensure that second step is generated before first is cancelled
3406
+ return [4 /*yield*/, pollForResults(sdk.api.automated_actions.getSome, function (es) { return es.length === 2; }, 100, 50)];
3408
3407
  case 7:
3409
- _a.sent(); // allow onJourneyStart step to trigger
3408
+ // ensure that second step is generated before first is cancelled
3409
+ _a.sent();
3410
3410
  return [4 /*yield*/, sdk.api.endusers.add_to_journey({ enduserIds: [enduser.id], journeyId: journey.id })];
3411
3411
  case 8:
3412
+ // ensure that second step is generated before first is cancelled
3412
3413
  _a.sent();
3413
- return [4 /*yield*/, (0, testing_1.async_test)("Enduser throttle journey add working", function () { return sdk.api.endusers.add_to_journey({ enduserIds: [enduser.id], journeyId: journey.id, throttle: true }); }, handleAnyError)];
3414
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser correctly added and re-added", function () { return pollForResults(sdk.api.automated_actions.getSome, function (es) { return (es.length === 4
3415
+ && es.filter(function (e) { return e.status === 'cancelled' && e.automationStepId === follow.id; }).length === 1 // one afterAction is cancelled
3416
+ && es.filter(function (e) { return e.status === 'active' && e.automationStepId === follow.id; }).length === 1 // one afterAction is still active
3417
+ && es.filter(function (e) { return e.status === 'finished' && e.automationStepId === root.id; }).length === 2 // two initial onJourneyStart
3418
+ ); }, 250, 40); }, passOnAnyResult)];
3414
3419
  case 9:
3415
3420
  _a.sent();
3416
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 4000)]; // allow onJourneyStart step to trigger
3421
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser throttle journey add working", function () { return sdk.api.endusers.add_to_journey({ enduserIds: [enduser.id], journeyId: journey.id, throttle: true }); }, handleAnyError)];
3417
3422
  case 10:
3418
- _a.sent(); // allow onJourneyStart step to trigger
3419
- return [4 /*yield*/, (0, testing_1.async_test)("Enduser correctly added and re-added", function () { return sdk.api.automated_actions.getSome(); }, { onResult: function (es) { return es.length === 4
3420
- && es.filter(function (e) { return e.status === 'cancelled' && e.automationStepId === follow.id; }).length === 1 // one afterAction is cancelled
3421
- && es.filter(function (e) { return e.status === 'active' && e.automationStepId === follow.id; }).length === 1 // one afterAction is still active
3422
- && es.filter(function (e) { return e.status === 'finished' && e.automationStepId === root.id; }).length === 2; } // two initial onJourneyStart
3423
- })];
3424
- case 11:
3425
3423
  _a.sent();
3426
3424
  return [4 /*yield*/, Promise.all([
3427
3425
  sdk.api.journeys.deleteOne(journey.id),
3428
3426
  sdk.api.endusers.deleteOne(enduser.id),
3429
3427
  ])];
3430
- case 12:
3428
+ case 11:
3431
3429
  _a.sent();
3432
3430
  return [2 /*return*/];
3433
3431
  }
@@ -3459,20 +3457,17 @@ var directAutomatedActionTest = function () { return __awaiter(void 0, void 0, v
3459
3457
  })];
3460
3458
  case 2:
3461
3459
  action = _a.sent();
3462
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 3000)];
3460
+ return [4 /*yield*/, (0, testing_1.async_test)("Enduser status set by manual automated action", function () { return pollForResults(function () { return sdk.api.endusers.getOne(enduser.id); }, function (e) { var _a; return ((_a = e.journeys) === null || _a === void 0 ? void 0 : _a[constants_1.PLACEHOLDER_ID]) === 'Working'; }, 1000, 10); }, passOnAnyResult)];
3463
3461
  case 3:
3464
- _a.sent();
3465
- return [4 /*yield*/, (0, testing_1.async_test)("Enduser status set by manual automated action", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a; return ((_a = e.journeys) === null || _a === void 0 ? void 0 : _a[constants_1.PLACEHOLDER_ID]) === 'Working'; } })];
3466
- case 4:
3467
3462
  _a.sent();
3468
3463
  return [4 /*yield*/, (0, testing_1.async_test)("Automated action is finished", function () { return sdk.api.automated_actions.getOne(action.id); }, { onResult: function (e) { return e.status === 'finished'; } })];
3469
- case 5:
3464
+ case 4:
3470
3465
  _a.sent();
3471
3466
  return [4 /*yield*/, Promise.all([
3472
3467
  sdk.api.endusers.deleteOne(enduser.id),
3473
3468
  sdk.api.automated_actions.deleteOne(action.id),
3474
3469
  ])];
3475
- case 6:
3470
+ case 5:
3476
3471
  _a.sent();
3477
3472
  return [2 /*return*/];
3478
3473
  }
@@ -5194,29 +5189,26 @@ var run_autoreply_test = function (title, _a) {
5194
5189
  return [4 /*yield*/, enduserSDK.api.chats.createOne({ roomId: room.id, message: 'enduser' })];
5195
5190
  case 8:
5196
5191
  _b.sent();
5197
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 50)];
5192
+ return [4 /*yield*/, (0, testing_1.async_test)('Main test', function () { return pollForResults(function () { return sdk.api.chats.getSome({ filter: { roomId: room.id } }); }, function (cs) { return (expectingAutoreply
5193
+ ? cs.length === 3
5194
+ : cs.length === 2); }, 25, 10); }, passOnAnyResult)];
5198
5195
  case 9:
5199
- _b.sent();
5200
- return [4 /*yield*/, (0, testing_1.async_test)('Main test', function () { return sdk.api.chats.getSome({ filter: { roomId: room.id } }); }, { onResult: function (cs) { return (expectingAutoreply
5201
- ? cs.length === 3
5202
- : cs.length === 2); } })];
5203
- case 10:
5204
5196
  _b.sent();
5205
5197
  return [4 /*yield*/, enduserSDK.api.chats.createOne({ roomId: room.id, message: 'enduser again' })];
5206
- case 11:
5198
+ case 10:
5207
5199
  _b.sent();
5208
5200
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 50)];
5209
- case 12:
5201
+ case 11:
5210
5202
  _b.sent();
5211
5203
  return [4 /*yield*/, (0, testing_1.async_test)("Duplicate autoreply avoided", function () { return sdk.api.chats.getSome({ filter: { roomId: room.id } }); }, { onResult: function (cs) { return (expectingAutoreply
5212
5204
  ? cs.length === 4
5213
5205
  : cs.length === 3); } })
5214
5206
  // cleanup, including any availability blocks
5215
5207
  ];
5216
- case 13:
5208
+ case 12:
5217
5209
  _b.sent();
5218
5210
  return [4 /*yield*/, sdk.api.availability_blocks.getSome()];
5219
- case 14:
5211
+ case 13:
5220
5212
  blocks = _b.sent();
5221
5213
  return [4 /*yield*/, Promise.all(__spreadArray([
5222
5214
  sdk.api.endusers.deleteOne(enduser.id),
@@ -5228,7 +5220,7 @@ var run_autoreply_test = function (title, _a) {
5228
5220
  replaceObjectFields: true
5229
5221
  })
5230
5222
  ], blocks.map(function (b) { return (sdk.api.availability_blocks.deleteOne(b.id)); }), true))];
5231
- case 15:
5223
+ case 14:
5232
5224
  _b.sent();
5233
5225
  return [2 /*return*/];
5234
5226
  }
@@ -5551,14 +5543,11 @@ var wait_for_trigger_tests = function () { return __awaiter(void 0, void 0, void
5551
5543
  // cleanup
5552
5544
  _b.sent();
5553
5545
  // test trigger cleaned up on journey delete
5554
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 150)];
5555
- case 15:
5556
- // test trigger cleaned up on journey delete
5557
- _b.sent();
5558
- return [4 /*yield*/, (0, testing_1.async_test)("Trigger did not fire while not journey", function () { return sdk.api.automation_triggers.getOne(trigger.id); }, handleAnyError)
5546
+ return [4 /*yield*/, (0, testing_1.async_test)("Trigger cleaned up by journey deletion", function () { return pollForResults(sdk.api.automation_triggers.getSome, function (results) { return !results.find(function (r) { return r.id === trigger.id; }); }, 100, 10); }, passOnAnyResult)
5559
5547
  // double-check that wait for trigger step triggers were deleted
5560
5548
  ];
5561
- case 16:
5549
+ case 15:
5550
+ // test trigger cleaned up on journey delete
5562
5551
  _b.sent();
5563
5552
  return [2 /*return*/];
5564
5553
  }
@@ -5729,41 +5718,37 @@ var remove_from_journey_on_incoming_comms_tests = function () { return __awaiter
5729
5718
  return [4 /*yield*/, sdk.api.chats.createOne({ roomId: room.id, senderId: e1.id, message: 'cancel' })];
5730
5719
  case 11:
5731
5720
  _e.sent();
5732
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)];
5733
- case 12:
5734
- _e.sent();
5735
- console.log(jRemove.id, removeStep2.id, e1.id);
5736
- return [4 /*yield*/, (0, testing_1.async_test)("Appropriate Automated Actions are cancelled on incoming message", function () { return sdk.api.automated_actions.getSome(); }, { onResult: function (actions) { return (!!actions.find(function (a) {
5721
+ return [4 /*yield*/, (0, testing_1.async_test)("Appropriate Automated Actions are cancelled on incoming message", function () { return pollForResults(sdk.api.automated_actions.getSome, function (actions) { return (!!actions.find(function (a) {
5722
+ return a.journeyId === jRemove.id
5723
+ && a.automationStepId === removeStep1.id
5724
+ && a.enduserId === e1.id
5725
+ && a.status === 'cancelled';
5726
+ })
5727
+ && !!actions.find(function (a) {
5737
5728
  return a.journeyId === jRemove.id
5738
5729
  && a.automationStepId === removeStep1.id
5730
+ && a.enduserId === e2.id
5731
+ && a.status === 'active';
5732
+ })
5733
+ && !!actions.find(function (a) {
5734
+ return a.journeyId === jDontRemove.id
5735
+ && a.automationStepId === dontRemoveStep1.id
5739
5736
  && a.enduserId === e1.id
5740
- && a.status === 'cancelled';
5737
+ && a.status === 'active';
5741
5738
  })
5742
- && !!actions.find(function (a) {
5743
- return a.journeyId === jRemove.id
5744
- && a.automationStepId === removeStep1.id
5745
- && a.enduserId === e2.id
5746
- && a.status === 'active';
5747
- })
5748
- && !!actions.find(function (a) {
5749
- return a.journeyId === jDontRemove.id
5750
- && a.automationStepId === dontRemoveStep1.id
5751
- && a.enduserId === e1.id
5752
- && a.status === 'active';
5753
- })
5754
- && !!actions.find(function (a) {
5755
- return a.journeyId === jDontRemove.id
5756
- && a.automationStepId === dontRemoveStep1.id
5757
- && a.enduserId === e2.id
5758
- && a.status === 'active';
5759
- })); } })];
5760
- case 13:
5739
+ && !!actions.find(function (a) {
5740
+ return a.journeyId === jDontRemove.id
5741
+ && a.automationStepId === dontRemoveStep1.id
5742
+ && a.enduserId === e2.id
5743
+ && a.status === 'active';
5744
+ })); }, 25, 20); }, passOnAnyResult)];
5745
+ case 12:
5761
5746
  _e.sent();
5762
5747
  return [4 /*yield*/, sdk.api.journeys.handle_incoming_communication({ enduserId: e2.id })];
5763
- case 14:
5748
+ case 13:
5764
5749
  _e.sent();
5765
5750
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
5766
- case 15:
5751
+ case 14:
5767
5752
  _e.sent();
5768
5753
  return [4 /*yield*/, (0, testing_1.async_test)("handle_incoming_communication test for other enduser", function () { return sdk.api.automated_actions.getSome(); }, { onResult: function (actions) { return (!!actions.find(function (a) {
5769
5754
  return a.journeyId === jRemove.id
@@ -5771,7 +5756,7 @@ var remove_from_journey_on_incoming_comms_tests = function () { return __awaiter
5771
5756
  && a.enduserId === e2.id
5772
5757
  && a.status === 'cancelled';
5773
5758
  })); } })];
5774
- case 16:
5759
+ case 15:
5775
5760
  _e.sent();
5776
5761
  return [4 /*yield*/, Promise.all([
5777
5762
  sdk.api.endusers.deleteOne(e1.id),
@@ -5780,7 +5765,7 @@ var remove_from_journey_on_incoming_comms_tests = function () { return __awaiter
5780
5765
  sdk.api.journeys.deleteOne(jDontRemove.id),
5781
5766
  sdk.api.chat_rooms.deleteOne(room.id),
5782
5767
  ])];
5783
- case 17:
5768
+ case 16:
5784
5769
  _e.sent();
5785
5770
  return [2 /*return*/];
5786
5771
  }
@@ -5790,9 +5775,11 @@ var pdf_generation = function () { return __awaiter(void 0, void 0, void 0, func
5790
5775
  var e, responses, i, fr;
5791
5776
  return __generator(this, function (_a) {
5792
5777
  switch (_a.label) {
5793
- case 0: return [4 /*yield*/, sdk.api.endusers.createOne({ fname: 'test' })
5794
- // include lots of answers to ensure PDF height doesn't produce any cut-off
5795
- ];
5778
+ case 0:
5779
+ (0, testing_1.log_header)("pdf_generation Tests");
5780
+ return [4 /*yield*/, sdk.api.endusers.createOne({ fname: 'test' })
5781
+ // include lots of answers to ensure PDF height doesn't produce any cut-off
5782
+ ];
5796
5783
  case 1:
5797
5784
  e = _a.sent();
5798
5785
  responses = [];
@@ -5821,7 +5808,6 @@ var pdf_generation = function () { return __awaiter(void 0, void 0, void 0, func
5821
5808
  .then(function (d) { return (fs_1.default.writeFileSync('test_generated.pdf', d.data)); });
5822
5809
  return [4 /*yield*/, Promise.all([
5823
5810
  sdk.api.endusers.deleteOne(e.id),
5824
- sdk.api.form_responses.deleteOne(fr.id),
5825
5811
  ])];
5826
5812
  case 3:
5827
5813
  _a.sent();
@@ -6048,10 +6034,11 @@ var pollForResults = function (f, evaluate, intervalInMS, iterations) {
6048
6034
  if (intervalInMS === void 0) { intervalInMS = 500; }
6049
6035
  if (iterations === void 0) { iterations = 20; }
6050
6036
  return __awaiter(void 0, void 0, void 0, function () {
6051
- var i, result;
6037
+ var lastResult, i, result;
6052
6038
  return __generator(this, function (_a) {
6053
6039
  switch (_a.label) {
6054
6040
  case 0:
6041
+ lastResult = undefined;
6055
6042
  i = 0;
6056
6043
  _a.label = 1;
6057
6044
  case 1:
@@ -6062,13 +6049,16 @@ var pollForResults = function (f, evaluate, intervalInMS, iterations) {
6062
6049
  return [4 /*yield*/, f()];
6063
6050
  case 3:
6064
6051
  result = _a.sent();
6052
+ lastResult = result;
6065
6053
  if (evaluate(result))
6066
6054
  return [2 /*return*/, result];
6067
6055
  _a.label = 4;
6068
6056
  case 4:
6069
6057
  i++;
6070
6058
  return [3 /*break*/, 1];
6071
- case 5: throw new Error("failed pollForResults");
6059
+ case 5:
6060
+ console.log(lastResult);
6061
+ throw new Error("failed pollForResults");
6072
6062
  }
6073
6063
  });
6074
6064
  });
@@ -6527,6 +6517,81 @@ var field_equals_trigger_tests = function () { return __awaiter(void 0, void 0,
6527
6517
  }
6528
6518
  });
6529
6519
  }); };
6520
+ var no_chained_triggers_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
6521
+ var t1, t2, enduser;
6522
+ return __generator(this, function (_a) {
6523
+ switch (_a.label) {
6524
+ case 0:
6525
+ (0, testing_1.log_header)("No Chained Triggers Tests");
6526
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
6527
+ title: 't1', status: 'Active',
6528
+ event: {
6529
+ type: 'Field Equals',
6530
+ info: {
6531
+ field: 'fname',
6532
+ value: 'Trigger'
6533
+ },
6534
+ },
6535
+ action: {
6536
+ type: 'Add Tags',
6537
+ info: { tags: ['t1'] }
6538
+ }
6539
+ })];
6540
+ case 1:
6541
+ t1 = _a.sent();
6542
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
6543
+ title: 't2', status: 'Active',
6544
+ event: {
6545
+ type: 'Field Equals',
6546
+ info: {
6547
+ field: 'fname',
6548
+ value: '$exists'
6549
+ },
6550
+ },
6551
+ action: {
6552
+ type: 'Add Tags',
6553
+ info: { tags: ['t2'] }
6554
+ },
6555
+ enduserCondition: { $and: [{ condition: { tags: 't1' } }] },
6556
+ })
6557
+ // should only trigger t1, t1 would trigger t2 if allowed, but should not
6558
+ ];
6559
+ case 2:
6560
+ t2 = _a.sent();
6561
+ return [4 /*yield*/, sdk.api.endusers.createOne({ fname: 'Trigger' })];
6562
+ case 3:
6563
+ enduser = _a.sent();
6564
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
6565
+ case 4:
6566
+ _a.sent();
6567
+ return [4 /*yield*/, (0, testing_1.async_test)("Trigger not activated by other trigger update", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a, _b; return !!(!((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('t2')) && ((_b = e.tags) === null || _b === void 0 ? void 0 : _b.includes('t1'))); } })
6568
+ // should cover both triggers now, which results in adding only the second tag
6569
+ ];
6570
+ case 5:
6571
+ _a.sent();
6572
+ // should cover both triggers now, which results in adding only the second tag
6573
+ return [4 /*yield*/, sdk.api.endusers.updateOne(enduser.id, { fname: "Updated" })];
6574
+ case 6:
6575
+ // should cover both triggers now, which results in adding only the second tag
6576
+ _a.sent();
6577
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
6578
+ case 7:
6579
+ _a.sent();
6580
+ return [4 /*yield*/, (0, testing_1.async_test)("Trigger activated directly", function () { return sdk.api.endusers.getOne(enduser.id); }, { onResult: function (e) { var _a; return !!(((_a = e.tags) === null || _a === void 0 ? void 0 : _a.includes('t1')) && e.tags.includes('t2')); } })];
6581
+ case 8:
6582
+ _a.sent();
6583
+ return [4 /*yield*/, Promise.all([
6584
+ sdk.api.automation_triggers.deleteOne(t1.id),
6585
+ sdk.api.automation_triggers.deleteOne(t2.id),
6586
+ sdk.api.endusers.deleteOne(enduser.id)
6587
+ ])];
6588
+ case 9:
6589
+ _a.sent();
6590
+ return [2 /*return*/];
6591
+ }
6592
+ });
6593
+ }); };
6594
+ exports.no_chained_triggers_tests = no_chained_triggers_tests;
6530
6595
  var NO_TEST = function () { };
6531
6596
  var tests = {
6532
6597
  phone_trees: NO_TEST,
@@ -6631,7 +6696,7 @@ var validate_schema = function () {
6631
6696
  _k.sent();
6632
6697
  _k.label = 2;
6633
6698
  case 2:
6634
- _k.trys.push([2, 36, , 37]);
6699
+ _k.trys.push([2, 37, , 38]);
6635
6700
  return [4 /*yield*/, validate_schema()];
6636
6701
  case 3:
6637
6702
  _k.sent();
@@ -6665,86 +6730,89 @@ var validate_schema = function () {
6665
6730
  return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
6666
6731
  case 9:
6667
6732
  _k.sent(); // should come right after setup tests
6668
- return [4 /*yield*/, field_equals_trigger_tests()];
6733
+ return [4 /*yield*/, (0, exports.no_chained_triggers_tests)()];
6669
6734
  case 10:
6670
6735
  _k.sent();
6671
- return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
6736
+ return [4 /*yield*/, field_equals_trigger_tests()];
6672
6737
  case 11:
6673
6738
  _k.sent();
6674
- return [4 /*yield*/, role_based_access_tests()];
6739
+ return [4 /*yield*/, test_ticket_automation_assignment_and_optimization()];
6675
6740
  case 12:
6676
6741
  _k.sent();
6677
- return [4 /*yield*/, automation_trigger_tests()];
6742
+ return [4 /*yield*/, role_based_access_tests()];
6678
6743
  case 13:
6679
6744
  _k.sent();
6680
- return [4 /*yield*/, enduser_session_tests()];
6745
+ return [4 /*yield*/, automation_trigger_tests()];
6681
6746
  case 14:
6682
6747
  _k.sent();
6683
- return [4 /*yield*/, nextReminderInMS_tests()];
6748
+ return [4 /*yield*/, enduser_session_tests()];
6684
6749
  case 15:
6685
6750
  _k.sent();
6686
- return [4 /*yield*/, search_tests()];
6751
+ return [4 /*yield*/, nextReminderInMS_tests()];
6687
6752
  case 16:
6688
6753
  _k.sent();
6689
- return [4 /*yield*/, wait_for_trigger_tests()];
6754
+ return [4 /*yield*/, search_tests()];
6690
6755
  case 17:
6691
6756
  _k.sent();
6692
- return [4 /*yield*/, pdf_generation()];
6757
+ return [4 /*yield*/, wait_for_trigger_tests()];
6693
6758
  case 18:
6694
6759
  _k.sent();
6695
- return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests()];
6760
+ return [4 /*yield*/, pdf_generation()];
6696
6761
  case 19:
6697
6762
  _k.sent();
6698
- return [4 /*yield*/, rate_limit_tests()];
6763
+ return [4 /*yield*/, remove_from_journey_on_incoming_comms_tests()];
6699
6764
  case 20:
6700
6765
  _k.sent();
6701
- return [4 /*yield*/, merge_enduser_tests()];
6766
+ return [4 /*yield*/, rate_limit_tests()];
6702
6767
  case 21:
6703
6768
  _k.sent();
6704
- return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
6769
+ return [4 /*yield*/, merge_enduser_tests()];
6705
6770
  case 22:
6706
6771
  _k.sent();
6707
- return [4 /*yield*/, auto_reply_tests()];
6772
+ return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
6708
6773
  case 23:
6709
6774
  _k.sent();
6710
- return [4 /*yield*/, sub_organization_enduser_tests()];
6775
+ return [4 /*yield*/, auto_reply_tests()];
6711
6776
  case 24:
6712
6777
  _k.sent();
6713
- return [4 /*yield*/, sub_organization_tests()];
6778
+ return [4 /*yield*/, sub_organization_enduser_tests()];
6714
6779
  case 25:
6715
6780
  _k.sent();
6716
- return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
6781
+ return [4 /*yield*/, sub_organization_tests()];
6717
6782
  case 26:
6718
6783
  _k.sent();
6719
- return [4 /*yield*/, generate_user_auth_tests()];
6784
+ return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
6720
6785
  case 27:
6721
6786
  _k.sent();
6722
- return [4 /*yield*/, generateEnduserAuthTests()];
6787
+ return [4 /*yield*/, generate_user_auth_tests()];
6723
6788
  case 28:
6724
6789
  _k.sent();
6725
- return [4 /*yield*/, public_form_tests()];
6790
+ return [4 /*yield*/, generateEnduserAuthTests()];
6726
6791
  case 29:
6727
6792
  _k.sent();
6728
- return [4 /*yield*/, badInputTests()];
6793
+ return [4 /*yield*/, public_form_tests()];
6729
6794
  case 30:
6730
6795
  _k.sent();
6731
- return [4 /*yield*/, filterTests()];
6796
+ return [4 /*yield*/, badInputTests()];
6732
6797
  case 31:
6733
6798
  _k.sent();
6734
- return [4 /*yield*/, updatesTests()];
6799
+ return [4 /*yield*/, filterTests()];
6735
6800
  case 32:
6736
6801
  _k.sent();
6737
- return [4 /*yield*/, threadKeyTests()];
6802
+ return [4 /*yield*/, updatesTests()];
6738
6803
  case 33:
6739
6804
  _k.sent();
6740
- return [4 /*yield*/, enduserAccessTests()];
6805
+ return [4 /*yield*/, threadKeyTests()];
6741
6806
  case 34:
6742
6807
  _k.sent();
6743
- return [4 /*yield*/, enduser_redaction_tests()];
6808
+ return [4 /*yield*/, enduserAccessTests()];
6744
6809
  case 35:
6745
6810
  _k.sent();
6746
- return [3 /*break*/, 37];
6811
+ return [4 /*yield*/, enduser_redaction_tests()];
6747
6812
  case 36:
6813
+ _k.sent();
6814
+ return [3 /*break*/, 38];
6815
+ case 37:
6748
6816
  err_1 = _k.sent();
6749
6817
  console.error("Failed during custom test");
6750
6818
  if (err_1.message && err_1.info) {
@@ -6754,18 +6822,18 @@ var validate_schema = function () {
6754
6822
  console.error(err_1);
6755
6823
  }
6756
6824
  process.exit(1);
6757
- return [3 /*break*/, 37];
6758
- case 37:
6825
+ return [3 /*break*/, 38];
6826
+ case 38:
6759
6827
  _a = schema_1.schema;
6760
6828
  _b = [];
6761
6829
  for (_c in _a)
6762
6830
  _b.push(_c);
6763
6831
  _i = 0;
6764
- _k.label = 38;
6765
- case 38:
6766
- if (!(_i < _b.length)) return [3 /*break*/, 41];
6832
+ _k.label = 39;
6833
+ case 39:
6834
+ if (!(_i < _b.length)) return [3 /*break*/, 42];
6767
6835
  _c = _b[_i];
6768
- if (!(_c in _a)) return [3 /*break*/, 40];
6836
+ if (!(_c in _a)) return [3 /*break*/, 41];
6769
6837
  n = _c;
6770
6838
  returnValidation = (_j = (_h = schema_1.schema[n].customActions) === null || _h === void 0 ? void 0 : _h.create) === null || _j === void 0 ? void 0 : _j.returns;
6771
6839
  return [4 /*yield*/, run_generated_tests({
@@ -6776,41 +6844,41 @@ var validate_schema = function () {
6776
6844
  create: returnValidation // ModelFields<ClientModel>,
6777
6845
  }
6778
6846
  })];
6779
- case 39:
6780
- _k.sent();
6781
- _k.label = 40;
6782
6847
  case 40:
6783
- _i++;
6784
- return [3 /*break*/, 38];
6848
+ _k.sent();
6849
+ _k.label = 41;
6785
6850
  case 41:
6851
+ _i++;
6852
+ return [3 /*break*/, 39];
6853
+ case 42:
6786
6854
  _d = tests;
6787
6855
  _e = [];
6788
6856
  for (_f in _d)
6789
6857
  _e.push(_f);
6790
6858
  _g = 0;
6791
- _k.label = 42;
6792
- case 42:
6793
- if (!(_g < _e.length)) return [3 /*break*/, 47];
6794
- _f = _e[_g];
6795
- if (!(_f in _d)) return [3 /*break*/, 46];
6796
- t = _f;
6797
6859
  _k.label = 43;
6798
6860
  case 43:
6799
- _k.trys.push([43, 45, , 46]);
6800
- return [4 /*yield*/, tests[t]()];
6861
+ if (!(_g < _e.length)) return [3 /*break*/, 48];
6862
+ _f = _e[_g];
6863
+ if (!(_f in _d)) return [3 /*break*/, 47];
6864
+ t = _f;
6865
+ _k.label = 44;
6801
6866
  case 44:
6802
- _k.sent();
6803
- return [3 /*break*/, 46];
6867
+ _k.trys.push([44, 46, , 47]);
6868
+ return [4 /*yield*/, tests[t]()];
6804
6869
  case 45:
6870
+ _k.sent();
6871
+ return [3 /*break*/, 47];
6872
+ case 46:
6805
6873
  err_2 = _k.sent();
6806
6874
  console.error("Error running test:");
6807
6875
  console.error(err_2);
6808
6876
  process.exit(1);
6809
- return [3 /*break*/, 46];
6810
- case 46:
6811
- _g++;
6812
- return [3 /*break*/, 42];
6877
+ return [3 /*break*/, 47];
6813
6878
  case 47:
6879
+ _g++;
6880
+ return [3 /*break*/, 43];
6881
+ case 48:
6814
6882
  process.exit();
6815
6883
  return [2 /*return*/];
6816
6884
  }