@tellescope/sdk 1.4.0 → 1.4.3
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 +0 -1
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +2 -4
- package/lib/cjs/sdk.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +121 -43
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/sdk.d.ts +0 -1
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +2 -4
- package/lib/esm/sdk.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +122 -44
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/sdk.ts +5 -3
- package/src/tests/tests.ts +80 -32
package/src/tests/tests.ts
CHANGED
|
@@ -21,10 +21,11 @@ import {
|
|
|
21
21
|
} from "@tellescope/types-utilities"
|
|
22
22
|
|
|
23
23
|
import {
|
|
24
|
-
|
|
25
|
-
mongoIdValidator,
|
|
24
|
+
fieldsToValidationOld,
|
|
26
25
|
|
|
27
26
|
InputValidation,
|
|
27
|
+
InputValidationOld,
|
|
28
|
+
mongoIdStringRequired,
|
|
28
29
|
} from "@tellescope/validation"
|
|
29
30
|
|
|
30
31
|
import { Session, APIQuery, EnduserSession } from "../sdk"
|
|
@@ -470,9 +471,9 @@ const verify_missing_defaults = async <N extends ModelName>({ queries, model, na
|
|
|
470
471
|
// }
|
|
471
472
|
// const isMongoId = validator_to_boolean(mongoIdValidator())
|
|
472
473
|
|
|
473
|
-
type DefaultValidation =
|
|
474
|
+
type DefaultValidation = InputValidationOld<{ _default: boolean, id: string }>
|
|
474
475
|
const validateReturnType = <N extends ModelName, T=ClientModelForName[N]>(fs: ModelFields<T> | undefined, r: T, d: DefaultValidation) => {
|
|
475
|
-
const validation =
|
|
476
|
+
const validation = fieldsToValidationOld(fs ?? {} as Indexable)
|
|
476
477
|
|
|
477
478
|
try {
|
|
478
479
|
for (const f in r) {
|
|
@@ -508,7 +509,7 @@ const run_generated_tests = async <N extends ModelName>({ queries, model, name,
|
|
|
508
509
|
|
|
509
510
|
// only validate id for general objects, for now
|
|
510
511
|
const defaultValidation: DefaultValidation = {
|
|
511
|
-
id:
|
|
512
|
+
id: mongoIdStringRequired.validate(), _default: x => x,
|
|
512
513
|
}
|
|
513
514
|
|
|
514
515
|
|
|
@@ -822,22 +823,23 @@ const journey_tests = async (queries=sdk.api.journeys) => {
|
|
|
822
823
|
{ onResult: j => objects_equivalent(j.states, [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }])}
|
|
823
824
|
)
|
|
824
825
|
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
await
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
)
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
)
|
|
826
|
+
// removed
|
|
827
|
+
// await async_test(
|
|
828
|
+
// `journey-updateState`,
|
|
829
|
+
// () => queries.update_state({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' }}),
|
|
830
|
+
// passOnVoid,
|
|
831
|
+
// )
|
|
832
|
+
// await wait(undefined, 25) // wait for side effects to update endusers
|
|
833
|
+
// await async_test(
|
|
834
|
+
// `journey-updateState verify propagation to enduser 1`,
|
|
835
|
+
// () => sdk.api.endusers.getOne(e1.id),
|
|
836
|
+
// { onResult: e => objects_equivalent(e.journeys, { [journey.id]: 'Updated' })},
|
|
837
|
+
// )
|
|
838
|
+
// await async_test(
|
|
839
|
+
// `journey-updateState verify propagation to enduser 2`,
|
|
840
|
+
// () => sdk.api.endusers.getOne(e2.id),
|
|
841
|
+
// { onResult: e => objects_equivalent(e.journeys, { [journey.id]: 'Updated', [journey2.id]: 'New' })},
|
|
842
|
+
// )
|
|
841
843
|
|
|
842
844
|
|
|
843
845
|
await queries.deleteOne(journey.id)
|
|
@@ -1319,6 +1321,7 @@ const enduserAccessTests = async () => {
|
|
|
1319
1321
|
}
|
|
1320
1322
|
|
|
1321
1323
|
const files_tests = async () => {
|
|
1324
|
+
log_header("Files")
|
|
1322
1325
|
const enduser = await sdk.api.endusers.createOne({ email })
|
|
1323
1326
|
await sdk.api.endusers.set_password({ id: enduser.id, password }).catch(console.error)
|
|
1324
1327
|
await enduserSDK.authenticate(email, password).catch(console.error)
|
|
@@ -1334,11 +1337,16 @@ const files_tests = async () => {
|
|
|
1334
1337
|
)
|
|
1335
1338
|
|
|
1336
1339
|
const { presignedUpload, file } = await sdk.api.files.prepare_file_upload({
|
|
1337
|
-
name: 'Test
|
|
1340
|
+
name: 'Test Private', size: buff.byteLength, type: 'text/plain', enduserId: enduser.id,
|
|
1341
|
+
})
|
|
1342
|
+
|
|
1343
|
+
const { presignedUpload: presignedNonEnduser, file: fileNonEnduser } = await sdk.api.files.prepare_file_upload({
|
|
1344
|
+
name: 'Test Private (no enduser)', size: buff.byteLength, type: 'text/plain',
|
|
1338
1345
|
})
|
|
1339
1346
|
|
|
1340
|
-
const { presignedUpload: presigned2
|
|
1341
|
-
name: 'Test
|
|
1347
|
+
const { presignedUpload: presigned2 } = await sdk.api.files.prepare_file_upload({
|
|
1348
|
+
name: 'Test Public', size: buff.byteLength, type: 'text/plain',
|
|
1349
|
+
enduserId: enduser.id,
|
|
1342
1350
|
publicRead: true,
|
|
1343
1351
|
publicName: 'public',
|
|
1344
1352
|
})
|
|
@@ -1348,12 +1356,23 @@ const files_tests = async () => {
|
|
|
1348
1356
|
presignedUpload,
|
|
1349
1357
|
buff
|
|
1350
1358
|
)
|
|
1359
|
+
await sdk.UPLOAD(
|
|
1360
|
+
// @ts-ignore
|
|
1361
|
+
presignedNonEnduser,
|
|
1362
|
+
buff
|
|
1363
|
+
)
|
|
1351
1364
|
await sdk.UPLOAD(
|
|
1352
1365
|
// @ts-ignore
|
|
1353
1366
|
presigned2,
|
|
1354
1367
|
buff
|
|
1355
1368
|
)
|
|
1356
1369
|
|
|
1370
|
+
await async_test(
|
|
1371
|
+
`Files associated with enduser on prepare_file_upload`,
|
|
1372
|
+
() => sdkNonAdmin.api.files.getSome({ filter: { enduserId: enduser.id } }),
|
|
1373
|
+
{ onResult: fs => fs.length === 2 }
|
|
1374
|
+
)
|
|
1375
|
+
|
|
1357
1376
|
const { downloadURL } = await sdk.api.files.file_download_URL({ secureName: file.secureName })
|
|
1358
1377
|
const downloaded: string = await sdk.DOWNLOAD(downloadURL)
|
|
1359
1378
|
|
|
@@ -1367,8 +1386,23 @@ const files_tests = async () => {
|
|
|
1367
1386
|
|
|
1368
1387
|
await Promise.all([
|
|
1369
1388
|
sdk.api.endusers.deleteOne(enduser.id),
|
|
1370
|
-
|
|
1371
|
-
|
|
1389
|
+
])
|
|
1390
|
+
|
|
1391
|
+
await wait(undefined, 1250) // wait for files to be deleted as side effect
|
|
1392
|
+
await async_test(
|
|
1393
|
+
`Files cleaned up as side effect of deleting enduser`,
|
|
1394
|
+
() => sdkNonAdmin.api.files.getSome({ filter: { enduserId: enduser.id } }),
|
|
1395
|
+
{ onResult: fs => fs.length === 0 }
|
|
1396
|
+
)
|
|
1397
|
+
await async_test(
|
|
1398
|
+
`Non-enduser file is left`,
|
|
1399
|
+
() => sdkNonAdmin.api.files.getSome(),
|
|
1400
|
+
{ onResult: fs => fs.length > 0 }
|
|
1401
|
+
)
|
|
1402
|
+
|
|
1403
|
+
// cleanup other file
|
|
1404
|
+
await Promise.all([
|
|
1405
|
+
sdk.api.files.deleteOne(fileNonEnduser.id),
|
|
1372
1406
|
])
|
|
1373
1407
|
}
|
|
1374
1408
|
|
|
@@ -2948,7 +2982,7 @@ export const self_serve_appointment_booking_tests = async () => {
|
|
|
2948
2982
|
await sdk.api.users.updateOne(sdk.userInfo.id, {
|
|
2949
2983
|
weeklyAvailabilities: [
|
|
2950
2984
|
{
|
|
2951
|
-
dayOfWeekStartingSundayIndexedByZero: 0,
|
|
2985
|
+
dayOfWeekStartingSundayIndexedByZero: 0, // sunday
|
|
2952
2986
|
startTimeInMinutes: 60 * 12, // noon,
|
|
2953
2987
|
endTimeInMinutes: 60 * 13, // 1pm,
|
|
2954
2988
|
},
|
|
@@ -2962,7 +2996,7 @@ export const self_serve_appointment_booking_tests = async () => {
|
|
|
2962
2996
|
await sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, {
|
|
2963
2997
|
weeklyAvailabilities: [
|
|
2964
2998
|
{
|
|
2965
|
-
dayOfWeekStartingSundayIndexedByZero: 0,
|
|
2999
|
+
dayOfWeekStartingSundayIndexedByZero: 0, // sunday
|
|
2966
3000
|
startTimeInMinutes: 60 * 12, // noon,
|
|
2967
3001
|
endTimeInMinutes: 60 * 13, // 1pm,
|
|
2968
3002
|
},
|
|
@@ -2991,7 +3025,21 @@ export const self_serve_appointment_booking_tests = async () => {
|
|
|
2991
3025
|
from: new Date(),
|
|
2992
3026
|
restrictedByState: false,
|
|
2993
3027
|
}),
|
|
2994
|
-
{ onResult: r =>
|
|
3028
|
+
{ onResult: r => {
|
|
3029
|
+
if (r.availabilityBlocks.length !== 4) return false // 2 providers with 1 hour availability for 30 minute meetings
|
|
3030
|
+
|
|
3031
|
+
const user1block1_ET = r.availabilityBlocks.find(b => b.userId === sdk.userInfo.id)
|
|
3032
|
+
const user2block1_PT = r.availabilityBlocks.find(b => b.userId === sdkNonAdmin.userInfo.id)
|
|
3033
|
+
|
|
3034
|
+
if (!(user1block1_ET && user2block1_PT)) return false // should be slots for both users
|
|
3035
|
+
|
|
3036
|
+
if (user2block1_PT.startTimeInMS - user1block1_ET.startTimeInMS !== 1000 * 60 * 60 * 3) {
|
|
3037
|
+
console.log(user1block1_ET.startTimeInMS, user2block1_PT.startTimeInMS, user1block1_ET.startTimeInMS - user2block1_PT.startTimeInMS)
|
|
3038
|
+
return false // difference should be three hours, since same availability in different timezones
|
|
3039
|
+
}
|
|
3040
|
+
|
|
3041
|
+
return true
|
|
3042
|
+
}},
|
|
2995
3043
|
)
|
|
2996
3044
|
|
|
2997
3045
|
const nySlots = await enduserSDK.api.calendar_events.get_appointment_availability({
|
|
@@ -3062,9 +3110,11 @@ export const self_serve_appointment_booking_tests = async () => {
|
|
|
3062
3110
|
|
|
3063
3111
|
const NO_TEST = () => {}
|
|
3064
3112
|
const tests: { [K in keyof ClientModelForName]: () => void } = {
|
|
3113
|
+
chat_rooms: chat_room_tests,
|
|
3114
|
+
automation_steps: automation_events_tests,
|
|
3115
|
+
files: files_tests,
|
|
3065
3116
|
enduser_tasks: NO_TEST,
|
|
3066
3117
|
care_plans: NO_TEST,
|
|
3067
|
-
automation_steps: automation_events_tests,
|
|
3068
3118
|
portal_customizations: NO_TEST,
|
|
3069
3119
|
calendar_event_templates: NO_TEST,
|
|
3070
3120
|
databases: databases_tests,
|
|
@@ -3079,10 +3129,8 @@ const tests: { [K in keyof ClientModelForName]: () => void } = {
|
|
|
3079
3129
|
tasks: tasks_tests,
|
|
3080
3130
|
emails: email_tests,
|
|
3081
3131
|
sms_messages: sms_tests,
|
|
3082
|
-
chat_rooms: chat_room_tests,
|
|
3083
3132
|
users: users_tests,
|
|
3084
3133
|
templates: NO_TEST,
|
|
3085
|
-
files: files_tests,
|
|
3086
3134
|
tickets: NO_TEST,
|
|
3087
3135
|
meetings: meetings_tests,
|
|
3088
3136
|
notes: NO_TEST,
|