@tellescope/sdk 1.3.48 → 1.4.1
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 +5 -0
- package/lib/cjs/enduser.d.ts.map +1 -1
- package/lib/cjs/enduser.js +2 -0
- package/lib/cjs/enduser.js.map +1 -1
- package/lib/cjs/sdk.d.ts +8 -2
- package/lib/cjs/sdk.d.ts.map +1 -1
- package/lib/cjs/sdk.js +3 -5
- 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 +296 -80
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/enduser.d.ts +4 -0
- package/lib/esm/enduser.d.ts.map +1 -1
- package/lib/esm/enduser.js +2 -0
- package/lib/esm/enduser.js.map +1 -1
- package/lib/esm/sdk.d.ts +7 -2
- package/lib/esm/sdk.d.ts.map +1 -1
- package/lib/esm/sdk.js +3 -5
- package/lib/esm/sdk.js.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 +295 -80
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -9
- package/src/enduser.ts +11 -0
- package/src/sdk.ts +11 -6
- package/src/tests/tests.ts +195 -29
package/lib/cjs/tests/tests.js
CHANGED
|
@@ -82,7 +82,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
82
82
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
83
83
|
};
|
|
84
84
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
85
|
-
exports.filter_by_date_tests = exports.databases_tests = exports.calendar_event_RSVPs_tests = exports.managed_content_records_tests = exports.meetings_tests = exports.cancelConditionsTests = void 0;
|
|
85
|
+
exports.self_serve_appointment_booking_tests = exports.filter_by_date_tests = exports.databases_tests = exports.calendar_event_RSVPs_tests = exports.managed_content_records_tests = exports.meetings_tests = exports.cancelConditionsTests = void 0;
|
|
86
86
|
require('source-map-support').install();
|
|
87
87
|
var crypto_1 = __importDefault(require("crypto"));
|
|
88
88
|
var buffer = __importStar(require("buffer")); // only node >=15.7.0
|
|
@@ -583,7 +583,7 @@ var verify_missing_defaults = function (_a) {
|
|
|
583
583
|
});
|
|
584
584
|
};
|
|
585
585
|
var validateReturnType = function (fs, r, d) {
|
|
586
|
-
var validation = (0, validation_1.
|
|
586
|
+
var validation = (0, validation_1.fieldsToValidationOld)(fs !== null && fs !== void 0 ? fs : {});
|
|
587
587
|
try {
|
|
588
588
|
for (var f in r) {
|
|
589
589
|
(validation[f] || d._default)(r[f]);
|
|
@@ -629,7 +629,7 @@ var run_generated_tests = function (_a) {
|
|
|
629
629
|
case 3:
|
|
630
630
|
_c.sent();
|
|
631
631
|
defaultValidation = {
|
|
632
|
-
id:
|
|
632
|
+
id: validation_1.mongoIdStringRequired.validate(), _default: function (x) { return x; },
|
|
633
633
|
};
|
|
634
634
|
// If no create, cannot test get, update, or delete
|
|
635
635
|
if (!(model.defaultActions.create || model.customActions.create))
|
|
@@ -909,41 +909,75 @@ var journey_tests = function (queries) {
|
|
|
909
909
|
return [4 /*yield*/, queries.updateOne(journey.id, { states: [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }] }, { replaceObjectFields: true })];
|
|
910
910
|
case 26:
|
|
911
911
|
_g.sent();
|
|
912
|
-
return [4 /*yield*/, (0, testing_1.async_test)("journey-update - insert new state at front", function () { return queries.getOne(journey.id); }, { onResult: function (j) { return (0, utilities_1.objects_equivalent)(j.states, [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }]); } })
|
|
912
|
+
return [4 /*yield*/, (0, testing_1.async_test)("journey-update - insert new state at front", function () { return queries.getOne(journey.id); }, { onResult: function (j) { return (0, utilities_1.objects_equivalent)(j.states, [{ name: 'First', priority: "N/A" }, { name: 'Added', priority: "N/A" }]); } })
|
|
913
|
+
// removed
|
|
914
|
+
// await async_test(
|
|
915
|
+
// `journey-updateState`,
|
|
916
|
+
// () => queries.update_state({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' }}),
|
|
917
|
+
// passOnVoid,
|
|
918
|
+
// )
|
|
919
|
+
// await wait(undefined, 25) // wait for side effects to update endusers
|
|
920
|
+
// await async_test(
|
|
921
|
+
// `journey-updateState verify propagation to enduser 1`,
|
|
922
|
+
// () => sdk.api.endusers.getOne(e1.id),
|
|
923
|
+
// { onResult: e => objects_equivalent(e.journeys, { [journey.id]: 'Updated' })},
|
|
924
|
+
// )
|
|
925
|
+
// await async_test(
|
|
926
|
+
// `journey-updateState verify propagation to enduser 2`,
|
|
927
|
+
// () => sdk.api.endusers.getOne(e2.id),
|
|
928
|
+
// { onResult: e => objects_equivalent(e.journeys, { [journey.id]: 'Updated', [journey2.id]: 'New' })},
|
|
929
|
+
// )
|
|
930
|
+
];
|
|
913
931
|
case 27:
|
|
914
932
|
_g.sent();
|
|
915
|
-
|
|
933
|
+
// removed
|
|
934
|
+
// await async_test(
|
|
935
|
+
// `journey-updateState`,
|
|
936
|
+
// () => queries.update_state({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' }}),
|
|
937
|
+
// passOnVoid,
|
|
938
|
+
// )
|
|
939
|
+
// await wait(undefined, 25) // wait for side effects to update endusers
|
|
940
|
+
// await async_test(
|
|
941
|
+
// `journey-updateState verify propagation to enduser 1`,
|
|
942
|
+
// () => sdk.api.endusers.getOne(e1.id),
|
|
943
|
+
// { onResult: e => objects_equivalent(e.journeys, { [journey.id]: 'Updated' })},
|
|
944
|
+
// )
|
|
945
|
+
// await async_test(
|
|
946
|
+
// `journey-updateState verify propagation to enduser 2`,
|
|
947
|
+
// () => sdk.api.endusers.getOne(e2.id),
|
|
948
|
+
// { onResult: e => objects_equivalent(e.journeys, { [journey.id]: 'Updated', [journey2.id]: 'New' })},
|
|
949
|
+
// )
|
|
950
|
+
return [4 /*yield*/, queries.deleteOne(journey.id)];
|
|
916
951
|
case 28:
|
|
952
|
+
// removed
|
|
953
|
+
// await async_test(
|
|
954
|
+
// `journey-updateState`,
|
|
955
|
+
// () => queries.update_state({ id: journey.id, name: 'Added', updates: { name: 'Updated', priority: 'N/A' }}),
|
|
956
|
+
// passOnVoid,
|
|
957
|
+
// )
|
|
958
|
+
// await wait(undefined, 25) // wait for side effects to update endusers
|
|
959
|
+
// await async_test(
|
|
960
|
+
// `journey-updateState verify propagation to enduser 1`,
|
|
961
|
+
// () => sdk.api.endusers.getOne(e1.id),
|
|
962
|
+
// { onResult: e => objects_equivalent(e.journeys, { [journey.id]: 'Updated' })},
|
|
963
|
+
// )
|
|
964
|
+
// await async_test(
|
|
965
|
+
// `journey-updateState verify propagation to enduser 2`,
|
|
966
|
+
// () => sdk.api.endusers.getOne(e2.id),
|
|
967
|
+
// { onResult: e => objects_equivalent(e.journeys, { [journey.id]: 'Updated', [journey2.id]: 'New' })},
|
|
968
|
+
// )
|
|
917
969
|
_g.sent();
|
|
918
970
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)]; // wait for side effects to update endusers
|
|
919
971
|
case 29:
|
|
920
|
-
_g.sent(); // wait for side effects to update endusers
|
|
921
|
-
return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState verify propagation to enduser 1", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) {
|
|
922
|
-
var _a;
|
|
923
|
-
return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a));
|
|
924
|
-
} })];
|
|
925
|
-
case 30:
|
|
926
|
-
_g.sent();
|
|
927
|
-
return [4 /*yield*/, (0, testing_1.async_test)("journey-updateState verify propagation to enduser 2", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
|
|
928
|
-
var _a;
|
|
929
|
-
return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey.id] = 'Updated', _a[journey2.id] = 'New', _a));
|
|
930
|
-
} })];
|
|
931
|
-
case 31:
|
|
932
|
-
_g.sent();
|
|
933
|
-
return [4 /*yield*/, queries.deleteOne(journey.id)];
|
|
934
|
-
case 32:
|
|
935
|
-
_g.sent();
|
|
936
|
-
return [4 /*yield*/, (0, testing_1.wait)(undefined, 25)]; // wait for side effects to update endusers
|
|
937
|
-
case 33:
|
|
938
972
|
_g.sent(); // wait for side effects to update endusers
|
|
939
973
|
return [4 /*yield*/, (0, testing_1.async_test)("journey-delete - corresponding enduser journeys are unset 1", function () { return sdk.api.endusers.getOne(e1.id); }, { onResult: function (e) { return (0, utilities_1.objects_equivalent)(e.journeys, {}); } })];
|
|
940
|
-
case
|
|
974
|
+
case 30:
|
|
941
975
|
_g.sent();
|
|
942
976
|
return [4 /*yield*/, (0, testing_1.async_test)("journey-delete - corresponding enduser journeys are unset, others left", function () { return sdk.api.endusers.getOne(e2.id); }, { onResult: function (e) {
|
|
943
977
|
var _a;
|
|
944
978
|
return (0, utilities_1.objects_equivalent)(e.journeys, (_a = {}, _a[journey2.id] = 'New', _a));
|
|
945
979
|
} })];
|
|
946
|
-
case
|
|
980
|
+
case 31:
|
|
947
981
|
_g.sent();
|
|
948
982
|
return [2 /*return*/];
|
|
949
983
|
}
|
|
@@ -1578,10 +1612,12 @@ var enduserAccessTests = function () { return __awaiter(void 0, void 0, void 0,
|
|
|
1578
1612
|
});
|
|
1579
1613
|
}); };
|
|
1580
1614
|
var files_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
1581
|
-
var enduser, buff, _a, presignedUpload, file, _b,
|
|
1615
|
+
var enduser, buff, _a, presignedUpload, file, _b, presignedNonEnduser, fileNonEnduser, presigned2, downloadURL, downloaded, cachedURL, urlForEnduser;
|
|
1582
1616
|
return __generator(this, function (_c) {
|
|
1583
1617
|
switch (_c.label) {
|
|
1584
|
-
case 0:
|
|
1618
|
+
case 0:
|
|
1619
|
+
(0, testing_1.log_header)("Files");
|
|
1620
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: email })];
|
|
1585
1621
|
case 1:
|
|
1586
1622
|
enduser = _c.sent();
|
|
1587
1623
|
return [4 /*yield*/, sdk.api.endusers.set_password({ id: enduser.id, password: password }).catch(console.error)];
|
|
@@ -1597,48 +1633,78 @@ var files_tests = function () { return __awaiter(void 0, void 0, void 0, functio
|
|
|
1597
1633
|
case 4:
|
|
1598
1634
|
_c.sent();
|
|
1599
1635
|
return [4 /*yield*/, sdk.api.files.prepare_file_upload({
|
|
1600
|
-
name: 'Test
|
|
1636
|
+
name: 'Test Private', size: buff.byteLength, type: 'text/plain', enduserId: enduser.id,
|
|
1601
1637
|
})];
|
|
1602
1638
|
case 5:
|
|
1603
1639
|
_a = _c.sent(), presignedUpload = _a.presignedUpload, file = _a.file;
|
|
1604
1640
|
return [4 /*yield*/, sdk.api.files.prepare_file_upload({
|
|
1605
|
-
name: 'Test
|
|
1641
|
+
name: 'Test Private (no enduser)', size: buff.byteLength, type: 'text/plain',
|
|
1642
|
+
})];
|
|
1643
|
+
case 6:
|
|
1644
|
+
_b = _c.sent(), presignedNonEnduser = _b.presignedUpload, fileNonEnduser = _b.file;
|
|
1645
|
+
return [4 /*yield*/, sdk.api.files.prepare_file_upload({
|
|
1646
|
+
name: 'Test Public', size: buff.byteLength, type: 'text/plain',
|
|
1647
|
+
enduserId: enduser.id,
|
|
1606
1648
|
publicRead: true,
|
|
1607
1649
|
publicName: 'public',
|
|
1608
1650
|
})];
|
|
1609
|
-
case
|
|
1610
|
-
|
|
1651
|
+
case 7:
|
|
1652
|
+
presigned2 = (_c.sent()).presignedUpload;
|
|
1611
1653
|
return [4 /*yield*/, sdk.UPLOAD(
|
|
1612
1654
|
// @ts-ignore
|
|
1613
1655
|
presignedUpload, buff)];
|
|
1614
|
-
case
|
|
1656
|
+
case 8:
|
|
1657
|
+
_c.sent();
|
|
1658
|
+
return [4 /*yield*/, sdk.UPLOAD(
|
|
1659
|
+
// @ts-ignore
|
|
1660
|
+
presignedNonEnduser, buff)];
|
|
1661
|
+
case 9:
|
|
1615
1662
|
_c.sent();
|
|
1616
1663
|
return [4 /*yield*/, sdk.UPLOAD(
|
|
1617
1664
|
// @ts-ignore
|
|
1618
1665
|
presigned2, buff)];
|
|
1619
|
-
case
|
|
1666
|
+
case 10:
|
|
1667
|
+
_c.sent();
|
|
1668
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Files associated with enduser on prepare_file_upload", function () { return sdkNonAdmin.api.files.getSome({ filter: { enduserId: enduser.id } }); }, { onResult: function (fs) { return fs.length === 2; } })];
|
|
1669
|
+
case 11:
|
|
1620
1670
|
_c.sent();
|
|
1621
1671
|
return [4 /*yield*/, sdk.api.files.file_download_URL({ secureName: file.secureName })];
|
|
1622
|
-
case
|
|
1672
|
+
case 12:
|
|
1623
1673
|
downloadURL = (_c.sent()).downloadURL;
|
|
1624
1674
|
return [4 /*yield*/, sdk.DOWNLOAD(downloadURL)];
|
|
1625
|
-
case
|
|
1675
|
+
case 13:
|
|
1626
1676
|
downloaded = _c.sent();
|
|
1627
1677
|
(0, testing_1.assert)(downloaded === buff.toString(), 'downloaded file does not match uploaded file', 'upload, download comparison');
|
|
1628
1678
|
return [4 /*yield*/, sdk.api.files.file_download_URL({ secureName: file.secureName })];
|
|
1629
|
-
case
|
|
1679
|
+
case 14:
|
|
1630
1680
|
cachedURL = (_c.sent()).downloadURL;
|
|
1631
1681
|
(0, testing_1.assert)(downloadURL === cachedURL, 'cache download url failed', 'download url cache');
|
|
1632
1682
|
return [4 /*yield*/, enduserSDK.api.files.file_download_URL({ secureName: file.secureName })];
|
|
1633
|
-
case
|
|
1683
|
+
case 15:
|
|
1634
1684
|
urlForEnduser = (_c.sent()).downloadURL;
|
|
1635
1685
|
(0, testing_1.assert)(downloadURL === urlForEnduser, 'failed to get download url for enduser', 'download url for enduser');
|
|
1636
1686
|
return [4 /*yield*/, Promise.all([
|
|
1637
1687
|
sdk.api.endusers.deleteOne(enduser.id),
|
|
1638
|
-
sdk.api.files.deleteOne(file.id),
|
|
1639
|
-
sdk.api.files.deleteOne(publicFile.id),
|
|
1640
1688
|
])];
|
|
1641
|
-
case
|
|
1689
|
+
case 16:
|
|
1690
|
+
_c.sent();
|
|
1691
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)]; // wait for files to be deleted as side effect
|
|
1692
|
+
case 17:
|
|
1693
|
+
_c.sent(); // wait for files to be deleted as side effect
|
|
1694
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Files cleaned up as side effect of deleting enduser", function () { return sdkNonAdmin.api.files.getSome({ filter: { enduserId: enduser.id } }); }, { onResult: function (fs) { return fs.length === 0; } })];
|
|
1695
|
+
case 18:
|
|
1696
|
+
_c.sent();
|
|
1697
|
+
return [4 /*yield*/, (0, testing_1.async_test)("Non-enduser file is left", function () { return sdkNonAdmin.api.files.getSome(); }, { onResult: function (fs) { return fs.length > 0; } })
|
|
1698
|
+
// cleanup other file
|
|
1699
|
+
];
|
|
1700
|
+
case 19:
|
|
1701
|
+
_c.sent();
|
|
1702
|
+
// cleanup other file
|
|
1703
|
+
return [4 /*yield*/, Promise.all([
|
|
1704
|
+
sdk.api.files.deleteOne(fileNonEnduser.id),
|
|
1705
|
+
])];
|
|
1706
|
+
case 20:
|
|
1707
|
+
// cleanup other file
|
|
1642
1708
|
_c.sent();
|
|
1643
1709
|
return [2 /*return*/];
|
|
1644
1710
|
}
|
|
@@ -3538,11 +3604,160 @@ var filter_by_date_tests = function () { return __awaiter(void 0, void 0, void 0
|
|
|
3538
3604
|
});
|
|
3539
3605
|
}); };
|
|
3540
3606
|
exports.filter_by_date_tests = filter_by_date_tests;
|
|
3607
|
+
var self_serve_appointment_booking_tests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
3608
|
+
var e1, e2, event15min, event30min, nySlots, bookedAppointment, conflict;
|
|
3609
|
+
return __generator(this, function (_a) {
|
|
3610
|
+
switch (_a.label) {
|
|
3611
|
+
case 0:
|
|
3612
|
+
(0, testing_1.log_header)("Self Serve Appointment Booking");
|
|
3613
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'ny@tellescope.com', state: 'NY' })];
|
|
3614
|
+
case 1:
|
|
3615
|
+
e1 = _a.sent();
|
|
3616
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ email: 'ca@tellescope.com', state: 'CA' })];
|
|
3617
|
+
case 2:
|
|
3618
|
+
e2 = _a.sent();
|
|
3619
|
+
return [4 /*yield*/, sdk.api.endusers.set_password({ id: e1.id, password: password })];
|
|
3620
|
+
case 3:
|
|
3621
|
+
_a.sent();
|
|
3622
|
+
return [4 /*yield*/, sdk.api.endusers.set_password({ id: e2.id, password: password })];
|
|
3623
|
+
case 4:
|
|
3624
|
+
_a.sent();
|
|
3625
|
+
return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
|
|
3626
|
+
title: 'test 2', durationInMinutes: 15,
|
|
3627
|
+
})];
|
|
3628
|
+
case 5:
|
|
3629
|
+
event15min = _a.sent();
|
|
3630
|
+
return [4 /*yield*/, sdk.api.calendar_event_templates.createOne({
|
|
3631
|
+
title: 'test 1', durationInMinutes: 30,
|
|
3632
|
+
})];
|
|
3633
|
+
case 6:
|
|
3634
|
+
event30min = _a.sent();
|
|
3635
|
+
return [4 /*yield*/, sdk.api.users.updateOne(sdk.userInfo.id, {
|
|
3636
|
+
weeklyAvailabilities: [
|
|
3637
|
+
{
|
|
3638
|
+
dayOfWeekStartingSundayIndexedByZero: 0,
|
|
3639
|
+
startTimeInMinutes: 60 * 12,
|
|
3640
|
+
endTimeInMinutes: 60 * 13, // 1pm,
|
|
3641
|
+
},
|
|
3642
|
+
],
|
|
3643
|
+
credentialedStates: [{ state: 'NY' }, { state: "CA" }],
|
|
3644
|
+
timezone: 'America/New_York',
|
|
3645
|
+
}, {
|
|
3646
|
+
replaceObjectFields: true,
|
|
3647
|
+
})];
|
|
3648
|
+
case 7:
|
|
3649
|
+
_a.sent();
|
|
3650
|
+
return [4 /*yield*/, sdkNonAdmin.api.users.updateOne(sdkNonAdmin.userInfo.id, {
|
|
3651
|
+
weeklyAvailabilities: [
|
|
3652
|
+
{
|
|
3653
|
+
dayOfWeekStartingSundayIndexedByZero: 0,
|
|
3654
|
+
startTimeInMinutes: 60 * 12,
|
|
3655
|
+
endTimeInMinutes: 60 * 13, // 1pm,
|
|
3656
|
+
},
|
|
3657
|
+
],
|
|
3658
|
+
credentialedStates: [{ state: "CA" }],
|
|
3659
|
+
timezone: 'America/Los_Angeles',
|
|
3660
|
+
}, {
|
|
3661
|
+
replaceObjectFields: true,
|
|
3662
|
+
})
|
|
3663
|
+
// NY Enduser Tests
|
|
3664
|
+
];
|
|
3665
|
+
case 8:
|
|
3666
|
+
_a.sent();
|
|
3667
|
+
// NY Enduser Tests
|
|
3668
|
+
return [4 /*yield*/, enduserSDK.authenticate('ny@tellescope.com', password).catch(console.error)];
|
|
3669
|
+
case 9:
|
|
3670
|
+
// NY Enduser Tests
|
|
3671
|
+
_a.sent();
|
|
3672
|
+
return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
3673
|
+
calendarEventTemplateId: event30min.id,
|
|
3674
|
+
from: new Date(),
|
|
3675
|
+
restrictedByState: true,
|
|
3676
|
+
}); }, { onResult: function (r) { return r.availabilityBlocks.length === 2; } })];
|
|
3677
|
+
case 10:
|
|
3678
|
+
_a.sent();
|
|
3679
|
+
return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for no state restrictions', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
3680
|
+
calendarEventTemplateId: event30min.id,
|
|
3681
|
+
from: new Date(),
|
|
3682
|
+
restrictedByState: false,
|
|
3683
|
+
}); }, { onResult: function (r) { return r.availabilityBlocks.length === 4; } })];
|
|
3684
|
+
case 11:
|
|
3685
|
+
_a.sent();
|
|
3686
|
+
return [4 /*yield*/, enduserSDK.api.calendar_events.get_appointment_availability({
|
|
3687
|
+
calendarEventTemplateId: event30min.id,
|
|
3688
|
+
from: new Date(),
|
|
3689
|
+
restrictedByState: true,
|
|
3690
|
+
})];
|
|
3691
|
+
case 12:
|
|
3692
|
+
nySlots = _a.sent();
|
|
3693
|
+
return [4 /*yield*/, enduserSDK.api.calendar_events.book_appointment({
|
|
3694
|
+
calendarEventTemplateId: event30min.id,
|
|
3695
|
+
startTime: new Date(nySlots.availabilityBlocks[0].startTimeInMS),
|
|
3696
|
+
userId: nySlots.availabilityBlocks[0].userId,
|
|
3697
|
+
})];
|
|
3698
|
+
case 13:
|
|
3699
|
+
bookedAppointment = (_a.sent()).createdEvent;
|
|
3700
|
+
return [4 /*yield*/, (0, testing_1.async_test)('double-booking prevented', function () { return enduserSDK.api.calendar_events.book_appointment({
|
|
3701
|
+
calendarEventTemplateId: event30min.id,
|
|
3702
|
+
startTime: new Date(nySlots.availabilityBlocks[0].startTimeInMS),
|
|
3703
|
+
userId: nySlots.availabilityBlocks[0].userId,
|
|
3704
|
+
}); }, handleAnyError)];
|
|
3705
|
+
case 14:
|
|
3706
|
+
_a.sent();
|
|
3707
|
+
return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction with 1 overlapping conflict', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
3708
|
+
calendarEventTemplateId: event30min.id,
|
|
3709
|
+
from: new Date(),
|
|
3710
|
+
restrictedByState: true,
|
|
3711
|
+
}); }, { onResult: function (r) {
|
|
3712
|
+
return r.availabilityBlocks.length === 1
|
|
3713
|
+
&& r.availabilityBlocks[0].startTimeInMS === nySlots.availabilityBlocks[1].startTimeInMS;
|
|
3714
|
+
} // the first slot of nySlots is booked
|
|
3715
|
+
})];
|
|
3716
|
+
case 15:
|
|
3717
|
+
_a.sent();
|
|
3718
|
+
return [4 /*yield*/, sdk.api.calendar_events.createOne({
|
|
3719
|
+
title: 'conflict',
|
|
3720
|
+
startTimeInMS: nySlots.availabilityBlocks[1].startTimeInMS,
|
|
3721
|
+
durationInMinutes: nySlots.availabilityBlocks[1].durationInMinutes,
|
|
3722
|
+
})];
|
|
3723
|
+
case 16:
|
|
3724
|
+
conflict = _a.sent();
|
|
3725
|
+
return [4 /*yield*/, (0, testing_1.async_test)('30 minute slots for state restriction with 2 overlapping conflict', function () { return enduserSDK.api.calendar_events.get_appointment_availability({
|
|
3726
|
+
calendarEventTemplateId: event30min.id,
|
|
3727
|
+
from: new Date(),
|
|
3728
|
+
restrictedByState: true,
|
|
3729
|
+
}); }, { onResult: function (r) { return r.availabilityBlocks.length === 0; } })];
|
|
3730
|
+
case 17:
|
|
3731
|
+
_a.sent();
|
|
3732
|
+
return [4 /*yield*/, (0, testing_1.async_test)('booking against conflict prevented', function () { return enduserSDK.api.calendar_events.book_appointment({
|
|
3733
|
+
calendarEventTemplateId: event30min.id,
|
|
3734
|
+
startTime: new Date(nySlots.availabilityBlocks[1].startTimeInMS),
|
|
3735
|
+
userId: nySlots.availabilityBlocks[1].userId,
|
|
3736
|
+
}); }, handleAnyError)];
|
|
3737
|
+
case 18:
|
|
3738
|
+
_a.sent();
|
|
3739
|
+
return [4 /*yield*/, Promise.all([
|
|
3740
|
+
sdk.api.endusers.deleteOne(e1.id),
|
|
3741
|
+
sdk.api.endusers.deleteOne(e2.id),
|
|
3742
|
+
sdk.api.calendar_event_templates.deleteOne(event30min.id),
|
|
3743
|
+
sdk.api.calendar_event_templates.deleteOne(event15min.id),
|
|
3744
|
+
sdk.api.calendar_events.deleteOne(bookedAppointment.id),
|
|
3745
|
+
sdk.api.calendar_events.deleteOne(conflict.id),
|
|
3746
|
+
])];
|
|
3747
|
+
case 19:
|
|
3748
|
+
_a.sent();
|
|
3749
|
+
return [2 /*return*/];
|
|
3750
|
+
}
|
|
3751
|
+
});
|
|
3752
|
+
}); };
|
|
3753
|
+
exports.self_serve_appointment_booking_tests = self_serve_appointment_booking_tests;
|
|
3541
3754
|
var NO_TEST = function () { };
|
|
3542
3755
|
var tests = {
|
|
3756
|
+
chat_rooms: chat_room_tests,
|
|
3757
|
+
automation_steps: automation_events_tests,
|
|
3758
|
+
files: files_tests,
|
|
3543
3759
|
enduser_tasks: NO_TEST,
|
|
3544
3760
|
care_plans: NO_TEST,
|
|
3545
|
-
automation_steps: automation_events_tests,
|
|
3546
3761
|
portal_customizations: NO_TEST,
|
|
3547
3762
|
calendar_event_templates: NO_TEST,
|
|
3548
3763
|
databases: exports.databases_tests,
|
|
@@ -3557,10 +3772,8 @@ var tests = {
|
|
|
3557
3772
|
tasks: tasks_tests,
|
|
3558
3773
|
emails: email_tests,
|
|
3559
3774
|
sms_messages: sms_tests,
|
|
3560
|
-
chat_rooms: chat_room_tests,
|
|
3561
3775
|
users: users_tests,
|
|
3562
3776
|
templates: NO_TEST,
|
|
3563
|
-
files: files_tests,
|
|
3564
3777
|
tickets: NO_TEST,
|
|
3565
3778
|
meetings: exports.meetings_tests,
|
|
3566
3779
|
notes: NO_TEST,
|
|
@@ -3591,7 +3804,7 @@ var tests = {
|
|
|
3591
3804
|
(0, testing_1.log_header)("API");
|
|
3592
3805
|
_h.label = 1;
|
|
3593
3806
|
case 1:
|
|
3594
|
-
_h.trys.push([1,
|
|
3807
|
+
_h.trys.push([1, 19, , 20]);
|
|
3595
3808
|
return [4 /*yield*/, Promise.all([
|
|
3596
3809
|
sdk.authenticate(email, password),
|
|
3597
3810
|
sdkNonAdmin.authenticate(nonAdminEmail, nonAdminPassword),
|
|
@@ -3604,47 +3817,50 @@ var tests = {
|
|
|
3604
3817
|
return [4 /*yield*/, multi_tenant_tests()]; // should come right after setup tests
|
|
3605
3818
|
case 4:
|
|
3606
3819
|
_h.sent(); // should come right after setup tests
|
|
3607
|
-
return [4 /*yield*/, (0, exports.
|
|
3820
|
+
return [4 /*yield*/, (0, exports.self_serve_appointment_booking_tests)()];
|
|
3608
3821
|
case 5:
|
|
3609
3822
|
_h.sent();
|
|
3610
|
-
return [4 /*yield*/,
|
|
3823
|
+
return [4 /*yield*/, (0, exports.filter_by_date_tests)()];
|
|
3611
3824
|
case 6:
|
|
3612
3825
|
_h.sent();
|
|
3613
|
-
return [4 /*yield*/,
|
|
3826
|
+
return [4 /*yield*/, generate_user_auth_tests()];
|
|
3614
3827
|
case 7:
|
|
3615
3828
|
_h.sent();
|
|
3616
|
-
return [4 /*yield*/,
|
|
3829
|
+
return [4 /*yield*/, role_based_access_tests()];
|
|
3617
3830
|
case 8:
|
|
3618
3831
|
_h.sent();
|
|
3619
|
-
return [4 /*yield*/,
|
|
3832
|
+
return [4 /*yield*/, generateEnduserAuthTests()];
|
|
3620
3833
|
case 9:
|
|
3621
3834
|
_h.sent();
|
|
3622
|
-
return [4 /*yield*/,
|
|
3835
|
+
return [4 /*yield*/, public_form_tests()];
|
|
3623
3836
|
case 10:
|
|
3624
3837
|
_h.sent();
|
|
3625
|
-
return [4 /*yield*/,
|
|
3838
|
+
return [4 /*yield*/, search_tests()];
|
|
3626
3839
|
case 11:
|
|
3627
3840
|
_h.sent();
|
|
3628
|
-
return [4 /*yield*/,
|
|
3841
|
+
return [4 /*yield*/, badInputTests()];
|
|
3629
3842
|
case 12:
|
|
3630
3843
|
_h.sent();
|
|
3631
|
-
return [4 /*yield*/,
|
|
3844
|
+
return [4 /*yield*/, filterTests()];
|
|
3632
3845
|
case 13:
|
|
3633
3846
|
_h.sent();
|
|
3634
|
-
return [4 /*yield*/,
|
|
3847
|
+
return [4 /*yield*/, updatesTests()];
|
|
3635
3848
|
case 14:
|
|
3636
3849
|
_h.sent();
|
|
3637
|
-
return [4 /*yield*/,
|
|
3850
|
+
return [4 /*yield*/, threadKeyTests()];
|
|
3638
3851
|
case 15:
|
|
3639
3852
|
_h.sent();
|
|
3640
|
-
return [4 /*yield*/,
|
|
3853
|
+
return [4 /*yield*/, enduserAccessTests()];
|
|
3641
3854
|
case 16:
|
|
3642
3855
|
_h.sent();
|
|
3643
|
-
return [4 /*yield*/,
|
|
3856
|
+
return [4 /*yield*/, enduser_session_tests()];
|
|
3644
3857
|
case 17:
|
|
3645
3858
|
_h.sent();
|
|
3646
|
-
return [
|
|
3859
|
+
return [4 /*yield*/, enduser_redaction_tests()];
|
|
3647
3860
|
case 18:
|
|
3861
|
+
_h.sent();
|
|
3862
|
+
return [3 /*break*/, 20];
|
|
3863
|
+
case 19:
|
|
3648
3864
|
err_1 = _h.sent();
|
|
3649
3865
|
console.error("Failed during custom test");
|
|
3650
3866
|
if (err_1.message && err_1.info) {
|
|
@@ -3654,15 +3870,15 @@ var tests = {
|
|
|
3654
3870
|
console.error(err_1);
|
|
3655
3871
|
}
|
|
3656
3872
|
process.exit(1);
|
|
3657
|
-
return [3 /*break*/,
|
|
3658
|
-
case
|
|
3873
|
+
return [3 /*break*/, 20];
|
|
3874
|
+
case 20:
|
|
3659
3875
|
_a = [];
|
|
3660
3876
|
for (_b in schema_1.schema)
|
|
3661
3877
|
_a.push(_b);
|
|
3662
3878
|
_i = 0;
|
|
3663
|
-
_h.label =
|
|
3664
|
-
case
|
|
3665
|
-
if (!(_i < _a.length)) return [3 /*break*/,
|
|
3879
|
+
_h.label = 21;
|
|
3880
|
+
case 21:
|
|
3881
|
+
if (!(_i < _a.length)) return [3 /*break*/, 24];
|
|
3666
3882
|
n = _a[_i];
|
|
3667
3883
|
returnValidation = (_g = (_f = schema_1.schema[n].customActions) === null || _f === void 0 ? void 0 : _f.create) === null || _g === void 0 ? void 0 : _g.returns;
|
|
3668
3884
|
return [4 /*yield*/, run_generated_tests({
|
|
@@ -3673,38 +3889,38 @@ var tests = {
|
|
|
3673
3889
|
create: returnValidation // ModelFields<ClientModel>,
|
|
3674
3890
|
}
|
|
3675
3891
|
})];
|
|
3676
|
-
case 21:
|
|
3677
|
-
_h.sent();
|
|
3678
|
-
_h.label = 22;
|
|
3679
3892
|
case 22:
|
|
3680
|
-
|
|
3681
|
-
|
|
3893
|
+
_h.sent();
|
|
3894
|
+
_h.label = 23;
|
|
3682
3895
|
case 23:
|
|
3896
|
+
_i++;
|
|
3897
|
+
return [3 /*break*/, 21];
|
|
3898
|
+
case 24:
|
|
3683
3899
|
_c = [];
|
|
3684
3900
|
for (_d in tests)
|
|
3685
3901
|
_c.push(_d);
|
|
3686
3902
|
_e = 0;
|
|
3687
|
-
_h.label = 24;
|
|
3688
|
-
case 24:
|
|
3689
|
-
if (!(_e < _c.length)) return [3 /*break*/, 29];
|
|
3690
|
-
t = _c[_e];
|
|
3691
3903
|
_h.label = 25;
|
|
3692
3904
|
case 25:
|
|
3693
|
-
|
|
3694
|
-
|
|
3905
|
+
if (!(_e < _c.length)) return [3 /*break*/, 30];
|
|
3906
|
+
t = _c[_e];
|
|
3907
|
+
_h.label = 26;
|
|
3695
3908
|
case 26:
|
|
3696
|
-
_h.
|
|
3697
|
-
return [
|
|
3909
|
+
_h.trys.push([26, 28, , 29]);
|
|
3910
|
+
return [4 /*yield*/, tests[t]()];
|
|
3698
3911
|
case 27:
|
|
3912
|
+
_h.sent();
|
|
3913
|
+
return [3 /*break*/, 29];
|
|
3914
|
+
case 28:
|
|
3699
3915
|
err_2 = _h.sent();
|
|
3700
3916
|
console.error("Error running test:");
|
|
3701
3917
|
console.error(err_2);
|
|
3702
3918
|
process.exit(1);
|
|
3703
|
-
return [3 /*break*/,
|
|
3704
|
-
case 28:
|
|
3705
|
-
_e++;
|
|
3706
|
-
return [3 /*break*/, 24];
|
|
3919
|
+
return [3 /*break*/, 29];
|
|
3707
3920
|
case 29:
|
|
3921
|
+
_e++;
|
|
3922
|
+
return [3 /*break*/, 25];
|
|
3923
|
+
case 30:
|
|
3708
3924
|
process.exit();
|
|
3709
3925
|
return [2 /*return*/];
|
|
3710
3926
|
}
|