@tellescope/sdk 0.0.52 → 0.0.55

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.
@@ -78,6 +78,7 @@ var constants_1 = require("@tellescope/constants");
78
78
  var schema_1 = require("@tellescope/schema");
79
79
  var testing_1 = require("@tellescope/testing");
80
80
  var utilities_1 = require("@tellescope/utilities");
81
+ var UniquenessViolationMessage = 'Uniqueness Violation';
81
82
  var host = process.env.TEST_URL || 'http://localhost:8080';
82
83
  var _a = [process.env.TEST_EMAIL, process.env.TEST_PASSWORD], email = _a[0], password = _a[1];
83
84
  var _b = [process.env.TEST_EMAIL_2, process.env.TEST_PASSWORD_2], email2 = _b[0], password2 = _b[1];
@@ -116,7 +117,9 @@ var setup_tests = function () { return __awaiter(void 0, void 0, void 0, functio
116
117
  var uInfo, originalAuthToken;
117
118
  return __generator(this, function (_a) {
118
119
  switch (_a.label) {
119
- case 0: return [4 /*yield*/, (0, testing_1.async_test)('test_online', sdk.test_online, { expectedResult: 'API V1 Online' })];
120
+ case 0:
121
+ (0, testing_1.log_header)("Setup");
122
+ return [4 /*yield*/, (0, testing_1.async_test)('test_online', sdk.test_online, { expectedResult: 'API V1 Online' })];
120
123
  case 1:
121
124
  _a.sent();
122
125
  return [4 /*yield*/, (0, testing_1.async_test)('test_authenticated', sdk.test_authenticated, { expectedResult: 'Authenticated!' })];
@@ -155,7 +158,9 @@ var multi_tenant_tests = function () { return __awaiter(void 0, void 0, void 0,
155
158
  var e2, e1, update;
156
159
  return __generator(this, function (_a) {
157
160
  switch (_a.label) {
158
- case 0: return [4 /*yield*/, sdkOther.api.endusers.createOne({ email: "hi@tellescope.com" }).catch(console.error)];
161
+ case 0:
162
+ (0, testing_1.log_header)("Multi Tenant");
163
+ return [4 /*yield*/, sdkOther.api.endusers.createOne({ email: "hi@tellescope.com" }).catch(console.error)];
159
164
  case 1:
160
165
  e2 = _a.sent();
161
166
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: "hi@tellescope.com" }).catch(console.error)];
@@ -216,7 +221,9 @@ var threadKeyTests = function () { return __awaiter(void 0, void 0, void 0, func
216
221
  var enduser, _a, e1, e2, e3, _b, e4, e5, e6, es;
217
222
  return __generator(this, function (_c) {
218
223
  switch (_c.label) {
219
- case 0: return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'threadkeytests@tellescope.com' })];
224
+ case 0:
225
+ (0, testing_1.log_header)("threadKey");
226
+ return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'threadkeytests@tellescope.com' })];
220
227
  case 1:
221
228
  enduser = _c.sent();
222
229
  return [4 /*yield*/, Promise.all([
@@ -252,17 +259,11 @@ var threadKeyTests = function () { return __awaiter(void 0, void 0, void 0, func
252
259
  (0, testing_1.assert)(es.find(function (e) { return e.id === e4.id; }) !== undefined, 'threadKey got duplicates', 'threadKey no duplicates (key 1, new)');
253
260
  (0, testing_1.assert)(es.find(function (e) { return e.id === e5.id; }) !== undefined, 'threadKey got duplicates', 'threadKey no duplicates (key 2, new)');
254
261
  (0, testing_1.assert)(es.find(function (e) { return e.id === e6.id; }) !== undefined, 'threadKey got duplicates', 'threadKey no duplicates (key 3, new)');
255
- return [4 /*yield*/, Promise.all([
256
- sdk.api.endusers.deleteOne(enduser.id),
257
- sdk.api.engagement_events.deleteOne(e1.id),
258
- sdk.api.engagement_events.deleteOne(e2.id),
259
- sdk.api.engagement_events.deleteOne(e3.id),
260
- sdk.api.engagement_events.deleteOne(e4.id),
261
- sdk.api.engagement_events.deleteOne(e5.id),
262
- sdk.api.engagement_events.deleteOne(e6.id),
263
- ])];
262
+ // cleanup
263
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)]; // cleans up automatin events too
264
264
  case 7:
265
- _c.sent();
265
+ // cleanup
266
+ _c.sent(); // cleans up automatin events too
266
267
  return [2 /*return*/];
267
268
  }
268
269
  });
@@ -271,7 +272,7 @@ var badInputTests = function () { return __awaiter(void 0, void 0, void 0, funct
271
272
  return __generator(this, function (_a) {
272
273
  switch (_a.label) {
273
274
  case 0:
274
- (0, testing_1.log_header)("Bad Input Tests");
275
+ (0, testing_1.log_header)("Bad Input");
275
276
  return [4 /*yield*/, (0, testing_1.async_test)("_-prefixed fields are not allowed", function () { return sdk.api.endusers.createOne({ email: 'failure@tellescope.com', fields: { "_notallowed": 'hello' } }); }, { shouldError: true, onError: function (e) { return e.message === "Error parsing field fields: Fields that start with '_' are not allowed"; } })];
276
277
  case 1:
277
278
  _a.sent();
@@ -286,7 +287,9 @@ var filterTests = function () { return __awaiter(void 0, void 0, void 0, functio
286
287
  var enduser, otherEnduser;
287
288
  return __generator(this, function (_a) {
288
289
  switch (_a.label) {
289
- case 0: return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'filtertests@tellescope.com', fname: 'test', fields: { field1: 'value1', field2: 'value2' } })];
290
+ case 0:
291
+ (0, testing_1.log_header)("Filter Tests");
292
+ return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'filtertests@tellescope.com', fname: 'test', fields: { field1: 'value1', field2: 'value2' } })];
290
293
  case 1:
291
294
  enduser = _a.sent();
292
295
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'other@tellescope.com' })];
@@ -344,7 +347,9 @@ var updatesTests = function () { return __awaiter(void 0, void 0, void 0, functi
344
347
  var enduser, task;
345
348
  return __generator(this, function (_a) {
346
349
  switch (_a.label) {
347
- case 0: return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'test@tellescope.com', phone: '+15555555555' })];
350
+ case 0:
351
+ (0, testing_1.log_header)("Updates Tests");
352
+ return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'test@tellescope.com', phone: '+15555555555' })];
348
353
  case 1:
349
354
  enduser = _a.sent();
350
355
  return [4 /*yield*/, sdk.api.endusers.updateOne(enduser.id, { phone: '+15555555552' })]; // update to new phone number
@@ -376,7 +381,7 @@ var generateEnduserAuthTests = function () { return __awaiter(void 0, void 0, vo
376
381
  return __generator(this, function (_e) {
377
382
  switch (_e.label) {
378
383
  case 0:
379
- (0, testing_1.log_header)("Generated Enduser authToken Tests");
384
+ (0, testing_1.log_header)("Generated Enduser authToken");
380
385
  externalId = '1029f9v9sjd0as';
381
386
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'generated@tellescope.com', phone: '+15555555555', externalId: externalId })];
382
387
  case 1:
@@ -683,7 +688,7 @@ var engagement_tests = function () { return __awaiter(void 0, void 0, void 0, fu
683
688
  var journey_tests = function (queries) {
684
689
  if (queries === void 0) { queries = sdk.api.journeys; }
685
690
  return __awaiter(void 0, void 0, void 0, function () {
686
- var journey, journey2, withAddedState, e1, e2, engagement, es;
691
+ var journey, journey2, updated, fetchAfterDeletion, withAddedState, e1, e2, engagement, es;
687
692
  var _a, _b, _c, _d, _e, _f;
688
693
  return __generator(this, function (_g) {
689
694
  switch (_g.label) {
@@ -699,115 +704,131 @@ var journey_tests = function (queries) {
699
704
  return [4 /*yield*/, sdk.api.journeys.createOne({ title: 'Test Journey 2' })];
700
705
  case 4:
701
706
  journey2 = _g.sent();
707
+ return [4 /*yield*/, sdk.api.journeys.updateOne(journey.id, {
708
+ states: [
709
+ { name: 'Delete Me 1', priority: 'N/A' },
710
+ { name: 'Delete Me 2', priority: 'N/A' },
711
+ ]
712
+ })];
713
+ case 5:
714
+ _g.sent();
715
+ return [4 /*yield*/, sdk.api.journeys.delete_states({ id: journey.id, states: ['Delete Me 1', 'Delete Me 2'] })];
716
+ case 6:
717
+ updated = (_g.sent()).updated;
718
+ (0, testing_1.assert)(!!updated.id && updated.states.length === 1 && updated.states[0].name === 'New', 'delete states fail on returned update', 'delete states returns updated value');
719
+ return [4 /*yield*/, sdk.api.journeys.getOne(journey.id)];
720
+ case 7:
721
+ fetchAfterDeletion = _g.sent();
722
+ (0, testing_1.assert)(fetchAfterDeletion.states.length === 1 && fetchAfterDeletion.states[0].name === 'New', 'delete states fail', 'delete states worked');
702
723
  (0, testing_1.assert)(journey.defaultState === 'New', 'defaultState not set on create', 'journey-create - defaultState initialized');
703
724
  (0, testing_1.assert)(journey.states[0].name === 'New', 'defaultState not set on create', 'journey-create - states initialized');
704
725
  return [4 /*yield*/, sdk.api.journeys.updateOne(journey.id, { states: [{ name: 'ToDuplicate', priority: "N/A" }] })];
705
- case 5:
726
+ case 8:
706
727
  _g.sent();
707
728
  return [4 /*yield*/, sdk.api.journeys.getOne(journey.id)];
708
- case 6:
729
+ case 9:
709
730
  withAddedState = _g.sent();
710
731
  (0, testing_1.assert)(withAddedState.states.length === 2 && withAddedState.states.find(function (s) { return s.name === 'ToDuplicate'; }) !== undefined, 'new state added', 'journey-update - push state change');
711
732
  return [4 /*yield*/, (0, testing_1.async_test)("create-journey - add duplicate state", function () { return sdk.api.journeys.updateOne(journey.id, { states: [{ name: 'ToDuplicate', priority: "N/A" }] }); }, { shouldError: true, onError: function (e) { return e.message === 'Uniqueness Violation'; } })];
712
- case 7:
733
+ case 10:
713
734
  _g.sent();
714
735
  return [4 /*yield*/, (0, testing_1.async_test)("create-journey - add duplicate states in update", function () { return sdk.api.journeys.updateOne(journey.id, { states: [{ name: 'DuplicateUpdate', priority: "N/A" }, { name: 'DuplicateUpdate', priority: "N/A" }] }); }, { shouldError: true, onError: function (e) { return e.message === 'Uniqueness Violation'; } })];
715
- case 8:
736
+ case 11:
716
737
  _g.sent();
717
738
  return [4 /*yield*/, sdk.api.journeys.updateOne(journey.id, { defaultState: 'Added', states: [{ name: 'Added', priority: "N/A" }, { name: "Other", priority: "N/A" }] }, { replaceObjectFields: true })];
718
- case 9:
739
+ case 12:
719
740
  _g.sent();
720
741
  return [4 /*yield*/, sdk.api.journeys.getOne(journey.id)];
721
- case 10:
742
+ case 13:
722
743
  withAddedState = _g.sent();
723
744
  (0, testing_1.assert)(withAddedState.states.length === 2 && withAddedState.states.find(function (s) { return s.name === 'Added'; }) !== undefined
724
745
  && withAddedState.defaultState === 'Added', 'duplicate state not added', 'journey-update - replace states');
725
746
  return [4 /*yield*/, (0, testing_1.async_test)("journey-update - states replace with missing default", function () { return queries.updateOne(journey.id, { states: [{ name: 'Not Default', priority: "N/A" }] }, { replaceObjectFields: true }); }, { shouldError: true, onError: function (e) { return e.message === 'defaultState does not exist in states'; } })];
726
- case 11:
747
+ case 14:
727
748
  _g.sent();
728
749
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'journeyunset1@tellescope.com', journeys: (_a = {}, _a[journey.id] = 'Added', _a) })];
729
- case 12:
750
+ case 15:
730
751
  e1 = _g.sent();
731
752
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'journeyunset2@tellescope.com', journeys: (_b = {}, _b[journey.id] = 'Added', _b[journey2.id] = 'New', _b) })];
732
- case 13:
753
+ case 16:
733
754
  e2 = _g.sent();
734
755
  return [4 /*yield*/, (0, testing_1.async_test)("create-enduser - invalid journey id", function () {
735
756
  var _a;
736
757
  return sdk.api.endusers.createOne({ email: 'journeyunset3@tellescope.com', journeys: (_a = {}, _a[e1.id] = 'Added', _a) });
737
758
  }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a related record for the given id(s)'; } })];
738
- case 14:
759
+ case 17:
739
760
  _g.sent();
740
761
  return [4 /*yield*/, (0, testing_1.async_test)("update-enduser - invalid journey id", function () {
741
762
  var _a;
742
763
  return sdk.api.endusers.updateOne(e1.id, { journeys: (_a = {}, _a[e1.id] = 'Added', _a) });
743
764
  }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a related record for the given id(s)'; } })];
744
- case 15:
765
+ case 18:
745
766
  _g.sent();
746
767
  return [4 /*yield*/, (0, testing_1.async_test)("update-enduser - one invalid journey id", function () {
747
768
  var _a;
748
769
  return sdk.api.endusers.updateOne(e1.id, { journeys: (_a = {}, _a[journey.id] = 'Added', _a[e1.id] = 'Added', _a) });
749
770
  }, { shouldError: true, onError: function (e) { return e.message === 'Could not find a related record for the given id(s)'; } })];
750
- case 16:
771
+ case 19:
751
772
  _g.sent();
752
773
  return [4 /*yield*/, sdk.api.endusers.updateOne(e1.id, { journeys: (_c = {}, _c[journey.id] = 'Other', _c) })]; // valid state change
753
- case 17:
774
+ case 20:
754
775
  _g.sent(); // valid state change
755
776
  return [4 /*yield*/, sdk.api.endusers.updateOne(e1.id, { journeys: (_d = {}, _d[journey.id] = 'Added', _d) })]; // change back
756
- case 18:
777
+ case 21:
757
778
  _g.sent(); // change back
758
779
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)]; // wait for side effects to add engagement
759
- case 19:
780
+ case 22:
760
781
  _g.sent(); // wait for side effects to add engagement
761
782
  return [4 /*yield*/, sdk.api.engagement_events.getSome()];
762
- case 20:
783
+ case 23:
763
784
  engagement = _g.sent();
764
785
  (0, testing_1.assert)(engagement.filter(function (e) { return e.enduserId === e1.id && e.type === "STATE_CHANGE"; }).length === 2, 'STATE_CHANGE engagement not tracked', 'Update enduser tracks state changes');
765
786
  return [4 /*yield*/, sdk.api.endusers.createSome([{ email: "1@tellescope.com", journeys: (_e = {}, _e[journey.id] = 'Added', _e) }, { email: "2@tellescope.com", journeys: (_f = {}, _f[journey.id] = 'Added', _f) }])];
766
- case 21:
787
+ case 24:
767
788
  es = (_g.sent()).created;
768
789
  return [4 /*yield*/, sdk.api.engagement_events.getSome()];
769
- case 22:
790
+ case 25:
770
791
  engagement = _g.sent();
771
792
  (0, testing_1.assert)(engagement.filter(function (e) { return e.enduserId === es[0].id && e.type === "JOURNEY_SET"; }).length === 1, 'JOURNEY_SET engagement not tracked', 'Create endusers tracks engagement events (1)');
772
793
  (0, testing_1.assert)(engagement.filter(function (e) { return e.enduserId === es[1].id && e.type === "JOURNEY_SET"; }).length === 1, 'JOURNEY_SET engagement not tracked', 'Create endusers tracks engagement events (2)');
773
794
  return [4 /*yield*/, queries.updateOne(journey.id, { states: [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }] }, { replaceObjectFields: true })];
774
- case 23:
795
+ case 26:
775
796
  _g.sent();
776
797
  return [4 /*yield*/, (0, testing_1.async_test)("journey-update - insert new state at front", function () { return queries.getOne(journey.id); }, { onResult: function (j) { return (0, utilities_1.objects_equivalent)(j.states, [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }]); } })];
777
- case 24:
798
+ case 27:
778
799
  _g.sent();
779
800
  return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState", function () { return queries.update_state({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' } }); }, passOnVoid)];
780
- case 25:
801
+ case 28:
781
802
  _g.sent();
782
803
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)]; // wait for side effects to update endusers
783
- case 26:
804
+ case 29:
784
805
  _g.sent(); // wait for side effects to update endusers
785
806
  return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState verify propagation to enduser 1", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) {
786
807
  var _a;
787
808
  return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a));
788
809
  } })];
789
- case 27:
810
+ case 30:
790
811
  _g.sent();
791
812
  return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState verify propagation to enduser 2", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
792
813
  var _a;
793
814
  return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a[journey2.id] = 'New', _a));
794
815
  } })];
