@tellescope/sdk 1.65.3 → 1.65.5

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.
@@ -4589,6 +4589,166 @@ const mfa_tests = async () => {
4589
4589
  )
4590
4590
  }
4591
4591
 
4592
+ const nextReminderInMS_tests = async () => {
4593
+ log_header("nextReminderInMS Tests")
4594
+
4595
+ const startTimeInMS = Date.now() + 1000 * 60 * 60 * 24 * 7
4596
+ const durationInMinutes = 60
4597
+
4598
+ const eNoReminders = await sdk.api.calendar_events.createOne({ title: 'eNoReminders', startTimeInMS, durationInMinutes })
4599
+ await wait(undefined, 100)
4600
+ await async_test(
4601
+ "Create no reminders",
4602
+ () => sdk.api.calendar_events.getOne(eNoReminders.id),
4603
+ { onResult: e => e.nextReminderInMS === -1 }
4604
+ )
4605
+
4606
+ await sdk.api.calendar_events.updateOne(eNoReminders.id, { title: 'updated title' })
4607
+ await wait(undefined, 100)
4608
+ await async_test(
4609
+ "Update title, no change",
4610
+ () => sdk.api.calendar_events.getOne(eNoReminders.id),
4611
+ { onResult: e => e.nextReminderInMS === -1}
4612
+ )
4613
+
4614
+ const eOneReminder = await sdk.api.calendar_events.createOne({
4615
+ title: 'eOneReminder', startTimeInMS, durationInMinutes,
4616
+ reminders: [{ type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 1000 }]
4617
+ })
4618
+ await wait(undefined, 100)
4619
+ await async_test(
4620
+ "Create one reminder",
4621
+ () => sdk.api.calendar_events.getOne(eOneReminder.id),
4622
+ { onResult: e => e.nextReminderInMS === startTimeInMS - 1000 }
4623
+ )
4624
+
4625
+ await sdk.api.calendar_events.updateOne(eOneReminder.id, { startTimeInMS: startTimeInMS - 1000 })
4626
+ await wait(undefined, 100)
4627
+ await async_test(
4628
+ "Update startTimeInMS",
4629
+ () => sdk.api.calendar_events.getOne(eOneReminder.id),
4630
+ { onResult: e => e.nextReminderInMS === startTimeInMS - 1000 - 1000 }
4631
+ )
4632
+
4633
+ await sdk.api.calendar_events.updateOne(eOneReminder.id, {
4634
+ reminders: [{ type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 5000 }]
4635
+ }, { replaceObjectFields: true })
4636
+ await wait(undefined, 100)
4637
+ await async_test(
4638
+ "Update earliest reminder",
4639
+ () => sdk.api.calendar_events.getOne(eOneReminder.id),
4640
+ { onResult: e => e.nextReminderInMS === startTimeInMS - 5000 - 1000 }
4641
+ )
4642
+
4643
+ await sdk.api.calendar_events.updateOne(eOneReminder.id, {
4644
+ reminders: [{ type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 1000 }]
4645
+ })
4646
+ await wait(undefined, 100)
4647
+ await async_test(
4648
+ "Later reminder added",
4649
+ () => sdkMfaApiKey.api.calendar_events.getOne(eOneReminder.id),
4650
+ { onResult: e => e.nextReminderInMS === startTimeInMS - 5000 - 1000 }
4651
+ )
4652
+
4653
+ await sdk.api.calendar_events.updateOne(eOneReminder.id, {
4654
+ reminders: [{ type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 7500 }]
4655
+ })
4656
+ await wait(undefined, 100)
4657
+ await async_test(
4658
+ "Earlier reminder added",
4659
+ () => sdk.api.calendar_events.getOne(eOneReminder.id),
4660
+ { onResult: e => e.nextReminderInMS === startTimeInMS - 7500 - 1000 }
4661
+ )
4662
+
4663
+ const eOneReminderDidRemind = await sdk.api.calendar_events.createOne({
4664
+ title: 'eOneReminderDidRemind', startTimeInMS, durationInMinutes,
4665
+ reminders: [{ type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 1000, didRemind: true }]
4666
+ })
4667
+ await wait(undefined, 100)
4668
+ await async_test(
4669
+ "One reminder with didRemind: true",
4670
+ () => sdk.api.calendar_events.getOne(eOneReminderDidRemind.id),
4671
+ { onResult: e => e.nextReminderInMS === -1 }
4672
+ )
4673
+
4674
+ const eOneReminderDidRemindWithValid = await sdk.api.calendar_events.createOne({
4675
+ title: 'eOneReminderDidRemindWithValid', startTimeInMS, durationInMinutes,
4676
+ reminders: [
4677
+ { type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 1000, didRemind: true },
4678
+ { type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 0 },
4679
+ ]
4680
+ })
4681
+ await wait(undefined, 100)
4682
+ await async_test(
4683
+ "Multiple reminders with one didRemind: true",
4684
+ () => sdk.api.calendar_events.getOne(eOneReminderDidRemindWithValid.id),
4685
+ { onResult: e => e.nextReminderInMS === startTimeInMS }
4686
+ )
4687
+
4688
+ const eMultipleReminders = await sdk.api.calendar_events.createOne({
4689
+ title: 'eMultipleReminders', startTimeInMS, durationInMinutes,
4690
+ reminders: [
4691
+ { type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 1000 },
4692
+ { type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 5000 },
4693
+ { type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: -3000 },
4694
+ ]
4695
+ })
4696
+ await wait(undefined, 100)
4697
+ await async_test(
4698
+ "Create multiple reminders",
4699
+ () => sdk.api.calendar_events.getOne(eMultipleReminders.id),
4700
+ { onResult: e => e.nextReminderInMS === startTimeInMS - 5000 }
4701
+ )
4702
+
4703
+ // changing far out reminders shouldn't change nextReminderInMS
4704
+ await sdk.api.calendar_events.updateOne(eMultipleReminders.id, {
4705
+ reminders: [
4706
+ { type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: -1000 },
4707
+ { type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 5000 },
4708
+ { type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: -8000 },
4709
+ ]
4710
+ }, { replaceObjectFields: true })
4711
+ await wait(undefined, 100)
4712
+ await async_test(
4713
+ "Later reminders changed",
4714
+ () => sdk.api.calendar_events.getOne(eMultipleReminders.id),
4715
+ { onResult: e => e.nextReminderInMS === startTimeInMS - 5000 }
4716
+ )
4717
+
4718
+ // changing nearest reminder shouldn change nextReminderInMS
4719
+ await sdk.api.calendar_events.updateOne(eMultipleReminders.id, {
4720
+ reminders: [
4721
+ { type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 6000 },
4722
+ { type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 7000 },
4723
+ { type: 'create-ticket', info: { title: 'title' }, msBeforeStartTime: 5000 },
4724
+ ]
4725
+ }, { replaceObjectFields: true })
4726
+ await wait(undefined, 100)
4727
+ await async_test(
4728
+ "Earlier reminders changed",
4729
+ () => sdkMfaApiKey.api.calendar_events.getOne(eMultipleReminders.id),
4730
+ { onResult: e => e.nextReminderInMS === startTimeInMS - 7000 }
4731
+ )
4732
+
4733
+ await sdk.api.calendar_events.updateOne(eMultipleReminders.id, {
4734
+ startTimeInMS: startTimeInMS - 3000
4735
+ })
4736
+ await wait(undefined, 100)
4737
+ await async_test(
4738
+ "startTimeInMS changed for multiple reminders",
4739
+ () => sdk.api.calendar_events.getOne(eMultipleReminders.id),
4740
+ { onResult: e => e.nextReminderInMS === startTimeInMS - 7000 - 3000 }
4741
+ )
4742
+
4743
+ await Promise.all([
4744
+ sdk.api.calendar_events.deleteOne(eNoReminders.id),
4745
+ sdk.api.calendar_events.deleteOne(eMultipleReminders.id),
4746
+ sdk.api.calendar_events.deleteOne(eOneReminderDidRemindWithValid.id),
4747
+ sdk.api.calendar_events.deleteOne(eOneReminderDidRemind.id),
4748
+ sdk.api.calendar_events.deleteOne(eOneReminder.id),
4749
+ ])
4750
+ }
4751
+
4592
4752
  const NO_TEST = () => {}
