@tellescope/sdk 1.136.1 → 1.138.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.
- 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 +3 -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 +438 -78
- 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 +46 -0
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +3 -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 +438 -78
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -8
- package/src/sdk.ts +12 -0
- package/src/tests/tests.ts +200 -0
- package/test_generated.pdf +0 -0
package/src/tests/tests.ts
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
Ticket,
|
|
12
12
|
VitalConfiguration,
|
|
13
13
|
EnduserObservation,
|
|
14
|
+
FormResponse,
|
|
14
15
|
} from "@tellescope/types-client"
|
|
15
16
|
import {
|
|
16
17
|
CompoundFilter,
|
|
@@ -6345,6 +6346,165 @@ export const formsort_tests = async () => {
|
|
|
6345
6346
|
await async_test(`Email with name match`, sdk.api.form_responses.getSome, { onResult: r => r.length === 5 })
|
|
6346
6347
|
await async_test(`Email with name match`, sdk.api.endusers.getSome, { onResult: r => r.length === 3 })
|
|
6347
6348
|
|
|
6349
|
+
const answersEmail = "formsortanswers@tellescope.com"
|
|
6350
|
+
const address = {
|
|
6351
|
+
address_1: 'Address 1',
|
|
6352
|
+
address_2: 'Address 2',
|
|
6353
|
+
city: 'City',
|
|
6354
|
+
state: 'State',
|
|
6355
|
+
postal_code: 'ZIP',
|
|
6356
|
+
}
|
|
6357
|
+
const answers = [
|
|
6358
|
+
{ key: 'email', value: answersEmail },
|
|
6359
|
+
{ key: 'phone', value: "+15555555555" },
|
|
6360
|
+
{ key: 'fname', value: 'Fname' },
|
|
6361
|
+
{ key: 'lname', value: 'Lname' },
|
|
6362
|
+
{ key: 'gender', value: 'Male' },
|
|
6363
|
+
{ key: 'defaultFromEmail', value: 'from@tellescope.com' },
|
|
6364
|
+
{ key: 'useDefaultFromEmailInAutomations', value: true },
|
|
6365
|
+
{ key: 'defaultFromPhone', value: '+15555555555' },
|
|
6366
|
+
{ key: 'useDefaultFromPhoneInAutomations', value: true },
|
|
6367
|
+
{ key: 'language', value: 'Spanish' },
|
|
6368
|
+
{ key: 'timezone', value: 'US/Eastern' },
|
|
6369
|
+
{ key: 'healthie_dietitian_id', value: 'test_id' },
|
|
6370
|
+
{ key: 'height', value: 10 },
|
|
6371
|
+
{ key: 'weight', value: 20 },
|
|
6372
|
+
{ key: 'address', value: address },
|
|
6373
|
+
{ key: 'dateOfBirth', value: '2000-12-20' },
|
|
6374
|
+
{ key: 'insurance.payerId', value: 'insurance 1' },
|
|
6375
|
+
{ key: 'insuranceSecondary.payerId', value: 'insurance 2' },
|
|
6376
|
+
{ key: 'ts_enduser_custom', value: 'Custom' },
|
|
6377
|
+
{ key: 'ts_enduser_custom2', value: 'Custom 2' },
|
|
6378
|
+
{ key: 'multiple_choice', value: ['multiple choice'] },
|
|
6379
|
+
]
|
|
6380
|
+
await sdk.api.endusers.createOne({ email: answersEmail })
|
|
6381
|
+
await postToFormsort({
|
|
6382
|
+
answers,
|
|
6383
|
+
responder_uuid: "6",
|
|
6384
|
+
finalized: false,
|
|
6385
|
+
matchByName: false,
|
|
6386
|
+
})
|
|
6387
|
+
let submissionEnduser = await sdk.api.endusers.getOne({ email: answersEmail })
|
|
6388
|
+
|
|
6389
|
+
const validateResponse = (fr: FormResponse, key: string, value: any): boolean => {
|
|
6390
|
+
const answer = fr.responses.find(r => r.externalId === key)?.answer?.value
|
|
6391
|
+
|
|
6392
|
+
if (typeof value === 'object') {
|
|
6393
|
+
return objects_equivalent(answer, value)
|
|
6394
|
+
}
|
|
6395
|
+
|
|
6396
|
+
return answer === value
|
|
6397
|
+
}
|
|
6398
|
+
// EXISTING ENDUSER FIELDS ARE CURRENTLY ONLY UPDATED ON SUBMISSION
|
|
6399
|
+
await async_test(
|
|
6400
|
+
`Answers and fields (unfinalized)`,
|
|
6401
|
+
() => sdk.api.form_responses.getOne({ externalId: '6' }),
|
|
6402
|
+
{
|
|
6403
|
+
onResult: r => {
|
|
6404
|
+
if (!r) { return false }
|
|
6405
|
+
if (r.submittedAt) { return false }
|
|
6406
|
+
if (!r.formsort?.length) { return false }
|
|
6407
|
+
if (!r.responses.length) { return false }
|
|
6408
|
+
if (r.responses.length !== answers.length) { return false }
|
|
6409
|
+
|
|
6410
|
+
if (!validateResponse(r, 'address', JSON.stringify(address, null, 2))) { return false }
|
|
6411
|
+
if (!validateResponse(r, 'email', answersEmail)) { return false }
|
|
6412
|
+
if (!validateResponse(r, 'phone', "+15555555555")) { return false }
|
|
6413
|
+
if (!validateResponse(r, 'fname', "Fname")) { return false }
|
|
6414
|
+
if (!validateResponse(r, 'lname', "Lname")) { return false }
|
|
6415
|
+
if (!validateResponse(r, 'gender', "Male")) { return false }
|
|
6416
|
+
if (!validateResponse(r, 'defaultFromEmail', "from@tellescope.com")) { return false }
|
|
6417
|
+
if (!validateResponse(r, 'useDefaultFromEmailInAutomations', "true")) { return false }
|
|
6418
|
+
if (!validateResponse(r, 'defaultFromPhone', "+15555555555")) { return false }
|
|
6419
|
+
if (!validateResponse(r, 'useDefaultFromPhoneInAutomations', "true")) { return false }
|
|
6420
|
+
if (!validateResponse(r, 'language', "Spanish")) { return false }
|
|
6421
|
+
if (!validateResponse(r, 'timezone', "US/Eastern")) { return false }
|
|
6422
|
+
if (!validateResponse(r, 'healthie_dietitian_id', "test_id")) { return false }
|
|
6423
|
+
if (!validateResponse(r, 'height', "10")) { return false }
|
|
6424
|
+
if (!validateResponse(r, 'weight', "20")) { return false }
|
|
6425
|
+
if (!validateResponse(r, 'dateOfBirth', "2000-12-20")) { return false }
|
|
6426
|
+
if (!validateResponse(r, 'insurance.payerId', "insurance 1")) { return false }
|
|
6427
|
+
if (!validateResponse(r, 'insuranceSecondary.payerId', "insurance 2")) { return false }
|
|
6428
|
+
if (!validateResponse(r, 'ts_enduser_custom', "Custom")) { return false }
|
|
6429
|
+
if (!validateResponse(r, 'ts_enduser_custom2', "Custom 2")) { return false }
|
|
6430
|
+
if (!validateResponse(r, 'multiple_choice', ['multiple choice'])) { return false }
|
|
6431
|
+
|
|
6432
|
+
return true
|
|
6433
|
+
}
|
|
6434
|
+
}
|
|
6435
|
+
)
|
|
6436
|
+
|
|
6437
|
+
await postToFormsort({
|
|
6438
|
+
answers,
|
|
6439
|
+
responder_uuid: "6",
|
|
6440
|
+
finalized: true,
|
|
6441
|
+
matchByName: false,
|
|
6442
|
+
})
|
|
6443
|
+
submissionEnduser = await sdk.api.endusers.getOne({ email: answersEmail })
|
|
6444
|
+
// EXISTING ENDUSER FIELDS ARE CURRENTLY ONLY UPDATED ON SUBMISSION
|
|
6445
|
+
await async_test(
|
|
6446
|
+
`Answers and fields (finalized)`,
|
|
6447
|
+
() => sdk.api.form_responses.getOne({ externalId: '6' }),
|
|
6448
|
+
{
|
|
6449
|
+
onResult: r => {
|
|
6450
|
+
if (!r) { return false }
|
|
6451
|
+
if (!r.submittedAt) { return false }
|
|
6452
|
+
if (!r.formsort?.length) { return false }
|
|
6453
|
+
if (!r.responses.length) { return false }
|
|
6454
|
+
if (r.responses.length !== answers.length) { return false }
|
|
6455
|
+
|
|
6456
|
+
if (!validateResponse(r, 'address', JSON.stringify(address, null, 2))) { return false }
|
|
6457
|
+
if (!validateResponse(r, 'email', answersEmail)) { return false }
|
|
6458
|
+
if (!validateResponse(r, 'phone', "+15555555555")) { return false }
|
|
6459
|
+
if (!validateResponse(r, 'fname', "Fname")) { return false }
|
|
6460
|
+
if (!validateResponse(r, 'lname', "Lname")) { return false }
|
|
6461
|
+
if (!validateResponse(r, 'gender', "Male")) { return false }
|
|
6462
|
+
if (!validateResponse(r, 'defaultFromEmail', "from@tellescope.com")) { return false }
|
|
6463
|
+
if (!validateResponse(r, 'useDefaultFromEmailInAutomations', "true")) { return false }
|
|
6464
|
+
if (!validateResponse(r, 'defaultFromPhone', "+15555555555")) { return false }
|
|
6465
|
+
if (!validateResponse(r, 'useDefaultFromPhoneInAutomations', "true")) { return false }
|
|
6466
|
+
if (!validateResponse(r, 'language', "Spanish")) { return false }
|
|
6467
|
+
if (!validateResponse(r, 'timezone', "US/Eastern")) { return false }
|
|
6468
|
+
if (!validateResponse(r, 'healthie_dietitian_id', "test_id")) { return false }
|
|
6469
|
+
if (!validateResponse(r, 'height', "10")) { return false }
|
|
6470
|
+
if (!validateResponse(r, 'weight', "20")) { return false }
|
|
6471
|
+
if (!validateResponse(r, 'dateOfBirth', "2000-12-20")) { return false }
|
|
6472
|
+
if (!validateResponse(r, 'insurance.payerId', "insurance 1")) { return false }
|
|
6473
|
+
if (!validateResponse(r, 'insuranceSecondary.payerId', "insurance 2")) { return false }
|
|
6474
|
+
if (!validateResponse(r, 'ts_enduser_custom', "Custom")) { return false }
|
|
6475
|
+
if (!validateResponse(r, 'ts_enduser_custom2', "Custom 2")) { return false }
|
|
6476
|
+
if (!validateResponse(r, 'multiple_choice', ['multiple choice'])) { return false }
|
|
6477
|
+
|
|
6478
|
+
if (submissionEnduser.email !== answersEmail) { return false }
|
|
6479
|
+
if (submissionEnduser.fname !== 'Fname') { return false }
|
|
6480
|
+
if (submissionEnduser.lname !== 'Lname') { return false }
|
|
6481
|
+
if (submissionEnduser.gender !== 'Male') { return false }
|
|
6482
|
+
if (submissionEnduser.phone !== '+15555555555') { return false }
|
|
6483
|
+
if (submissionEnduser.defaultFromEmail !== 'from@tellescope.com') { return false }
|
|
6484
|
+
if (submissionEnduser.useDefaultFromEmailInAutomations !== true) { return false }
|
|
6485
|
+
if (submissionEnduser.defaultFromPhone !== '+15555555555') { return false }
|
|
6486
|
+
if (submissionEnduser.useDefaultFromPhoneInAutomations !== true) { return false }
|
|
6487
|
+
if (submissionEnduser.language?.displayName !== "Spanish") { return false }
|
|
6488
|
+
if (submissionEnduser.timezone !== "US/Eastern") { return false }
|
|
6489
|
+
if (submissionEnduser.healthie_dietitian_id !== "test_id") { return false }
|
|
6490
|
+
if (submissionEnduser.height?.value !== 10) { return false }
|
|
6491
|
+
if (submissionEnduser.weight?.value !== 20) { return false }
|
|
6492
|
+
if (submissionEnduser.addressLineOne !== 'Address 1') { return false }
|
|
6493
|
+
if (submissionEnduser.addressLineTwo !== 'Address 2') { return false }
|
|
6494
|
+
if (submissionEnduser.city !== 'City') { return false }
|
|
6495
|
+
if (submissionEnduser.state !== 'State') { return false }
|
|
6496
|
+
if (submissionEnduser.zipCode !== 'ZIP') { return false }
|
|
6497
|
+
if (submissionEnduser.dateOfBirth !== '12-20-2000') { return false }
|
|
6498
|
+
if (submissionEnduser.insurance?.payerId !== 'insurance 1') { return false }
|
|
6499
|
+
if (submissionEnduser.insuranceSecondary?.payerId !== 'insurance 2') { return false }
|
|
6500
|
+
if (submissionEnduser.fields?.custom !== 'Custom') { return false }
|
|
6501
|
+
if (submissionEnduser.fields?.custom2 !== 'Custom 2') { return false }
|
|
6502
|
+
|
|
6503
|
+
return true
|
|
6504
|
+
}
|
|
6505
|
+
}
|
|
6506
|
+
)
|
|
6507
|
+
|
|
6348
6508
|
// cleanup
|
|
6349
6509
|
const endusers = await sdk.api.endusers.getSome()
|
|
6350
6510
|
const formResponses = await sdk.api.form_responses.getSome()
|
|
@@ -6357,6 +6517,7 @@ export const formsort_tests = async () => {
|
|
|
6357
6517
|
|
|
6358
6518
|
const NO_TEST = () => {}
|
|
6359
6519
|
const tests: { [K in keyof ClientModelForName]: () => void } = {
|
|
6520
|
+
call_hold_queues: NO_TEST,
|
|
6360
6521
|
fax_logs: NO_TEST,
|
|
6361
6522
|
form_groups: NO_TEST,
|
|
6362
6523
|
webhook_logs: NO_TEST,
|
|
@@ -8666,6 +8827,44 @@ const uniqueness_tests = async () => {
|
|
|
8666
8827
|
])
|
|
8667
8828
|
}
|
|
8668
8829
|
|
|
8830
|
+
const input_modifier_tests = async () => {
|
|
8831
|
+
log_header("Input Modifiers")
|
|
8832
|
+
const e = await sdk.api.endusers.createOne({})
|
|
8833
|
+
|
|
8834
|
+
await async_test(
|
|
8835
|
+
"Regular string",
|
|
8836
|
+
() => sdk.api.form_responses.createOne({
|
|
8837
|
+
enduserId: e.id,
|
|
8838
|
+
formId: PLACEHOLDER_ID,
|
|
8839
|
+
formTitle: "input modifiers",
|
|
8840
|
+
responses: [{
|
|
8841
|
+
fieldTitle: '',
|
|
8842
|
+
fieldId: '',
|
|
8843
|
+
answer: { type: 'string', value: 'hello' }
|
|
8844
|
+
}]
|
|
8845
|
+
}),
|
|
8846
|
+
{ onResult: r => r.responses[0].answer.value === 'hello' }
|
|
8847
|
+
)
|
|
8848
|
+
await async_test(
|
|
8849
|
+
"Number coerce to string",
|
|
8850
|
+
() => sdk.api.form_responses.createOne({
|
|
8851
|
+
enduserId: e.id,
|
|
8852
|
+
formId: PLACEHOLDER_ID,
|
|
8853
|
+
formTitle: "input modifiers",
|
|
8854
|
+
responses: [{
|
|
8855
|
+
fieldTitle: '',
|
|
8856
|
+
fieldId: '',
|
|
8857
|
+
answer: { type: 'string', value: 55 as any }
|
|
8858
|
+
}]
|
|
8859
|
+
}),
|
|
8860
|
+
{ onResult: r => r.responses[0].answer.value === '55' }
|
|
8861
|
+
)
|
|
8862
|
+
|
|
8863
|
+
await Promise.all([
|
|
8864
|
+
sdk.api.endusers.deleteOne(e.id),
|
|
8865
|
+
])
|
|
8866
|
+
}
|
|
8867
|
+
|
|
8669
8868
|
(async () => {
|
|
8670
8869
|
log_header("API")
|
|
8671
8870
|
|
|
@@ -8780,6 +8979,7 @@ const uniqueness_tests = async () => {
|
|
|
8780
8979
|
await setup_tests()
|
|
8781
8980
|
await multi_tenant_tests() // should come right after setup tests
|
|
8782
8981
|
await sync_tests() // should come directly after setup to avoid extra sync values
|
|
8982
|
+
await input_modifier_tests()
|
|
8783
8983
|
await formsort_tests()
|
|
8784
8984
|
await switch_to_related_contacts_tests()
|
|
8785
8985
|
await uniqueness_tests()
|
package/test_generated.pdf
CHANGED
|
Binary file
|