795
- case 28:
816
+ case 31:
796
817
  _g.sent();
797
818
  return [4 /*yield*/, queries.deleteOne(journey.id)];
798
- case 29:
819
+ case 32:
799
820
  _g.sent();
800
821
  return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)]; // wait for side effects to update endusers
801
- case 30:
822
+ case 33:
802
823
  _g.sent(); // wait for side effects to update endusers
803
824
  return [4 /*yield*/, (0, testing_1.async_test)("journey-delete - corresponding enduser journeys are unset 1", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) { return (0, utilities_1.objects_equivalent)(e.journeys, {}); } })];
804
- case 31:
825
+ case 34:
805
826
  _g.sent();
806
827
  return [4 /*yield*/, (0, testing_1.async_test)("journey-delete - corresponding enduser journeys are unset, others left", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
807
828
  var _a;
808
829
  return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey2.id] = 'New', _a));
809
830
  } })];
810
- case 32:
831
+ case 35:
811
832
  _g.sent();
812
833
  return [2 /*return*/];
813
834
  }
@@ -830,9 +851,9 @@ var tasks_tests = function (queries) {
830
851
  return [4 /*yield*/, sdk.api.endusers.deleteOne(e.id)];
831
852
  case 3:
832
853
  _a.sent();
833
- return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)]; // allow dependency updates to fire in background
854
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 100)]; // allow dependency updates to fire in background (there are a lot for endusers)
834
855
  case 4:
835
- _a.sent(); // allow dependency updates to fire in background
856
+ _a.sent(); // allow dependency updates to fire in background (there are a lot for endusers)
836
857
  return [4 /*yield*/, (0, testing_1.async_test)("get-task - enduserId unset on enduser deletion", function () { return queries.getOne(t.id); }, { onResult: function (t) { return t.enduserId === undefined; } })];
837
858
  case 5:
838
859
  _a.sent();
@@ -1175,8 +1196,11 @@ var chat_tests = function () { return __awaiter(void 0, void 0, void 0, function
1175
1196
  return [4 /*yield*/, sdk.api.chats.deleteOne(chatNull.id)];
1176
1197
  case 23:
1177
1198
  _a.sent();
1178
- return [4 /*yield*/, (0, testing_1.async_test)("get-chat (setNull working)", function () { return sdk.api.chats.getOne(chat2Null.id); }, { onResult: function (c) { return c.replyId === null; } })];
1199
+ return [4 /*yield*/, (0, testing_1.wait)(undefined, 250)];
1179
1200
  case 24:
1201
+ _a.sent();
1202
+ return [4 /*yield*/, (0, testing_1.async_test)("get-chat (setNull working)", function () { return sdk.api.chats.getOne(chat2Null.id); }, { onResult: function (c) { return c.replyId === null; } })];
1203
+ case 25:
1180
1204
  _a.sent();
1181
1205
  return [2 /*return*/];
1182
1206
  }
@@ -1188,6 +1212,7 @@ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0,
1188
1212
  return __generator(this, function (_j) {
1189
1213
  switch (_j.label) {
1190
1214
  case 0:
1215
+ (0, testing_1.log_header)("Enduser Access");
1191
1216
  email = 'enduser@tellescope.com';
1192
1217
  password = 'testpassword';
1193
1218
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: email })];
@@ -1290,7 +1315,7 @@ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0,
1290
1315
  return [4 /*yield*/, sdk.api.tickets.createOne({ enduserId: constants_1.PLACEHOLDER_ID, title: "Inaccessible ticket" })];
1291
1316
  case 15:
1292
1317
  ticketInaccessible = _j.sent();
1293
- return [4 /*yield*/, (0, testing_1.async_test)("enduser cannot create ticket for another enduser", function () { return enduserSDK.api.tickets.createOne({ enduserId: sdk.userInfo.id, title: "Error on Creation" }); }, { shouldError: true, onError: function (e) { return e.message === "enduserId does not match creator id for enduser session"; } })];
1318
+ return [4 /*yield*/, (0, testing_1.async_test)("enduser cannot create ticket for another enduser", function () { return enduserSDK.api.tickets.createOne({ enduserId: sdk.userInfo.id, title: "Error on Creation" }); }, { shouldError: true, onError: function (e) { return !!e.message; } })];
1294
1319
  case 16:
1295
1320
  _j.sent();
1296
1321
  return [4 /*yield*/, (0, testing_1.async_test)("enduser-access default, no access constraints, matching enduserId", function () { return enduserSDK.api.tickets.getOne(ticketAccessible.id); }, { onResult: function (t) { return t.id === ticketAccessible.id; } })];
@@ -1367,6 +1392,7 @@ var enduser_session_tests = function () { return __awaiter(void 0, void 0, void
1367
1392
  return __generator(this, function (_a) {
1368
1393
  switch (_a.label) {
1369
1394
  case 0:
1395
+ (0, testing_1.log_header)("Enduser Session");
1370
1396
  email = 'enduser@tellescope.com';
1371
1397
  password = 'testpassword';
1372
1398
  return [4 /*yield*/, sdk.api.endusers.createOne({ email: email })];
@@ -1494,6 +1520,128 @@ var calendar_events_tests = function () { return __awaiter(void 0, void 0, void
1494
1520
  }
1495
1521
  });
1496
1522
  }); };
1523
+ var automation_events_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
1524
+ var state1, state2, journey, testAction, a1, a2, a3, enduser;
1525
+ var _a, _b;
1526
+ return __generator(this, function (_c) {
1527
+ switch (_c.label) {
1528
+ case 0:
1529
+ (0, testing_1.log_header)("Automation Events");
1530
+ state1 = "State 1", state2 = "State 2";
1531
+ return [4 /*yield*/, sdk.api.journeys.createOne({
1532
+ title: "Automations Test",
1533
+ defaultState: state1,
1534
+ states: [
1535
+ { name: state1, priority: 'N/A' },
1536
+ { name: state2, priority: 'N/A' },
1537
+ ]
1538
+ })];
1539
+ case 1:
1540
+ journey = _c.sent();
1541
+ return [4 /*yield*/, (0, testing_1.async_test)("enterState cannot match updateStateForJourney", function () { return sdk.api.event_automations.createOne({
1542
+ journeyId: journey.id,
1543
+ event: {
1544
+ type: "enterState",
1545
+ info: { state: state1, journeyId: journey.id }
1546
+ },
1547
+ action: {
1548
+ type: 'updateStateForJourney',
1549
+ info: { state: state1, journeyId: journey.id },
1550
+ },
1551
+ }); }, { shouldError: true, onError: function (e) { return e.message === 'updateStateForJourney cannot have the same journey and state as the enterState event'; } })];
1552
+ case 2:
1553
+ _c.sent();
1554
+ return [4 /*yield*/, (0, testing_1.async_test)("leaveState cannot match updateStateForJourney", function () { return sdk.api.event_automations.createOne({
1555
+ journeyId: journey.id,
1556
+ event: {
1557
+ type: "leaveState",
1558
+ info: { state: state1, journeyId: journey.id }
1559
+ },
1560
+ action: {
1561
+ type: 'updateStateForJourney',
1562
+ info: { state: state1, journeyId: journey.id },
1563
+ },
1564
+ }); }, { shouldError: true, onError: function (e) { return e.message === 'updateStateForJourney cannot have the same journey and state as the leaveState event'; } })];
1565
+ case 3:
1566
+ _c.sent();
1567
+ testAction = {
1568
+ type: 'sendWebhook',
1569
+ info: { message: 'test' }
1570
+ };
1571
+ return [4 /*yield*/, sdk.api.event_automations.createOne({
1572
+ journeyId: journey.id,
1573
+ event: {
1574
+ type: "enterState",
1575
+ info: { state: state1, journeyId: journey.id }
1576
+ },
1577
+ action: testAction,
1578
+ })];
1579
+ case 4:
1580
+ a1 = _c.sent();
1581
+ return [4 /*yield*/, sdk.api.event_automations.createOne({
1582
+ journeyId: journey.id,
1583
+ event: {
1584
+ type: "leaveState",
1585
+ info: { state: state1, journeyId: journey.id }
1586
+ },
1587
+ action: testAction,
1588
+ })];
1589
+ case 5:
1590
+ a2 = _c.sent();
1591
+ return [4 /*yield*/, sdk.api.event_automations.createOne({
1592
+ journeyId: journey.id,
1593
+ event: {
1594
+ type: "enterState",
1595
+ info: { state: state2, journeyId: journey.id }
1596
+ },
1597
+ action: testAction,
1598
+ })];
1599
+ case 6:
1600
+ a3 = _c.sent();
1601
+ return [4 /*yield*/, (0, testing_1.async_test)("Cannot insert duplicate event/action pair", function () { return sdk.api.event_automations.createOne({
1602
+ journeyId: journey.id,
1603
+ event: {
1604
+ type: "enterState",
1605
+ info: { state: state2, journeyId: journey.id }
1606
+ },
1607
+ action: testAction,
1608
+ }); }, { shouldError: true, onError: function (e) { return e.message === UniquenessViolationMessage; } })
1609
+ // trigger a1 on create
1610
+ ];
1611
+ case 7:
1612
+ _c.sent();
1613
+ return [4 /*yield*/, sdk.api.endusers.createOne({
1614
+ email: "automations@tellescope.com",
1615
+ journeys: (_a = {}, _a[journey.id] = journey.defaultState, _a)
1616
+ })
1617
+ // trigger a2 and a3 by leaving state 1 an going to state 2
1618
+ ];
1619
+ case 8:
1620
+ enduser = _c.sent();
1621
+ // trigger a2 and a3 by leaving state 1 an going to state 2
1622
+ return [4 /*yield*/, sdk.api.endusers.updateOne(enduser.id, { journeys: (_b = {}, _b[journey.id] = state2, _b) })];
1623
+ case 9:
1624
+ // trigger a2 and a3 by leaving state 1 an going to state 2
1625
+ _c.sent();
1626
+ return [4 /*yield*/, (0, testing_1.async_test)("Automation events triggered correctly",
1627
+ // () => sdk.api.automation_endusers.getSome(),
1628
+ function () { return sdk.api.automation_endusers.getSome({ filter: { enduserId: enduser.id } }); }, { onResult: function (es) { return es && es.length === 3 && es.filter(function (a) { return a.automationId === "ONE_TIME"; }).length === 3; } })
1629
+ // cleanup
1630
+ ];
1631
+ case 10:
1632
+ _c.sent();
1633
+ // cleanup
1634
+ return [4 /*yield*/, sdk.api.journeys.deleteOne(journey.id)]; // automation events deleted as side effect
1635
+ case 11:
1636
+ // cleanup
1637
+ _c.sent(); // automation events deleted as side effect
1638
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(enduser.id)];
1639
+ case 12:
1640
+ _c.sent();
1641
+ return [2 /*return*/];
1642
+ }
1643
+ });
1644
+ }); };
1497
1645
  var tests = {
1498
1646
  chats: chat_tests,
1499
1647
  endusers: enduser_tests,
@@ -1514,6 +1662,9 @@ var tests = {
1514
1662
  form_responses: function () { },
1515
1663
  calendar_events: calendar_events_tests,
1516
1664
  webhooks: function () { },
1665
+ event_automations: automation_events_tests,
1666
+ sequence_automations: function () { },
1667
+ automation_endusers: function () { },
1517
1668
  };
1518
1669
  (function () { return __awaiter(void 0, void 0, void 0, function () {
1519
1670
  var err_1, n, _a, _b, _i, returnValidation, t, _c, _d, _e, err_2;
@@ -1563,7 +1714,7 @@ var tests = {
1563
1714
  err_1 = _h.sent();
1564
1715
  console.error("Failed during custom test");
1565
1716
  console.error(err_1);
1566
- process.exit();
1717
+ process.exit(1);
1567
1718
  return [3 /*break*/, 13];
1568
1719
  case 13:
1569
1720
  _a = [];
@@ -1609,6 +1760,7 @@ var tests = {
1609
1760
  err_2 = _h.sent();
1610
1761
  console.error("Error running test:");
1611
1762
  console.error(err_2);
1763
+ process.exit(1);
1612
1764
  return [3 /*break*/, 22];
1613
1765
  case 22:
1614
1766
  _e++;