@tellescope/sdk 1.67.11 → 1.67.13
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.
- package/lib/cjs/enduser.d.ts +20 -0
- package/lib/cjs/enduser.d.ts.map +1 -1
- package/lib/cjs/sdk.d.ts +46 -0
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +2 -0
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts +1 -0
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +222 -108
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/enduser.d.ts +20 -0
- package/lib/esm/enduser.d.ts.map +1 -1
- package/lib/esm/sdk.d.ts +48 -2
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +2 -0
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/session.d.ts +1 -0
- package/lib/esm/session.d.ts.map +1 -1
- package/lib/esm/tests/tests.d.ts +1 -0
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +220 -107
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/sdk.ts +6 -0
- package/src/tests/tests.ts +137 -6
- package/test_generated.pdf +0 -0
package/src/tests/tests.ts
CHANGED
|
@@ -2752,7 +2752,7 @@ const addToJourneyTests = async () => {
|
|
|
2752
2752
|
sdk.api.automated_actions.getSome,
|
|
2753
2753
|
es => es.length === 2,
|
|
2754
2754
|
100,
|
|
2755
|
-
|
|
2755
|
+
100,
|
|
2756
2756
|
),
|
|
2757
2757
|
|
|
2758
2758
|
await sdk.api.endusers.add_to_journey({ enduserIds: [enduser.id], journeyId: journey.id })
|
|
@@ -4850,7 +4850,7 @@ const remove_from_journey_on_incoming_comms_tests = async () => {
|
|
|
4850
4850
|
)
|
|
4851
4851
|
),
|
|
4852
4852
|
100,
|
|
4853
|
-
|
|
4853
|
+
10,
|
|
4854
4854
|
),
|
|
4855
4855
|
passOnAnyResult
|
|
4856
4856
|
)
|
|
@@ -5106,6 +5106,8 @@ const test_ticket_automation_assignment_and_optimization = async () => {
|
|
|
5106
5106
|
|
|
5107
5107
|
const journey = await sdk.api.journeys.createOne({ title: "Testing" })
|
|
5108
5108
|
|
|
5109
|
+
const queue = await sdk.api.ticket_queues.createOne({ title: 'test queue', userIds: [] })
|
|
5110
|
+
|
|
5109
5111
|
let foregroundTestCounter = 0
|
|
5110
5112
|
const testForegroundTicket = async ({
|
|
5111
5113
|
assignedTo,
|
|
@@ -5122,6 +5124,7 @@ const test_ticket_automation_assignment_and_optimization = async () => {
|
|
|
5122
5124
|
enduser?: Enduser,
|
|
5123
5125
|
testDelayedChild?: boolean,
|
|
5124
5126
|
}) => {
|
|
5127
|
+
|
|
5125
5128
|
const e = enduser || await sdk.api.endusers.createOne({ assignedTo, journeys: { [journey.id]: '' } })
|
|
5126
5129
|
|
|
5127
5130
|
const step = await sdk.api.automation_steps.createOne({
|
|
@@ -5164,7 +5167,10 @@ const test_ticket_automation_assignment_and_optimization = async () => {
|
|
|
5164
5167
|
await async_test(
|
|
5165
5168
|
`Foreground ticket assignment ${++foregroundTestCounter}`,
|
|
5166
5169
|
() => sdk.api.tickets.close_ticket({ ticketId: ticket.id, closedForReason }),
|
|
5167
|
-
{ onResult: ({ generated }) =>
|
|
5170
|
+
{ onResult: ({ generated }) =>
|
|
5171
|
+
(validOwners.length === 0 && generated?.queueId === queue.id && !generated.owner)
|
|
5172
|
+
|| (!!generated?.owner && validOwners.includes(generated.owner) )
|
|
5173
|
+
}
|
|
5168
5174
|
)
|
|
5169
5175
|
await async_test(
|
|
5170
5176
|
`Foreground ticket nop, no duplicates`,
|
|
@@ -5196,6 +5202,15 @@ const test_ticket_automation_assignment_and_optimization = async () => {
|
|
|
5196
5202
|
])
|
|
5197
5203
|
}
|
|
5198
5204
|
|
|
5205
|
+
await testForegroundTicket({
|
|
5206
|
+
assignedTo: [],
|
|
5207
|
+
info: {
|
|
5208
|
+
assignmentStrategy: { type: 'queue', info: { queueId: queue.id } } ,
|
|
5209
|
+
defaultAssignee: sdk.userInfo.id
|
|
5210
|
+
},
|
|
5211
|
+
validOwners: [],
|
|
5212
|
+
testDelayedChild: true,
|
|
5213
|
+
})
|
|
5199
5214
|
await testForegroundTicket({
|
|
5200
5215
|
assignedTo: [],
|
|
5201
5216
|
info: {
|
|
@@ -5298,13 +5313,28 @@ const test_ticket_automation_assignment_and_optimization = async () => {
|
|
|
5298
5313
|
|
|
5299
5314
|
await async_test(
|
|
5300
5315
|
`Background ticket assignment ${++backgroundTestCounter}`,
|
|
5301
|
-
() => pollForResults(() => sdk.api.tickets.getSome({ filter: { enduserId: e.id, title: 'background ticket' } }), t => !!t.length),
|
|
5302
|
-
{
|
|
5316
|
+
() => pollForResults(() => sdk.api.tickets.getSome({ filter: { enduserId: e.id, title: 'background ticket' } }), t => !!t.length, 500, 20),
|
|
5317
|
+
{
|
|
5318
|
+
onResult: ts => (
|
|
5319
|
+
ts.length === 1 && (
|
|
5320
|
+
(validOwners.length === 0 && ts[0].queueId === queue.id && !ts[0].owner)
|
|
5321
|
+
||(!!ts[0].owner && validOwners.includes(ts[0].owner) )
|
|
5322
|
+
)
|
|
5323
|
+
)
|
|
5324
|
+
}
|
|
5303
5325
|
)
|
|
5304
5326
|
|
|
5305
5327
|
await sdk.api.endusers.deleteOne(e.id)
|
|
5306
5328
|
}
|
|
5307
5329
|
|
|
5330
|
+
await testBackgroundTicket({
|
|
5331
|
+
assignedTo: [],
|
|
5332
|
+
info: {
|
|
5333
|
+
assignmentStrategy: { type: 'queue', info: { queueId: queue.id } } ,
|
|
5334
|
+
defaultAssignee: sdk.userInfo.id
|
|
5335
|
+
},
|
|
5336
|
+
validOwners: [],
|
|
5337
|
+
})
|
|
5308
5338
|
await testBackgroundTicket({
|
|
5309
5339
|
assignedTo: [],
|
|
5310
5340
|
info: {
|
|
@@ -5380,7 +5410,8 @@ const test_ticket_automation_assignment_and_optimization = async () => {
|
|
|
5380
5410
|
})
|
|
5381
5411
|
|
|
5382
5412
|
return Promise.all([
|
|
5383
|
-
await sdk.api.journeys.deleteOne(journey.id)
|
|
5413
|
+
await sdk.api.journeys.deleteOne(journey.id),
|
|
5414
|
+
await sdk.api.ticket_queues.deleteOne(queue.id),
|
|
5384
5415
|
])
|
|
5385
5416
|
}
|
|
5386
5417
|
|
|
@@ -5555,8 +5586,107 @@ export const no_chained_triggers_tests = async () => {
|
|
|
5555
5586
|
])
|
|
5556
5587
|
}
|
|
5557
5588
|
|
|
5589
|
+
export const ticket_queue_tests = async () => {
|
|
5590
|
+
log_header("Ticket Queue Tests")
|
|
5591
|
+
|
|
5592
|
+
const queue = await sdk.api.ticket_queues.createOne({ title: 'queue', userIds: [sdkNonAdmin.userInfo.id] })
|
|
5593
|
+
const queueUnshared = await sdk.api.ticket_queues.createOne({ title: 'queue unshared', userIds: [] })
|
|
5594
|
+
|
|
5595
|
+
const enduser = await sdk.api.endusers.createOne({ fname: 'ticket' })
|
|
5596
|
+
|
|
5597
|
+
const ticket = await sdk.api.tickets.createOne({ title: 'ticket in queue', queueId: queue.id, enduserId: enduser.id })
|
|
5598
|
+
const ticketUnshared = await sdk.api.tickets.createOne({ title: 'ticket no access', queueId: queueUnshared.id })
|
|
5599
|
+
|
|
5600
|
+
await async_test(
|
|
5601
|
+
`Admin ticket access`,
|
|
5602
|
+
sdk.api.tickets.getSome,
|
|
5603
|
+
{ onResult: ts => ts.length === 2 },
|
|
5604
|
+
)
|
|
5605
|
+
await async_test(
|
|
5606
|
+
`Admin ticket access (specified queue)`,
|
|
5607
|
+
() => sdk.api.tickets.getSome({ filter: { queueId: queue.id }}),
|
|
5608
|
+
{ onResult: ts => ts.length === 1 },
|
|
5609
|
+
)
|
|
5610
|
+
await async_test(
|
|
5611
|
+
`Admin ticket access (specified queue, other)`,
|
|
5612
|
+
() => sdk.api.tickets.getSome({ filter: { queueId: queueUnshared.id }}),
|
|
5613
|
+
{ onResult: ts => ts.length === 1 },
|
|
5614
|
+
)
|
|
5615
|
+
await async_test(
|
|
5616
|
+
`Non-Admin ticket access (unspecified queue)`,
|
|
5617
|
+
sdkNonAdmin.api.tickets.getSome,
|
|
5618
|
+
{ onResult: ts => ts.length === 0 },
|
|
5619
|
+
)
|
|
5620
|
+
await async_test(
|
|
5621
|
+
`Non-Admin ticket access (specified queue)`,
|
|
5622
|
+
() => sdkNonAdmin.api.tickets.getSome({ filter: { queueId: queue.id }}),
|
|
5623
|
+
{ onResult: ts => ts.length === 1 },
|
|
5624
|
+
)
|
|
5625
|
+
await async_test(
|
|
5626
|
+
`Non-Admin ticket access (specified queue, no access)`,
|
|
5627
|
+
() => sdkNonAdmin.api.tickets.getSome({ filter: { queueId: queueUnshared.id }}),
|
|
5628
|
+
handleAnyError
|
|
5629
|
+
)
|
|
5630
|
+
|
|
5631
|
+
await async_test(
|
|
5632
|
+
`Queue caches number of tickets on add`,
|
|
5633
|
+
() => sdk.api.ticket_queues.getOne(queue.id),
|
|
5634
|
+
{ onResult: q => q.count === 1 },
|
|
5635
|
+
)
|
|
5636
|
+
await async_test(
|
|
5637
|
+
`Non-Admin can assign ticket to self`,
|
|
5638
|
+
() => sdkNonAdmin.api.tickets.assign_from_queue({ ticketId: ticket.id }),
|
|
5639
|
+
{ onResult: ({ ticket }) => ticket.owner === sdkNonAdmin.userInfo.id && !ticket.queueId && !!ticket.dequeuedAt }
|
|
5640
|
+
)
|
|
5641
|
+
await async_test(
|
|
5642
|
+
`Ticket can't be double-assigned ticket to self`,
|
|
5643
|
+
() => sdk.api.tickets.assign_from_queue({ ticketId: ticket.id }),
|
|
5644
|
+
handleAnyError
|
|
5645
|
+
)
|
|
5646
|
+
await async_test(
|
|
5647
|
+
`Non-Admin ticket cannot assign ticket to self when can't access queue`,
|
|
5648
|
+
() => sdkNonAdmin.api.tickets.assign_from_queue({ ticketId: ticketUnshared.id }),
|
|
5649
|
+
handleAnyError
|
|
5650
|
+
)
|
|
5651
|
+
await async_test(
|
|
5652
|
+
`Non-Admin can access ticket after assignment`,
|
|
5653
|
+
() => sdkNonAdmin.api.tickets.getOne(ticket.id),
|
|
5654
|
+
{ onResult: ticket => ticket.owner === sdkNonAdmin.userInfo.id && !ticket.queueId && !!ticket }
|
|
5655
|
+
)
|
|
5656
|
+
|
|
5657
|
+
await async_test(
|
|
5658
|
+
`Queue caches number of tickets on assignment`,
|
|
5659
|
+
() => pollForResults(
|
|
5660
|
+
() => sdk.api.ticket_queues.getOne(queue.id),
|
|
5661
|
+
q => q.count === 0,
|
|
5662
|
+
50,
|
|
5663
|
+
10
|
|
5664
|
+
),
|
|
5665
|
+
passOnAnyResult
|
|
5666
|
+
)
|
|
5667
|
+
await async_test(
|
|
5668
|
+
`Queue caches number of tickets on assignment`,
|
|
5669
|
+
() => pollForResults(
|
|
5670
|
+
() => sdkNonAdmin.api.endusers.getOne(enduser.id),
|
|
5671
|
+
e => !!e.assignedTo?.includes(sdkNonAdmin.userInfo.id),
|
|
5672
|
+
50,
|
|
5673
|
+
10
|
|
5674
|
+
),
|
|
5675
|
+
passOnAnyResult
|
|
5676
|
+
)
|
|
5677
|
+
|
|
5678
|
+
|
|
5679
|
+
await Promise.all([
|
|
5680
|
+
sdk.api.ticket_queues.deleteOne(queue.id),
|
|
5681
|
+
sdk.api.ticket_queues.deleteOne(queueUnshared.id),
|
|
5682
|
+
sdk.api.endusers.deleteOne(enduser.id), // cleans up ticket
|
|
5683
|
+
sdk.api.tickets.deleteOne(ticketUnshared.id),
|
|
5684
|
+
])
|
|
5685
|
+
}
|
|
5686
|
+
|
|
5558
5687
|
const NO_TEST = () => {}
|
|
5559
5688
|
const tests: { [K in keyof ClientModelForName]: () => void } = {
|
|
5689
|
+
ticket_queues: NO_TEST,
|
|
5560
5690
|
phone_trees: NO_TEST,
|
|
5561
5691
|
enduser_medications: NO_TEST,
|
|
5562
5692
|
automation_triggers: NO_TEST,
|
|
@@ -5695,6 +5825,7 @@ const validate_schema = () => {
|
|
|
5695
5825
|
await mfa_tests()
|
|
5696
5826
|
await setup_tests()
|
|
5697
5827
|
await multi_tenant_tests() // should come right after setup tests
|
|
5828
|
+
await ticket_queue_tests()
|
|
5698
5829
|
await no_chained_triggers_tests()
|
|
5699
5830
|
await field_equals_trigger_tests()
|
|
5700
5831
|
await test_ticket_automation_assignment_and_optimization()
|
package/test_generated.pdf
CHANGED
|
Binary file
|