4593
4753
  const tests: { [K in keyof ClientModelForName]: () => void } = {
4594
4754
  phone_trees: NO_TEST,
@@ -4697,6 +4857,7 @@ const TRACK_OPEN_IMAGE = Buffer.from(
4697
4857
 
4698
4858
  await mfa_tests()
4699
4859
  await setup_tests()
4860
+ await nextReminderInMS_tests()
4700
4861
  await search_tests()
4701
4862
  await wait_for_trigger_tests()
4702
4863
  await role_based_access_tests()
@@ -453,6 +453,16 @@ const calendar_event_reminders_tests = async (isSubscribed: boolean) => {
453
453
  'First calendar event reminder received',
454
454
  true,
455
455
  )
456
+ await async_test(
457
+ 'First reminder progress',
458
+ () => sdk.api.calendar_events.getOne(calendarEvent.id),
459
+ { onResult: c => (
460
+ c.nextReminderInMS === c.startTimeInMS - secondRemindAt
461
+ && c.reminders?.filter(r => r.didRemind).length === 1
462
+ && c.startTimeInMS === calendarEvent.startTimeInMS // ensure this isn't changed in background
463
+ )
464
+ }
465
+ )
456
466
 
457
467
  await wait(undefined, AUTOMATION_POLLING_DELAY_MS)
458
468
  await check_next_webhook(
@@ -461,6 +471,16 @@ const calendar_event_reminders_tests = async (isSubscribed: boolean) => {
461
471
  'Got calendar event webhook too early',
462
472
  true, true,
463
473
  )
474
+ await async_test(
475
+ 'First reminder progress pending',
476
+ () => sdk.api.calendar_events.getOne(calendarEvent.id),
477
+ { onResult: c => (
478
+ c.nextReminderInMS === c.startTimeInMS - secondRemindAt
479
+ && c.reminders?.filter(r => r.didRemind).length === 1
480
+ && c.startTimeInMS === calendarEvent.startTimeInMS // ensure this isn't changed in background
481
+ )
482
+ }
483
+ )
464
484
 
465
485
  await wait(undefined, AUTOMATION_POLLING_DELAY_MS)
466
486
  await check_next_webhook(
@@ -473,6 +493,16 @@ const calendar_event_reminders_tests = async (isSubscribed: boolean) => {
473
493
  'First calendar event reminder received',
474
494
  true
475
495
  )
496
+ await async_test(
497
+ 'Second reminder progress',
498
+ () => sdk.api.calendar_events.getOne(calendarEvent.id),
499
+ { onResult: c => (
500
+ c.nextReminderInMS === c.startTimeInMS - thirdRemindAt
501
+ && c.reminders?.filter(r => r.didRemind).length === 2
502
+ && c.startTimeInMS === calendarEvent.startTimeInMS // ensure this isn't changed in background
503
+ )
504
+ }
505
+ )
476
506
 
477
507
  await wait(undefined, AUTOMATION_POLLING_DELAY_MS)
478
508
  await check_next_webhook(
@@ -481,6 +511,16 @@ const calendar_event_reminders_tests = async (isSubscribed: boolean) => {
481
511
  'Got calendar event webhook too early',
482
512
  true, true,
483
513
  )
514
+ await async_test(
515
+ 'Second reminder progress pending',
516
+ () => sdk.api.calendar_events.getOne(calendarEvent.id),
517
+ { onResult: c => (
518
+ c.nextReminderInMS === c.startTimeInMS - thirdRemindAt
519
+ && c.reminders?.filter(r => r.didRemind).length === 2
520
+ && c.startTimeInMS === calendarEvent.startTimeInMS // ensure this isn't changed in background
521
+ )
522
+ }
523
+ )
484
524
 
485
525
  await wait(undefined, AUTOMATION_POLLING_DELAY_MS)
486
526
  await check_next_webhook(
@@ -503,6 +543,16 @@ const calendar_event_reminders_tests = async (isSubscribed: boolean) => {
503
543
  true, true,
504
544
  )
505
545
 
546
+ await async_test(
547
+ 'Reminders are done processing',
548
+ () => sdk.api.calendar_events.getOne(calendarEvent.id),
549
+ { onResult: c => (
550
+ c.nextReminderInMS === -1
551
+ && c.startTimeInMS === calendarEvent.startTimeInMS // ensure this isn't changed in background
552
+ && !c.reminders?.find(r => !r.didRemind)
553
+ && c.reminders?.filter(r => r.didRemind).length === 3
554
+ )}
555
+ )
506
556
 
507
557
  // cleanup
508
558
  await sdk.api.calendar_events.deleteOne(calendarEvent.id)
Binary file