@tellescope/sdk 1.164.0 → 1.166.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -65,6 +65,8 @@ const UniquenessViolationMessage = 'Uniqueness Violation'
65
65
  const host = process.env.TEST_URL || 'http://localhost:8080' as const
66
66
  const [email, password] = [process.env.TEST_EMAIL, process.env.TEST_PASSWORD]
67
67
  const [mfaEmail, mfaPassword] = [process.env.MFA_EMAIL, process.env.TEST_PASSWORD]
68
+
69
+ // email2 should not be a @tellescope.com domain in order to validate access for agent_records
68
70
  const [email2, password2] = [process.env.TEST_EMAIL_2, process.env.TEST_PASSWORD_2]
69
71
  const [nonAdminEmail, nonAdminPassword] = [process.env.NON_ADMIN_EMAIL, process.env.NON_ADMIN_PASSWORD]
70
72
 
@@ -1433,6 +1435,23 @@ const chat_tests = async() => {
1433
1435
  const roomNull = await sdk.api.chat_rooms.createOne({ type: 'internal', userIds: [userId] })
1434
1436
  const chatNull = await sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello!" })
1435
1437
  const chat2Null = await sdk.api.chats.createOne({ roomId: roomNull.id, message: "Hello...", replyId: chatNull.id })
1438
+
1439
+ const chatScheduled = await sdk.api.chats.createOne({ roomId: roomNull.id, message: "Scheduled", sendAt: new Date(Date.now() + 1000 * 60 * 60 * 24) })
1440
+ await wait(undefined, 2000) // should be greater than 1s
1441
+
1442
+ await sdk.api.chats.updateOne(chatScheduled.id, { sendAt: new Date(0) }) // trigger scheduled send
1443
+ await wait(undefined, 250)
1444
+ await async_test(
1445
+ `Scheduled chat timestamps`,
1446
+ () => sdk.api.chats.getOne(chatScheduled.id),
1447
+ { onResult: c =>
1448
+ !!c.sendAt && new Date(c.sendAt).getTime() === 0
1449
+ && !!c.timestamp && new Date(c.timestamp).getTime() < Date.now()
1450
+ && !!c.timestamp && new Date(c.timestamp).getTime() > Date.now() - 1000 // should be less than delay after chatScheduled
1451
+ // createdAt is only precise to the second but should be different than timestamp
1452
+ && Math.floor(new Date(c.timestamp).getTime() / 1000) !== Math.floor(new Date(c.createdAt).getTime() / 1000)
1453
+ }
1454
+ )
1436
1455
 
1437
1456
  await sdk.api.chats.deleteOne(chatNull.id)
1438
1457
  await wait(undefined, 250)
@@ -3604,12 +3623,9 @@ const role_based_access_tests = async () => {
3604
3623
  // cleanup
3605
3624
  await Promise.all([
3606
3625
  sdk.api.endusers.deleteOne(e.id),
3607
- sdk.api.tickets.deleteOne(adminTicket.id),
3608
- sdk.api.tickets.deleteOne(ticketCreatedByNonAdmin.id),
3609
- sdk.api.emails.deleteOne(email.id),
3610
- sdk.api.sms_messages.deleteOne(sms.id),
3611
3626
  sdk.api.calendar_events.deleteOne(calendarEvent.id),
3612
3627
  sdk.api.chat_rooms.deleteOne(chatRoom.id),
3628
+ sdk.api.tickets.deleteOne(ticketCreatedByNonAdmin.id), // not associated with enduser, needs own cleanup
3613
3629
  ])
3614
3630
  }
3615
3631
 
@@ -5038,7 +5054,7 @@ const wait_for_trigger_tests = async () => {
5038
5054
 
5039
5055
  await sdk.api.endusers.updateOne(eTrigger.id, { fields: { Test: 'Trigger' } })
5040
5056
  await sdk.api.endusers.updateOne(eNoTrigger.id, { fields: { Test: 'Trigger' } })
5041
- await wait(undefined, 3000)
5057
+ await wait(undefined, 5000)
5042
5058
 
5043
5059
  // TODO - Test a delayed action which comes after the triggered action
5044
5060
 
@@ -5211,23 +5227,16 @@ const rate_limit_tests = async () => {
5211
5227
  )
5212
5228
 
5213
5229
  // these should work, as they do not have the same template
5214
- const [email3, email4, email5] = (await sdk.api.emails.createSome([
5230
+ await sdk.api.emails.createSome([
5215
5231
  { enduserId: e1.id, subject: 'ratelimit', textContent: 'rate limit' },
5216
5232
  { enduserId: e1.id, subject: 'ratelimit', textContent: 'rate limit' },
5217
5233
  { enduserId: e1.id, subject: 'ratelimit', textContent: 'rate limit' },
5218
- ])).created
5234
+ ])
5219
5235
 
5220
5236
  await Promise.all([
5221
5237
  sdk.api.endusers.deleteOne(e1.id),
5222
5238
  sdk.api.endusers.deleteOne(e2.id),
5223
5239
  sdk.api.endusers.deleteOne(e3.id),
5224
- sdk.api.emails.deleteOne(email1.id),
5225
- sdk.api.emails.deleteOne(email2.id),
5226
- sdk.api.emails.deleteOne(email3.id),
5227
- sdk.api.emails.deleteOne(email4.id),
5228
- sdk.api.emails.deleteOne(email5.id),
5229
- sdk.api.sms_messages.deleteOne(sms1.id),
5230
- sdk.api.sms_messages.deleteOne(sms2.id),
5231
5240
  ])
5232
5241
  }
5233
5242
 
@@ -6524,11 +6533,9 @@ export const formsort_tests = async () => {
6524
6533
 
6525
6534
  // cleanup
6526
6535
  const endusers = await sdk.api.endusers.getSome()
6527
- const formResponses = await sdk.api.form_responses.getSome()
6528
6536
  await Promise.all([
6529
6537
  sdk.api.forms.deleteOne(form.id),
6530
6538
  ...endusers.map(e => sdk.api.endusers.deleteOne(e.id)),
6531
- ...formResponses.map(f => sdk.api.form_responses.deleteOne(f.id)),
6532
6539
  ])
6533
6540
  }
6534
6541
 
@@ -6558,8 +6565,53 @@ export const enduser_orders_tests = async () => {
6558
6565
  return Promise.all(orders.map(o => sdk.api.enduser_orders.deleteOne(o.id)))
6559
6566
  }
6560
6567
 
6568
+ const agent_record_tests = async () => {
6569
+ log_header("AgentRecord Tests")
6570
+
6571
+ const r1 = await sdk.api.agent_records.createOne({ title: 'test', description: '', type: 'Article' })
6572
+ await sdk.api.agent_records.updateOne(r1.id, { title: 'updated' })
6573
+ const [r2, r3] = (await sdk.api.agent_records.createSome([{ title: 'test 2', description: '', type: 'Article' }, { title: 'test 3', description: '', type: 'Article' }])).created
6574
+
6575
+ const sdkOther = new Session({ host })
6576
+ await sdkOther.authenticate(email2, password2)
6577
+
6578
+ await async_test(
6579
+ `AgentRecord create blocked`,
6580
+ () => sdkOther.api.agent_records.createOne({ title: 'test', description: '', type: 'Article' }),
6581
+ { shouldError: true, onError: e => true },
6582
+ )
6583
+ await async_test(
6584
+ `AgentRecord create many blocked`,
6585
+ () => sdkOther.api.agent_records.createSome([{ title: 'test', description: '', type: 'Article' }, { title: 'test', description: '', type: 'Article' }]),
6586
+ { shouldError: true, onError: e => true },
6587
+ )
6588
+ await async_test(
6589
+ `AgentRecord update blocked`,
6590
+ () => sdkOther.api.agent_records.updateOne(r1.id, { title: 'updated' }),
6591
+ { shouldError: true, onError: e => true },
6592
+ )
6593
+ await async_test(
6594
+ `AgentRecord delete blocked`,
6595
+ () => sdkOther.api.agent_records.deleteOne(r1.id),
6596
+ { shouldError: true, onError: e => true },
6597
+ )
6598
+
6599
+ await async_test(
6600
+ `AgentRecord read access allowed in a different organizatino`,
6601
+ () => sdkSub.api.agent_records.getSome(),
6602
+ { onResult: r => !!r.find(r => r.businessId !== sdkSub.userInfo.businessId) },
6603
+ )
6604
+
6605
+ await Promise.all([
6606
+ sdk.api.agent_records.deleteOne(r1.id),
6607
+ sdk.api.agent_records.deleteOne(r2.id),
6608
+ sdk.api.agent_records.deleteOne(r3.id),
6609
+ ])
6610
+ }
6611
+
6561
6612
  const NO_TEST = () => {}
6562
6613
  const tests: { [K in keyof ClientModelForName]: () => void } = {
6614
+ agent_records: agent_record_tests,
6563
6615
  enduser_eligibility_results: NO_TEST,
6564
6616
  diagnosis_codes: NO_TEST,
6565
6617
  allergy_codes: NO_TEST,
@@ -7229,10 +7281,10 @@ export const ticket_reminder_tests = async () => {
7229
7281
  // test actual reminders without setting owner to avoid email notifications
7230
7282
  const tToRemind = await sdk.api.tickets.createOne({
7231
7283
  title,
7232
- dueDateInMS,
7284
+ dueDateInMS: Date.now(),
7233
7285
  reminders: [
7234
- { msBeforeDueDate: dueDateInMS - Date.now() }, // should remind right away
7235
- { msBeforeDueDate: dueDateInMS - Date.now() + 5000 }, // should then remind after 3 sec
7286
+ { msBeforeDueDate: 0 }, // should remind right away
7287
+ { msBeforeDueDate: -8000 }, // should then remind after
7236
7288
  ]
7237
7289
  })
7238
7290
  toDelete.push(tToRemind)
@@ -7246,8 +7298,8 @@ export const ticket_reminder_tests = async () => {
7246
7298
  && t.nextReminderInMS !== -1
7247
7299
  && t.reminders?.filter(r => r.didRemind)?.length === 1
7248
7300
  ),
7249
- 10,
7250
- 500,
7301
+ 100,
7302
+ 100,
7251
7303
  ),
7252
7304
  passOnAnyResult
7253
7305
  )
@@ -7272,10 +7324,10 @@ export const ticket_reminder_tests = async () => {
7272
7324
  t.reminders?.[0]?.didRemind === true
7273
7325
  && t.nextReminderInMS === -1
7274
7326
  && t.reminders?.[1]?.didRemind === true
7275
- && t.reminders?.filter(r => r.didRemind)?.length === 2
7327
+ && t.reminders?.length === 2
7276
7328
  ),
7277
7329
  100,
7278
- 50,
7330
+ 100,
7279
7331
  ),
7280
7332
  passOnAnyResult
7281
7333
  )
Binary file