@tellescope/sdk 1.67.0 → 1.67.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.
@@ -6003,16 +6003,377 @@ var nextReminderInMS_tests = function () { return __awaiter(void 0, void 0, void
6003
6003
  }
6004
6004
  });
6005
6005
  }); };
6006
+ var pollForResults = function (f, intervalInMS, iterations) {
6007
+ if (intervalInMS === void 0) { intervalInMS = 500; }
6008
+ if (iterations === void 0) { iterations = 20; }
6009
+ return __awaiter(void 0, void 0, void 0, function () {
6010
+ var i, result;
6011
+ return __generator(this, function (_a) {
6012
+ switch (_a.label) {
6013
+ case 0:
6014
+ i = 0;
6015
+ _a.label = 1;
6016
+ case 1:
6017
+ if (!(i < iterations)) return [3 /*break*/, 5];
6018
+ return [4 /*yield*/, wait(undefined, intervalInMS)];
6019
+ case 2:
6020
+ _a.sent();
6021
+ return [4 /*yield*/, f()];
6022
+ case 3:
6023
+ result = _a.sent();
6024
+ if (result.length)
6025
+ return [2 /*return*/, result];
6026
+ _a.label = 4;
6027
+ case 4:
6028
+ i++;
6029
+ return [3 /*break*/, 1];
6030
+ case 5: throw new Error("failed pollForResults");
6031
+ }
6032
+ });
6033
+ });
6034
+ };
6006
6035
  var test_ticket_automation_assignment_and_optimization = function () { return __awaiter(void 0, void 0, void 0, function () {
6007
- var _a, _b;
6036
+ var users, journey, foregroundTestCounter, testForegroundTicket, backgroundTestCounter, testBackgroundTicket, enduser, _a, _b;
6008
6037
  return __generator(this, function (_c) {
6009
6038
  switch (_c.label) {
6010
6039
  case 0:
6011
- _b = (_a = console).log;
6012
- return [4 /*yield*/, sdk.api.users.getSome({})];
6040
+ log_header("Ticket Automation / Assignment Tests");
6041
+ return [4 /*yield*/, sdk.api.users.getSome()];
6013
6042
  case 1:
6014
- _b.apply(_a, [(_c.sent()).length]);
6015
- return [2 /*return*/];
6043
+ users = _c.sent();
6044
+ if (users.length < 3)
6045
+ throw new Error("Must have at least 3 users to detect invalid assignment");
6046
+ return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, { tags: ['tag1', 'tag2'] })];
6047
+ case 2:
6048
+ _c.sent();
6049
+ return [4 /*yield*/, sdk.api.users.updateOne(sdkNonAdmin.userInfo.id, { tags: ['tag1', 'tag3'] })];
6050
+ case 3:
6051
+ _c.sent();
6052
+ return [4 /*yield*/, sdk.api.journeys.createOne({ title: "Testing" })];
6053
+ case 4:
6054
+ journey = _c.sent();
6055
+ foregroundTestCounter = 0;
6056
+ testForegroundTicket = function (_a) {
6057
+ var assignedTo = _a.assignedTo, info = _a.info, validOwners = _a.validOwners, enduser = _a.enduser, closedForReason = _a.closedForReason, testDelayedChild = _a.testDelayedChild;
6058
+ return __awaiter(void 0, void 0, void 0, function () {
6059
+ var e, _b, step, statusStep, child, ticket;
6060
+ var _c;
6061
+ return __generator(this, function (_d) {
6062
+ switch (_d.label) {
6063
+ case 0:
6064
+ _b = enduser;
6065
+ if (_b) return [3 /*break*/, 2];
6066
+ return [4 /*yield*/, sdk.api.endusers.createOne({ assignedTo: assignedTo, journeys: (_c = {}, _c[journey.id] = '', _c) })];
6067
+ case 1:
6068
+ _b = (_d.sent());
6069
+ _d.label = 2;
6070
+ case 2:
6071
+ e = _b;
6072
+ return [4 /*yield*/, sdk.api.automation_steps.createOne({
6073
+ action: { type: 'createTicket', info: __assign(__assign({}, info), { title: 'background ticket' }) },
6074
+ events: [{
6075
+ type: 'ticketCompleted',
6076
+ info: closedForReason ? { automationStepId: PLACEHOLDER_ID, closedForReason: closedForReason } : { automationStepId: PLACEHOLDER_ID }
6077
+ }],
6078
+ journeyId: journey.id,
6079
+ })];
6080
+ case 3:
6081
+ step = _d.sent();
6082
+ return [4 /*yield*/, sdk.api.automation_steps.createOne({
6083
+ action: { type: 'setEnduserStatus', info: { status: 'Test Status' } },
6084
+ events: [{
6085
+ type: 'ticketCompleted',
6086
+ info: closedForReason ? { automationStepId: PLACEHOLDER_ID, closedForReason: closedForReason } : { automationStepId: PLACEHOLDER_ID }
6087
+ }],
6088
+ journeyId: journey.id,
6089
+ })];
6090
+ case 4:
6091
+ statusStep = _d.sent();
6092
+ return [4 /*yield*/, sdk.api.automation_steps.createOne({
6093
+ action: { type: 'setEnduserStatus', info: { status: 'Test Status' } },
6094
+ events: [{
6095
+ type: 'afterAction',
6096
+ info: {
6097
+ automationStepId: step.id,
6098
+ delay: 0, delayInMS: 0, unit: 'Days',
6099
+ }
6100
+ }],
6101
+ journeyId: journey.id,
6102
+ })];
6103
+ case 5:
6104
+ child = _d.sent();
6105
+ return [4 /*yield*/, sdk.api.tickets.createOne({
6106
+ title: 'foreground ticket',
6107
+ enduserId: e.id,
6108
+ automationStepId: PLACEHOLDER_ID,
6109
+ journeyId: journey.id,
6110
+ owner: validOwners[0],
6111
+ closedForReason: closedForReason,
6112
+ })];
6113
+ case 6:
6114
+ ticket = _d.sent();
6115
+ return [4 /*yield*/, async_test("Foreground ticket assignment ".concat(++foregroundTestCounter), function () { return sdk.api.tickets.close_ticket({ ticketId: ticket.id, closedForReason: closedForReason }); }, { onResult: function (_a) {
6116
+ var generated = _a.generated;
6117
+ return !!(generated === null || generated === void 0 ? void 0 : generated.owner) && validOwners.includes(generated.owner);
6118
+ } })];
6119
+ case 7:
6120
+ _d.sent();
6121
+ return [4 /*yield*/, async_test("Foreground ticket nop, no duplicates", function () { return sdk.api.automated_actions.getSome({ filter: { automationStepId: step.id } }); }, { onResult: function (steps) { return steps.length === 1 && !!steps[0].isNOP; } })];
6122
+ case 8:
6123
+ _d.sent();
6124
+ return [4 /*yield*/, async_test("Background action queued, no duplicates", function () { return sdk.api.automated_actions.getSome({ filter: { automationStepId: statusStep.id } }); }, {
6125
+ onResult: function (steps) { return steps.length === 1 && !steps[0].isNOP; }
6126
+ })
6127
+ // verify that ticket generated by close_ticket goes on to generate its own delayed actions
6128
+ ];
6129
+ case 9:
6130
+ _d.sent();
6131
+ if (!testDelayedChild) return [3 /*break*/, 11];
6132
+ return [4 /*yield*/, async_test("Delayed child ticket", function () { return pollForResults(function () { return sdk.api.automated_actions.getSome({ filter: { automationStepId: child.id } }); }); }, { onResult: function (steps) { return steps.length === 1 && !steps[0].isNOP; } })];
6133
+ case 10:
6134
+ _d.sent();
6135
+ _d.label = 11;
6136
+ case 11: return [4 /*yield*/, Promise.all([
6137
+ sdk.api.endusers.deleteOne(e.id),
6138
+ sdk.api.automation_steps.deleteOne(step.id),
6139
+ sdk.api.automation_steps.deleteOne(statusStep.id),
6140
+ sdk.api.automation_steps.deleteOne(child.id),
6141
+ ])];
6142
+ case 12:
6143
+ _d.sent();
6144
+ return [2 /*return*/];
6145
+ }
6146
+ });
6147
+ });
6148
+ };
6149
+ return [4 /*yield*/, testForegroundTicket({
6150
+ assignedTo: [],
6151
+ info: {
6152
+ assignmentStrategy: { type: 'default', info: {} },
6153
+ defaultAssignee: sdk.userInfo.id
6154
+ },
6155
+ validOwners: [sdk.userInfo.id],
6156
+ testDelayedChild: true,
6157
+ })];
6158
+ case 5:
6159
+ _c.sent();
6160
+ return [4 /*yield*/, testForegroundTicket({
6161
+ assignedTo: [],
6162
+ info: {
6163
+ assignmentStrategy: { type: 'default', info: {} },
6164
+ defaultAssignee: sdk.userInfo.id
6165
+ },
6166
+ validOwners: [sdk.userInfo.id],
6167
+ closedForReason: "closedForReason test",
6168
+ testDelayedChild: true,
6169
+ })];
6170
+ case 6:
6171
+ _c.sent();
6172
+ return [4 /*yield*/, testForegroundTicket({
6173
+ assignedTo: [],
6174
+ info: {
6175
+ assignmentStrategy: { type: 'default', info: {} },
6176
+ defaultAssignee: sdkNonAdmin.userInfo.id
6177
+ },
6178
+ validOwners: [sdkNonAdmin.userInfo.id],
6179
+ })];
6180
+ case 7:
6181
+ _c.sent();
6182
+ return [4 /*yield*/, testForegroundTicket({
6183
+ assignedTo: [],
6184
+ info: {
6185
+ assignmentStrategy: { type: 'previous-owner', info: {} },
6186
+ defaultAssignee: sdk.userInfo.id
6187
+ },
6188
+ validOwners: [sdkNonAdmin.userInfo.id],
6189
+ })];
6190
+ case 8:
6191
+ _c.sent();
6192
+ return [4 /*yield*/, testForegroundTicket({
6193
+ assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
6194
+ info: {
6195
+ assignmentStrategy: { type: 'care-team-primary', info: {} },
6196
+ defaultAssignee: sdk.userInfo.id
6197
+ },
6198
+ validOwners: [sdkNonAdmin.userInfo.id],
6199
+ })];
6200
+ case 9:
6201
+ _c.sent();
6202
+ return [4 /*yield*/, testForegroundTicket({
6203
+ assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
6204
+ info: {
6205
+ assignmentStrategy: { type: 'care-team-random', info: {} },
6206
+ defaultAssignee: sdk.userInfo.id
6207
+ },
6208
+ validOwners: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
6209
+ })];
6210
+ case 10:
6211
+ _c.sent();
6212
+ return [4 /*yield*/, testForegroundTicket({
6213
+ assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
6214
+ info: {
6215
+ assignmentStrategy: { type: 'by-tags', info: { qualifier: 'One Of', values: ['tag1'] } },
6216
+ defaultAssignee: sdkNonAdmin.userInfo.id,
6217
+ },
6218
+ validOwners: [sdk.userInfo.id, sdkNonAdmin.userInfo.id,],
6219
+ })];
6220
+ case 11:
6221
+ _c.sent();
6222
+ return [4 /*yield*/, testForegroundTicket({
6223
+ assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
6224
+ info: {
6225
+ assignmentStrategy: { type: 'by-tags', info: { qualifier: 'One Of', values: ['tag2'] } },
6226
+ defaultAssignee: sdkNonAdmin.userInfo.id
6227
+ },
6228
+ validOwners: [sdk.userInfo.id],
6229
+ })];
6230
+ case 12:
6231
+ _c.sent();
6232
+ return [4 /*yield*/, testForegroundTicket({
6233
+ assignedTo: [],
6234
+ info: {
6235
+ assignmentStrategy: { type: 'by-tags', info: { qualifier: 'One Of', values: ['tag3'] } },
6236
+ defaultAssignee: sdk.userInfo.id
6237
+ },
6238
+ validOwners: [sdkNonAdmin.userInfo.id],
6239
+ })];
6240
+ case 13:
6241
+ _c.sent();
6242
+ backgroundTestCounter = 0;
6243
+ testBackgroundTicket = function (_a) {
6244
+ var assignedTo = _a.assignedTo, info = _a.info, validOwners = _a.validOwners, enduser = _a.enduser;
6245
+ return __awaiter(void 0, void 0, void 0, function () {
6246
+ var e, _b;
6247
+ return __generator(this, function (_c) {
6248
+ switch (_c.label) {
6249
+ case 0:
6250
+ _b = enduser;
6251
+ if (_b) return [3 /*break*/, 2];
6252
+ return [4 /*yield*/, sdk.api.endusers.createOne({ assignedTo: assignedTo })];
6253
+ case 1:
6254
+ _b = (_c.sent());
6255
+ _c.label = 2;
6256
+ case 2:
6257
+ e = _b;
6258
+ return [4 /*yield*/, sdk.api.automated_actions.createOne({
6259
+ action: { type: 'createTicket', info: __assign(__assign({}, info), { title: 'background ticket' }) },
6260
+ automationStepId: PLACEHOLDER_ID,
6261
+ enduserId: e.id,
6262
+ event: { type: 'afterAction', info: { automationStepId: PLACEHOLDER_ID, delay: 0, delayInMS: 0, unit: 'Days' } },
6263
+ journeyId: journey.id,
6264
+ status: 'active',
6265
+ processAfter: Date.now(),
6266
+ })];
6267
+ case 3:
6268
+ _c.sent();
6269
+ return [4 /*yield*/, async_test("Background ticket assignment ".concat(++backgroundTestCounter), function () { return pollForResults(function () { return sdk.api.tickets.getSome({ filter: { enduserId: e.id, title: 'background ticket' } }); }); }, { onResult: function (ts) { return ts.length === 1 && !!ts[0].owner && validOwners.includes(ts[0].owner); } })];
6270
+ case 4:
6271
+ _c.sent();
6272
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(e.id)];
6273
+ case 5:
6274
+ _c.sent();
6275
+ return [2 /*return*/];
6276
+ }
6277
+ });
6278
+ });
6279
+ };
6280
+ return [4 /*yield*/, testBackgroundTicket({
6281
+ assignedTo: [],
6282
+ info: {
6283
+ assignmentStrategy: { type: 'default', info: {} },
6284
+ defaultAssignee: sdk.userInfo.id
6285
+ },
6286
+ validOwners: [sdk.userInfo.id],
6287
+ })];
6288
+ case 14:
6289
+ _c.sent();
6290
+ return [4 /*yield*/, testBackgroundTicket({
6291
+ assignedTo: [],
6292
+ info: {
6293
+ assignmentStrategy: { type: 'default', info: {} },
6294
+ defaultAssignee: sdkNonAdmin.userInfo.id
6295
+ },
6296
+ validOwners: [sdkNonAdmin.userInfo.id],
6297
+ })
6298
+ // ticket needs existing enduser, previous owner for test to work
6299
+ ];
6300
+ case 15:
6301
+ _c.sent();
6302
+ return [4 /*yield*/, sdk.api.endusers.createOne({ fname: 'previous-owner-test' })];
6303
+ case 16:
6304
+ enduser = _c.sent();
6305
+ return [4 /*yield*/, sdk.api.tickets.createOne({
6306
+ // title should be different than 'background test' so it doesn't create false positive test
6307
+ title: 'previous-owner-test', enduserId: enduser.id, journeyId: journey.id, owner: sdkNonAdmin.userInfo.id
6308
+ })];
6309
+ case 17:
6310
+ _c.sent();
6311
+ return [4 /*yield*/, testBackgroundTicket({
6312
+ assignedTo: [],
6313
+ enduser: enduser,
6314
+ info: {
6315
+ assignmentStrategy: { type: 'previous-owner', info: {} },
6316
+ defaultAssignee: sdk.userInfo.id
6317
+ },
6318
+ validOwners: [sdkNonAdmin.userInfo.id],
6319
+ })];
6320
+ case 18:
6321
+ _c.sent();
6322
+ return [4 /*yield*/, testBackgroundTicket({
6323
+ assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
6324
+ info: {
6325
+ assignmentStrategy: { type: 'care-team-primary', info: {} },
6326
+ defaultAssignee: sdk.userInfo.id
6327
+ },
6328
+ validOwners: [sdkNonAdmin.userInfo.id],
6329
+ })];
6330
+ case 19:
6331
+ _c.sent();
6332
+ return [4 /*yield*/, testBackgroundTicket({
6333
+ assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
6334
+ info: {
6335
+ assignmentStrategy: { type: 'care-team-random', info: {} },
6336
+ defaultAssignee: sdk.userInfo.id
6337
+ },
6338
+ validOwners: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
6339
+ })];
6340
+ case 20:
6341
+ _c.sent();
6342
+ return [4 /*yield*/, testBackgroundTicket({
6343
+ assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
6344
+ info: {
6345
+ assignmentStrategy: { type: 'by-tags', info: { qualifier: 'One Of', values: ['tag1'] } },
6346
+ defaultAssignee: sdkNonAdmin.userInfo.id,
6347
+ },
6348
+ validOwners: [sdk.userInfo.id, sdkNonAdmin.userInfo.id,],
6349
+ })];
6350
+ case 21:
6351
+ _c.sent();
6352
+ return [4 /*yield*/, testBackgroundTicket({
6353
+ assignedTo: [sdkNonAdmin.userInfo.id, sdk.userInfo.id],
6354
+ info: {
6355
+ assignmentStrategy: { type: 'by-tags', info: { qualifier: 'One Of', values: ['tag2'] } },
6356
+ defaultAssignee: sdkNonAdmin.userInfo.id
6357
+ },
6358
+ validOwners: [sdk.userInfo.id],
6359
+ })];
6360
+ case 22:
6361
+ _c.sent();
6362
+ return [4 /*yield*/, testBackgroundTicket({
6363
+ assignedTo: [],
6364
+ info: {
6365
+ assignmentStrategy: { type: 'by-tags', info: { qualifier: 'One Of', values: ['tag3'] } },
6366
+ defaultAssignee: sdk.userInfo.id
6367
+ },
6368
+ validOwners: [sdkNonAdmin.userInfo.id],
6369
+ })];
6370
+ case 23:
6371
+ _c.sent();
6372
+ _b = (_a = Promise).all;
6373
+ return [4 /*yield*/, sdk.api.journeys.deleteOne(journey.id)];
6374
+ case 24: return [2 /*return*/, _b.apply(_a, [[
6375
+ _c.sent()
6376
+ ]])];
6016
6377
  }
6017
6378
  });
6018
6379
  }); };