@tellescope/sdk 1.67.6 → 1.67.7
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/sdk.d.ts +1 -0
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +1 -0
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +139 -146
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/enduser.d.ts +0 -1
- package/lib/esm/enduser.d.ts.map +1 -1
- package/lib/esm/sdk.d.ts +1 -1
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +1 -0
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +139 -146
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/sdk.ts +4 -0
- package/src/tests/tests.ts +114 -66
- package/test_generated.pdf +0 -0
package/src/tests/tests.ts
CHANGED
|
@@ -690,6 +690,7 @@ const run_generated_tests = async <N extends ModelName>({ queries, model, name,
|
|
|
690
690
|
() => queries.createOne(instance),
|
|
691
691
|
{ onResult: r => !!(_id = r.id) && (name === 'api_keys' || !!r.creator) && validateReturnType(returns.create, r, defaultValidation) }
|
|
692
692
|
)
|
|
693
|
+
await wait(undefined, 25)
|
|
693
694
|
await async_test(
|
|
694
695
|
`log-${singularName} create`,
|
|
695
696
|
() => sdk.api.user_logs.getOne({ resourceId: _id, resource: name, action: 'create' }),
|
|
@@ -702,6 +703,7 @@ const run_generated_tests = async <N extends ModelName>({ queries, model, name,
|
|
|
702
703
|
() => queries.updateOne(_id, updates, { replaceObjectFields: true }),
|
|
703
704
|
{ onResult: u => typeof u === 'object' && u.id === _id }
|
|
704
705
|
)
|
|
706
|
+
await wait(undefined, 25)
|
|
705
707
|
await async_test(
|
|
706
708
|
`log-${singularName} update`,
|
|
707
709
|
() => sdk.api.user_logs.getOne({ resourceId: _id, resource: name, action: 'update' }),
|
|
@@ -743,6 +745,7 @@ const run_generated_tests = async <N extends ModelName>({ queries, model, name,
|
|
|
743
745
|
() => queries.deleteOne(_id),
|
|
744
746
|
passOnVoid
|
|
745
747
|
)
|
|
748
|
+
await wait(undefined, 25)
|
|
746
749
|
await async_test(
|
|
747
750
|
`get-${singularName} (verify delete)`,
|
|
748
751
|
() => queries.getOne(_id),
|
|
@@ -1501,6 +1504,7 @@ const files_tests = async () => {
|
|
|
1501
1504
|
const enduser = await sdk.api.endusers.createOne({ email })
|
|
1502
1505
|
await sdk.api.endusers.set_password({ id: enduser.id, password }).catch(console.error)
|
|
1503
1506
|
await enduserSDK.authenticate(email, password).catch(console.error)
|
|
1507
|
+
await sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword) // to use new role, handle logout on role change
|
|
1504
1508
|
|
|
1505
1509
|
const buff = buffer.Buffer.from('test file data')
|
|
1506
1510
|
|
|
@@ -1933,12 +1937,16 @@ const ticketEventTests = async () => {
|
|
|
1933
1937
|
|
|
1934
1938
|
await sdk.api.endusers.updateOne(enduser.id, { journeys: { [journey.id]: 'Added' }})
|
|
1935
1939
|
await sdk.api.endusers.updateOne(enduserWithTeam.id, { journeys: { [nullJourney.id]: 'Added (Null)' }})
|
|
1936
|
-
await wait(undefined, 2250) // wait for tickets to be automatically created
|
|
1937
1940
|
|
|
1938
1941
|
await async_test(
|
|
1939
1942
|
`Tickets automatically created`,
|
|
1940
|
-
() =>
|
|
1941
|
-
|
|
1943
|
+
() => pollForResults(
|
|
1944
|
+
sdk.api.tickets.getSome,
|
|
1945
|
+
tickets => tickets?.length === 2,
|
|
1946
|
+
500,
|
|
1947
|
+
15,
|
|
1948
|
+
),
|
|
1949
|
+
passOnAnyResult
|
|
1942
1950
|
)
|
|
1943
1951
|
|
|
1944
1952
|
await async_test(
|
|
@@ -2050,11 +2058,15 @@ const removeFromJourneyTests = async () => {
|
|
|
2050
2058
|
{ onResult: e => e.journeys?.[journey.id] !== 'Delayed Step' }
|
|
2051
2059
|
)
|
|
2052
2060
|
|
|
2053
|
-
await wait(undefined, 4 * TEST_DELAY) // wait long enough for automation to process and delay to pass
|
|
2054
2061
|
await async_test(
|
|
2055
2062
|
`Sequenced action triggered`,
|
|
2056
|
-
() =>
|
|
2057
|
-
|
|
2063
|
+
() => pollForResults(
|
|
2064
|
+
() => sdk.api.endusers.getOne(enduser.id),
|
|
2065
|
+
e => e.journeys?.[journey.id] === 'Delayed Step',
|
|
2066
|
+
TEST_DELAY,
|
|
2067
|
+
15,
|
|
2068
|
+
),
|
|
2069
|
+
passOnAnyResult
|
|
2058
2070
|
)
|
|
2059
2071
|
|
|
2060
2072
|
await Promise.all([
|
|
@@ -2238,11 +2250,15 @@ export const formUnsubmittedCancelConditionTest = async () => {
|
|
|
2238
2250
|
})
|
|
2239
2251
|
|
|
2240
2252
|
// allow fast followup to trigger
|
|
2241
|
-
await wait(undefined, 4000) // allow background creation with generous pause
|
|
2242
2253
|
await async_test(
|
|
2243
2254
|
`formUnsubmitted event with short delay is triggered`,
|
|
2244
|
-
() =>
|
|
2245
|
-
|
|
2255
|
+
() => pollForResults(
|
|
2256
|
+
() => sdk.api.endusers.getOne(enduser.id),
|
|
2257
|
+
e => e?.journeys?.[journey.id] === 'triggered again',
|
|
2258
|
+
1000,
|
|
2259
|
+
10,
|
|
2260
|
+
),
|
|
2261
|
+
passOnAnyResult
|
|
2246
2262
|
)
|
|
2247
2263
|
|
|
2248
2264
|
// trigger cancel conditions
|
|
@@ -2431,8 +2447,13 @@ export const formsUnsubmittedCancelConditionTest = async () => {
|
|
|
2431
2447
|
)
|
|
2432
2448
|
await async_test(
|
|
2433
2449
|
`formResponses triggered after both forms submitted`,
|
|
2434
|
-
() =>
|
|
2435
|
-
|
|
2450
|
+
() => pollForResults(
|
|
2451
|
+
() => sdk.api.endusers.getOne(enduser.id),
|
|
2452
|
+
e => e?.journeys?.[journey.id] === 'formsSubmitted',
|
|
2453
|
+
500,
|
|
2454
|
+
10,
|
|
2455
|
+
),
|
|
2456
|
+
passOnAnyResult
|
|
2436
2457
|
)
|
|
2437
2458
|
|
|
2438
2459
|
await Promise.all([
|
|
@@ -2509,13 +2530,15 @@ export const formsUnsubmittedTest = async () => {
|
|
|
2509
2530
|
|
|
2510
2531
|
const form_responses = await sdk.api.form_responses.getSome()
|
|
2511
2532
|
|
|
2512
|
-
// allow fast followup to trigger
|
|
2513
|
-
await wait(undefined, 5000) // allow background creation with generous pause
|
|
2514
|
-
|
|
2515
2533
|
await async_test(
|
|
2516
2534
|
`formsUnsubmitted handler worked`,
|
|
2517
|
-
() =>
|
|
2518
|
-
|
|
2535
|
+
() => pollForResults(
|
|
2536
|
+
() => sdk.api.endusers.getOne(enduser.id),
|
|
2537
|
+
e => e?.journeys?.[journey.id] === 'triggered',
|
|
2538
|
+
1000,
|
|
2539
|
+
10
|
|
2540
|
+
),
|
|
2541
|
+
passOnAnyResult,
|
|
2519
2542
|
)
|
|
2520
2543
|
|
|
2521
2544
|
// trigger cancel conditions
|
|
@@ -2723,27 +2746,37 @@ const addToJourneyTests = async () => {
|
|
|
2723
2746
|
{ onResult: e => e.journeys?.[journey.id] === '' || e.journeys?.[journey.id] === 'Root' }
|
|
2724
2747
|
)
|
|
2725
2748
|
|
|
2726
|
-
|
|
2749
|
+
// ensure that second step is generated before first is cancelled
|
|
2750
|
+
await pollForResults(
|
|
2751
|
+
sdk.api.automated_actions.getSome,
|
|
2752
|
+
es => es.length === 2,
|
|
2753
|
+
100,
|
|
2754
|
+
50,
|
|
2755
|
+
),
|
|
2756
|
+
|
|
2727
2757
|
await sdk.api.endusers.add_to_journey({ enduserIds: [enduser.id], journeyId: journey.id })
|
|
2728
2758
|
|
|
2759
|
+
await async_test(
|
|
2760
|
+
`Enduser correctly added and re-added`,
|
|
2761
|
+
() => pollForResults(
|
|
2762
|
+
sdk.api.automated_actions.getSome,
|
|
2763
|
+
es => (es.length === 4
|
|
2764
|
+
&& es.filter(e => e.status === 'cancelled' && e.automationStepId === follow.id).length === 1 // one afterAction is cancelled
|
|
2765
|
+
&& es.filter(e => e.status === 'active' && e.automationStepId === follow.id).length === 1 // one afterAction is still active
|
|
2766
|
+
&& es.filter(e => e.status === 'finished' && e.automationStepId === root.id).length === 2 // two initial onJourneyStart
|
|
2767
|
+
),
|
|
2768
|
+
250,
|
|
2769
|
+
40
|
|
2770
|
+
),
|
|
2771
|
+
passOnAnyResult
|
|
2772
|
+
)
|
|
2773
|
+
|
|
2729
2774
|
await async_test(
|
|
2730
2775
|
`Enduser throttle journey add working`,
|
|
2731
2776
|
() => sdk.api.endusers.add_to_journey({ enduserIds: [enduser.id], journeyId: journey.id, throttle: true }),
|
|
2732
2777
|
handleAnyError
|
|
2733
2778
|
)
|
|
2734
2779
|
|
|
2735
|
-
await wait(undefined, 4000) // allow onJourneyStart step to trigger
|
|
2736
|
-
|
|
2737
|
-
await async_test(
|
|
2738
|
-
`Enduser correctly added and re-added`,
|
|
2739
|
-
() => sdk.api.automated_actions.getSome(),
|
|
2740
|
-
{ onResult: es => es.length === 4
|
|
2741
|
-
&& es.filter(e => e.status === 'cancelled' && e.automationStepId === follow.id).length === 1 // one afterAction is cancelled
|
|
2742
|
-
&& es.filter(e => e.status === 'active' && e.automationStepId === follow.id).length === 1 // one afterAction is still active
|
|
2743
|
-
&& es.filter(e => e.status === 'finished' && e.automationStepId === root.id).length === 2 // two initial onJourneyStart
|
|
2744
|
-
}
|
|
2745
|
-
)
|
|
2746
|
-
|
|
2747
2780
|
await Promise.all([
|
|
2748
2781
|
sdk.api.journeys.deleteOne(journey.id),
|
|
2749
2782
|
sdk.api.endusers.deleteOne(enduser.id),
|
|
@@ -4280,15 +4313,19 @@ const run_autoreply_test = async (title: string, { expectingAutoreply } : { expe
|
|
|
4280
4313
|
)
|
|
4281
4314
|
|
|
4282
4315
|
await enduserSDK.api.chats.createOne({ roomId: room.id, message: 'enduser' })
|
|
4283
|
-
await wait (undefined, 50)
|
|
4284
4316
|
await async_test(
|
|
4285
4317
|
'Main test',
|
|
4286
|
-
() =>
|
|
4287
|
-
|
|
4288
|
-
|
|
4289
|
-
|
|
4290
|
-
|
|
4291
|
-
|
|
4318
|
+
() => pollForResults(
|
|
4319
|
+
() => sdk.api.chats.getSome({ filter: { roomId: room.id }}),
|
|
4320
|
+
cs => (
|
|
4321
|
+
expectingAutoreply
|
|
4322
|
+
? cs.length === 3
|
|
4323
|
+
: cs.length === 2
|
|
4324
|
+
),
|
|
4325
|
+
25,
|
|
4326
|
+
10
|
|
4327
|
+
),
|
|
4328
|
+
passOnAnyResult
|
|
4292
4329
|
)
|
|
4293
4330
|
|
|
4294
4331
|
await enduserSDK.api.chats.createOne({ roomId: room.id, message: 'enduser again' })
|
|
@@ -4605,11 +4642,15 @@ const wait_for_trigger_tests = async () => {
|
|
|
4605
4642
|
])
|
|
4606
4643
|
|
|
4607
4644
|
// test trigger cleaned up on journey delete
|
|
4608
|
-
await wait(undefined, 150)
|
|
4609
4645
|
await async_test(
|
|
4610
|
-
"Trigger
|
|
4611
|
-
() =>
|
|
4612
|
-
|
|
4646
|
+
"Trigger cleaned up by journey deletion",
|
|
4647
|
+
() => pollForResults(
|
|
4648
|
+
sdk.api.automation_triggers.getSome,
|
|
4649
|
+
results => !results.find(r => r.id === trigger.id),
|
|
4650
|
+
100,
|
|
4651
|
+
10,
|
|
4652
|
+
),
|
|
4653
|
+
passOnAnyResult
|
|
4613
4654
|
)
|
|
4614
4655
|
|
|
4615
4656
|
// double-check that wait for trigger step triggers were deleted
|
|
@@ -4757,38 +4798,41 @@ const remove_from_journey_on_incoming_comms_tests = async () => {
|
|
|
4757
4798
|
|
|
4758
4799
|
const room = await sdk.api.chat_rooms.createOne({ })
|
|
4759
4800
|
await sdk.api.chats.createOne({ roomId: room.id, senderId: e1.id, message: 'cancel' })
|
|
4760
|
-
await wait(undefined, 100)
|
|
4761
4801
|
|
|
4762
|
-
console.log(jRemove.id, removeStep2.id, e1.id)
|
|
4763
4802
|
await async_test(
|
|
4764
4803
|
"Appropriate Automated Actions are cancelled on incoming message",
|
|
4765
|
-
() =>
|
|
4766
|
-
|
|
4767
|
-
|
|
4804
|
+
() => pollForResults(
|
|
4805
|
+
sdk.api.automated_actions.getSome,
|
|
4806
|
+
actions => (
|
|
4807
|
+
!!actions.find(a =>
|
|
4808
|
+
a.journeyId === jRemove.id
|
|
4809
|
+
&& a.automationStepId === removeStep1.id
|
|
4810
|
+
&& a.enduserId === e1.id
|
|
4811
|
+
&& a.status === 'cancelled'
|
|
4812
|
+
)
|
|
4813
|
+
&& !!actions.find(a =>
|
|
4768
4814
|
a.journeyId === jRemove.id
|
|
4769
4815
|
&& a.automationStepId === removeStep1.id
|
|
4816
|
+
&& a.enduserId === e2.id
|
|
4817
|
+
&& a.status === 'active'
|
|
4818
|
+
)
|
|
4819
|
+
&& !!actions.find(a =>
|
|
4820
|
+
a.journeyId === jDontRemove.id
|
|
4821
|
+
&& a.automationStepId === dontRemoveStep1.id
|
|
4770
4822
|
&& a.enduserId === e1.id
|
|
4771
|
-
&& a.status === '
|
|
4823
|
+
&& a.status === 'active'
|
|
4772
4824
|
)
|
|
4773
|
-
|
|
4774
|
-
|
|
4775
|
-
|
|
4776
|
-
|
|
4777
|
-
|
|
4778
|
-
|
|
4779
|
-
|
|
4780
|
-
|
|
4781
|
-
|
|
4782
|
-
|
|
4783
|
-
|
|
4784
|
-
)
|
|
4785
|
-
&& !!actions.find(a =>
|
|
4786
|
-
a.journeyId === jDontRemove.id
|
|
4787
|
-
&& a.automationStepId === dontRemoveStep1.id
|
|
4788
|
-
&& a.enduserId === e2.id
|
|
4789
|
-
&& a.status === 'active'
|
|
4790
|
-
)
|
|
4791
|
-
)}
|
|
4825
|
+
&& !!actions.find(a =>
|
|
4826
|
+
a.journeyId === jDontRemove.id
|
|
4827
|
+
&& a.automationStepId === dontRemoveStep1.id
|
|
4828
|
+
&& a.enduserId === e2.id
|
|
4829
|
+
&& a.status === 'active'
|
|
4830
|
+
)
|
|
4831
|
+
),
|
|
4832
|
+
25,
|
|
4833
|
+
20,
|
|
4834
|
+
),
|
|
4835
|
+
passOnAnyResult,
|
|
4792
4836
|
)
|
|
4793
4837
|
|
|
4794
4838
|
await sdk.api.journeys.handle_incoming_communication({ enduserId: e2.id })
|
|
@@ -4816,6 +4860,8 @@ const remove_from_journey_on_incoming_comms_tests = async () => {
|
|
|
4816
4860
|
}
|
|
4817
4861
|
|
|
4818
4862
|
const pdf_generation = async () => {
|
|
4863
|
+
log_header("pdf_generation Tests")
|
|
4864
|
+
|
|
4819
4865
|
const e = await sdk.api.endusers.createOne({ fname: 'test' })
|
|
4820
4866
|
|
|
4821
4867
|
// include lots of answers to ensure PDF height doesn't produce any cut-off
|
|
@@ -4850,7 +4896,6 @@ const pdf_generation = async () => {
|
|
|
4850
4896
|
|
|
4851
4897
|
await Promise.all([
|
|
4852
4898
|
sdk.api.endusers.deleteOne(e.id),
|
|
4853
|
-
sdk.api.form_responses.deleteOne(fr.id),
|
|
4854
4899
|
])
|
|
4855
4900
|
}
|
|
4856
4901
|
|
|
@@ -5033,12 +5078,15 @@ const nextReminderInMS_tests = async () => {
|
|
|
5033
5078
|
}
|
|
5034
5079
|
|
|
5035
5080
|
const pollForResults = async <T>(f: () => Promise<T>, evaluate: (r: T) => boolean, intervalInMS=500, iterations=20) => {
|
|
5081
|
+
let lastResult = undefined as any
|
|
5036
5082
|
for (let i = 0; i < iterations; i++) {
|
|
5037
5083
|
await wait(undefined, intervalInMS)
|
|
5038
5084
|
const result = await f()
|
|
5085
|
+
lastResult = result
|
|
5039
5086
|
if (evaluate(result)) return result
|
|
5040
5087
|
}
|
|
5041
5088
|
|
|
5089
|
+
console.log(lastResult)
|
|
5042
5090
|
throw new Error("failed pollForResults")
|
|
5043
5091
|
}
|
|
5044
5092
|
|
package/test_generated.pdf
CHANGED
|
Binary file
|