@tellescope/sdk 1.256.7 → 1.256.9
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/tests/api_tests/appointment_link_expiration.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/appointment_link_expiration.test.js +12 -9
- package/lib/cjs/tests/api_tests/appointment_link_expiration.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/create_note_action.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/create_note_action.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/create_note_action.test.js +237 -0
- package/lib/cjs/tests/api_tests/create_note_action.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js +293 -0
- package/lib/cjs/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js +132 -47
- package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.js +262 -0
- package/lib/cjs/tests/api_tests/webhook_raw_json_number.test.js.map +1 -0
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +262 -223
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/tests/api_tests/appointment_link_expiration.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/appointment_link_expiration.test.js +12 -9
- package/lib/esm/tests/api_tests/appointment_link_expiration.test.js.map +1 -1
- package/lib/esm/tests/api_tests/create_note_action.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/create_note_action.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/create_note_action.test.js +233 -0
- package/lib/esm/tests/api_tests/create_note_action.test.js.map +1 -0
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js +289 -0
- package/lib/esm/tests/api_tests/group_event_attendee_self_update.test.js.map +1 -0
- package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js +132 -47
- package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js.map +1 -1
- package/lib/esm/tests/api_tests/webhook_raw_json_number.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/webhook_raw_json_number.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/webhook_raw_json_number.test.js +258 -0
- package/lib/esm/tests/api_tests/webhook_raw_json_number.test.js.map +1 -0
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +263 -224
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/tests/api_tests/appointment_link_expiration.test.ts +7 -2
- package/src/tests/api_tests/create_note_action.test.ts +168 -0
- package/src/tests/api_tests/group_event_attendee_self_update.test.ts +161 -0
- package/src/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.ts +66 -6
- package/src/tests/api_tests/webhook_raw_json_number.test.ts +152 -0
- package/src/tests/tests.ts +54 -1
- package/test_generated.pdf +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appointment_link_expiration.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/appointment_link_expiration.test.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"appointment_link_expiration.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/appointment_link_expiration.test.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAwCnC,eAAO,MAAM,iCAAiC;SAA2B,OAAO;iBAAe,OAAO;mBA+BrG,CAAA"}
|
|
@@ -59,18 +59,21 @@ var decode_jwt_payload = function (token) {
|
|
|
59
59
|
// The API returns a /r/<token> shortlink, not the destination — follow one hop and pull the
|
|
60
60
|
// `token` query param out of the URL the patient actually lands on.
|
|
61
61
|
var resolve_redirect_token = function (link) { return __awaiter(void 0, void 0, void 0, function () {
|
|
62
|
-
var _a, status, headers, location, token;
|
|
63
|
-
return __generator(this, function (
|
|
64
|
-
switch (
|
|
65
|
-
case 0:
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
var _a, pathname, search, followURL, _b, status, headers, location, token;
|
|
63
|
+
return __generator(this, function (_c) {
|
|
64
|
+
switch (_c.label) {
|
|
65
|
+
case 0:
|
|
66
|
+
_a = new URL(link), pathname = _a.pathname, search = _a.search;
|
|
67
|
+
followURL = "".concat(host).concat(pathname).concat(search);
|
|
68
|
+
return [4 /*yield*/, axios_1.default.get(followURL, {
|
|
69
|
+
maxRedirects: 0,
|
|
70
|
+
validateStatus: function () { return true; },
|
|
71
|
+
})];
|
|
69
72
|
case 1:
|
|
70
|
-
|
|
73
|
+
_b = _c.sent(), status = _b.status, headers = _b.headers;
|
|
71
74
|
location = headers['location'];
|
|
72
75
|
if (!location)
|
|
73
|
-
throw new Error("Expected a redirect from ".concat(
|
|
76
|
+
throw new Error("Expected a redirect from ".concat(followURL, ", got status ").concat(status));
|
|
74
77
|
token = new URL(location).searchParams.get('token');
|
|
75
78
|
if (!token)
|
|
76
79
|
throw new Error("No token query param in redirect destination: ".concat(location));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appointment_link_expiration.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/appointment_link_expiration.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,EAAE,CAAC;AAExC,gDAAyB;AAEzB,iCAAmC;AACnC,+CAA4D;AAC5D,kCAAsC;AAEtC,IAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,uBAAuB,CAAA;AAE3D,IAAM,kBAAkB,GAAG,KAAK,CAAA;AAChC,IAAM,cAAc,GAAG,GAAG,CAAA,CAAC,8EAA8E;AAEzG,gGAAgG;AAChG,oEAAoE;AACpE,IAAM,kBAAkB,GAAG,UAAC,KAAa;IACjC,IAAA,KAAc,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAA3B,OAAO,QAAoB,CAAA;IACpC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAA;IAC1C,OAAO,IAAI,CAAC,KAAK,CACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CACtD,CAAA;AACnC,CAAC,CAAA;AAED,4FAA4F;AAC5F,oEAAoE;AACpE,IAAM,sBAAsB,GAAG,UAAO,IAAY
|
|
1
|
+
{"version":3,"file":"appointment_link_expiration.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/appointment_link_expiration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create_note_action.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/create_note_action.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAWnC,eAAO,MAAM,wBAAwB;SAA2B,OAAO;iBAAe,OAAO;mBAqI5F,CAAA"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.create_note_action_tests = void 0;
|
|
51
|
+
require('source-map-support').install();
|
|
52
|
+
var sdk_1 = require("../../sdk");
|
|
53
|
+
var testing_1 = require("@tellescope/testing");
|
|
54
|
+
var setup_1 = require("../setup");
|
|
55
|
+
var host = process.env.API_URL || "http://localhost:8080";
|
|
56
|
+
// createNote journey action: creates a note on the enduser timeline with deterministic
|
|
57
|
+
// (merge-field) text, or AI-generated text when aiSummaryConfiguration.enabled is set.
|
|
58
|
+
// The deterministic path is fully covered here; the AI path asserts config round-trip and,
|
|
59
|
+
// when the org lacks Bedrock enablement/credits (typical dev org), the error path instead.
|
|
60
|
+
var create_note_action_tests = function (_a) {
|
|
61
|
+
var sdk = _a.sdk;
|
|
62
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
63
|
+
var journey, createdEnduserIds, validInfo_1, step_1, processFor, enduser, result, notes, hiddenResult, allNotes, hiddenNote, aiInfo, aiStep, aiEnduser, aiResult, aiNotes, conversations, _i, createdEnduserIds_1, id;
|
|
64
|
+
var _b, _c;
|
|
65
|
+
return __generator(this, function (_d) {
|
|
66
|
+
switch (_d.label) {
|
|
67
|
+
case 0:
|
|
68
|
+
(0, testing_1.log_header)("Create Note Action Tests");
|
|
69
|
+
return [4 /*yield*/, sdk.api.journeys.createOne({ title: 'Create Note Test Journey' })];
|
|
70
|
+
case 1:
|
|
71
|
+
journey = _d.sent();
|
|
72
|
+
createdEnduserIds = [];
|
|
73
|
+
_d.label = 2;
|
|
74
|
+
case 2:
|
|
75
|
+
_d.trys.push([2, , 18, 24]);
|
|
76
|
+
validInfo_1 = {
|
|
77
|
+
title: 'Note for {{enduser.fname}}',
|
|
78
|
+
text: 'Hi {{enduser.fname}}, this is a journey note.',
|
|
79
|
+
tags: ['auto-note'],
|
|
80
|
+
};
|
|
81
|
+
return [4 /*yield*/, sdk.api.automation_steps.createOne({
|
|
82
|
+
journeyId: journey.id,
|
|
83
|
+
events: [{ type: 'onJourneyStart', info: {} }],
|
|
84
|
+
action: { type: 'createNote', info: validInfo_1 },
|
|
85
|
+
})];
|
|
86
|
+
case 3:
|
|
87
|
+
step_1 = _d.sent();
|
|
88
|
+
(0, testing_1.assert)(step_1.action.type === 'createNote' && step_1.action.info.title === validInfo_1.title && step_1.action.info.text === validInfo_1.text, 'createNote step round-trip failed', 'createNote step round-trips');
|
|
89
|
+
return [4 /*yield*/, (0, testing_1.async_test)('createNote without title is rejected', function () { return sdk.api.automation_steps.createOne({
|
|
90
|
+
journeyId: journey.id,
|
|
91
|
+
events: [{ type: 'onJourneyStart', info: {} }],
|
|
92
|
+
action: { type: 'createNote', info: __assign(__assign({}, validInfo_1), { title: undefined }) },
|
|
93
|
+
}); }, { shouldError: true, onError: function () { return true; } })];
|
|
94
|
+
case 4:
|
|
95
|
+
_d.sent();
|
|
96
|
+
return [4 /*yield*/, (0, testing_1.async_test)('createNote with over-length title is rejected', function () { return sdk.api.automation_steps.createOne({
|
|
97
|
+
journeyId: journey.id,
|
|
98
|
+
events: [{ type: 'onJourneyStart', info: {} }],
|
|
99
|
+
action: { type: 'createNote', info: __assign(__assign({}, validInfo_1), { title: 'x'.repeat(251) }) },
|
|
100
|
+
}); }, { shouldError: true, onError: function () { return true; } })
|
|
101
|
+
/*************** Runtime: the process endpoint ***************/
|
|
102
|
+
];
|
|
103
|
+
case 5:
|
|
104
|
+
_d.sent();
|
|
105
|
+
processFor = function (enduserId, info) { return __awaiter(void 0, void 0, void 0, function () {
|
|
106
|
+
var automatedAction;
|
|
107
|
+
return __generator(this, function (_a) {
|
|
108
|
+
switch (_a.label) {
|
|
109
|
+
case 0: return [4 /*yield*/, sdk.api.automated_actions.createOne({
|
|
110
|
+
enduserId: enduserId,
|
|
111
|
+
journeyId: journey.id,
|
|
112
|
+
automationStepId: step_1.id,
|
|
113
|
+
event: { type: 'onJourneyStart', info: {} },
|
|
114
|
+
action: { type: 'createNote', info: info },
|
|
115
|
+
status: 'active',
|
|
116
|
+
processAfter: Date.now(),
|
|
117
|
+
})];
|
|
118
|
+
case 1:
|
|
119
|
+
automatedAction = _a.sent();
|
|
120
|
+
return [2 /*return*/, sdk.api.automated_actions.process({ automatedActionId: automatedAction.id })];
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}); };
|
|
124
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ fname: 'NoteTest' })];
|
|
125
|
+
case 6:
|
|
126
|
+
enduser = _d.sent();
|
|
127
|
+
createdEnduserIds.push(enduser.id);
|
|
128
|
+
return [4 /*yield*/, processFor(enduser.id, validInfo_1)];
|
|
129
|
+
case 7:
|
|
130
|
+
result = _d.sent();
|
|
131
|
+
(0, testing_1.assert)(result.success === true, "deterministic createNote failed: ".concat(result.error), 'deterministic createNote succeeds');
|
|
132
|
+
return [4 /*yield*/, sdk.api.notes.getSome({ filter: { enduserId: enduser.id } })];
|
|
133
|
+
case 8:
|
|
134
|
+
notes = _d.sent();
|
|
135
|
+
(0, testing_1.assert)(notes.length === 1, "expected 1 note, got ".concat(notes.length), 'exactly one note created');
|
|
136
|
+
(0, testing_1.assert)(notes[0].title === 'Note for NoteTest', "title not templated: ".concat(notes[0].title), 'title merge fields resolve');
|
|
137
|
+
(0, testing_1.assert)(notes[0].text === 'Hi NoteTest, this is a journey note.', "text not templated: ".concat(notes[0].text), 'text merge fields resolve');
|
|
138
|
+
(0, testing_1.assert)(!!((_b = notes[0].tags) === null || _b === void 0 ? void 0 : _b.includes('auto-note')), 'tags missing on note', 'tags set on note');
|
|
139
|
+
(0, testing_1.assert)(notes[0].source === 'Journey', "wrong source: ".concat(notes[0].source), 'note source is Journey');
|
|
140
|
+
(0, testing_1.assert)(!notes[0].hiddenFromTimeline, 'note unexpectedly hidden', 'note visible on timeline by default');
|
|
141
|
+
(0, testing_1.assert)(!notes[0].aiGenerated, 'deterministic note incorrectly flagged aiGenerated', 'deterministic note not flagged as AI-generated');
|
|
142
|
+
return [4 /*yield*/, processFor(enduser.id, { title: 'Hidden note', hiddenFromTimeline: true })];
|
|
143
|
+
case 9:
|
|
144
|
+
hiddenResult = _d.sent();
|
|
145
|
+
(0, testing_1.assert)(hiddenResult.success === true, "hidden createNote failed: ".concat(hiddenResult.error), 'hidden createNote succeeds');
|
|
146
|
+
return [4 /*yield*/, sdk.api.notes.getSome({ filter: { enduserId: enduser.id } })];
|
|
147
|
+
case 10:
|
|
148
|
+
allNotes = _d.sent();
|
|
149
|
+
hiddenNote = allNotes.find(function (n) { return n.title === 'Hidden note'; });
|
|
150
|
+
(0, testing_1.assert)(!!hiddenNote && hiddenNote.hiddenFromTimeline === true && !hiddenNote.text, 'hidden/textless note not created correctly', 'hiddenFromTimeline note created without text');
|
|
151
|
+
aiInfo = {
|
|
152
|
+
title: 'AI note for {{enduser.fname}}',
|
|
153
|
+
aiSummaryConfiguration: {
|
|
154
|
+
enabled: true,
|
|
155
|
+
prompt: 'Write a one-sentence note stating this is a test patient.',
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
return [4 /*yield*/, sdk.api.automation_steps.createOne({
|
|
159
|
+
journeyId: journey.id,
|
|
160
|
+
events: [{ type: 'onJourneyStart', info: {} }],
|
|
161
|
+
action: { type: 'createNote', info: aiInfo },
|
|
162
|
+
})];
|
|
163
|
+
case 11:
|
|
164
|
+
aiStep = _d.sent();
|
|
165
|
+
(0, testing_1.assert)(aiStep.action.type === 'createNote' && ((_c = aiStep.action.info.aiSummaryConfiguration) === null || _c === void 0 ? void 0 : _c.enabled) === true, 'AI createNote config round-trip failed', 'AI createNote config round-trips');
|
|
166
|
+
return [4 /*yield*/, sdk.api.endusers.createOne({ fname: 'AINoteTest' })];
|
|
167
|
+
case 12:
|
|
168
|
+
aiEnduser = _d.sent();
|
|
169
|
+
createdEnduserIds.push(aiEnduser.id);
|
|
170
|
+
return [4 /*yield*/, processFor(aiEnduser.id, aiInfo)];
|
|
171
|
+
case 13:
|
|
172
|
+
aiResult = _d.sent();
|
|
173
|
+
if (!!aiResult.success) return [3 /*break*/, 14];
|
|
174
|
+
// bedrockAIAllowed/credits are org-level and unreadable here — accept the configuration error path
|
|
175
|
+
(0, testing_1.assert)(/bedrock|credit|enabled|ai/i.test(aiResult.error || ''), "unexpected AI createNote error: ".concat(aiResult.error), 'AI createNote reports a configuration error (Bedrock unavailable — runtime generation skipped)');
|
|
176
|
+
return [3 /*break*/, 17];
|
|
177
|
+
case 14: return [4 /*yield*/, sdk.api.notes.getSome({ filter: { enduserId: aiEnduser.id } })];
|
|
178
|
+
case 15:
|
|
179
|
+
aiNotes = _d.sent();
|
|
180
|
+
(0, testing_1.assert)(aiNotes.length === 1 && !!aiNotes[0].text && aiNotes[0].title === 'AI note for AINoteTest', 'AI-generated note missing or malformed', 'AI-generated note created with non-empty text');
|
|
181
|
+
(0, testing_1.assert)(aiNotes[0].aiGenerated === true, 'AI note missing aiGenerated flag', 'AI note flagged as AI-generated');
|
|
182
|
+
return [4 /*yield*/, sdk.api.ai_conversations.getSome({ filter: { enduserId: aiEnduser.id } })];
|
|
183
|
+
case 16:
|
|
184
|
+
conversations = _d.sent();
|
|
185
|
+
(0, testing_1.assert)(conversations.some(function (c) { return c.type === 'AI Note'; }), 'no AI Note ai_conversations record', 'AI generation logged to ai_conversations with type AI Note');
|
|
186
|
+
_d.label = 17;
|
|
187
|
+
case 17: return [3 /*break*/, 24];
|
|
188
|
+
case 18: return [4 /*yield*/, sdk.api.journeys.deleteOne(journey.id).catch(function () { })];
|
|
189
|
+
case 19:
|
|
190
|
+
_d.sent();
|
|
191
|
+
_i = 0, createdEnduserIds_1 = createdEnduserIds;
|
|
192
|
+
_d.label = 20;
|
|
193
|
+
case 20:
|
|
194
|
+
if (!(_i < createdEnduserIds_1.length)) return [3 /*break*/, 23];
|
|
195
|
+
id = createdEnduserIds_1[_i];
|
|
196
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(id).catch(function () { })];
|
|
197
|
+
case 21:
|
|
198
|
+
_d.sent();
|
|
199
|
+
_d.label = 22;
|
|
200
|
+
case 22:
|
|
201
|
+
_i++;
|
|
202
|
+
return [3 /*break*/, 20];
|
|
203
|
+
case 23: return [7 /*endfinally*/];
|
|
204
|
+
case 24: return [2 /*return*/];
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
exports.create_note_action_tests = create_note_action_tests;
|
|
210
|
+
// Allow running this test file independently
|
|
211
|
+
if (require.main === module) {
|
|
212
|
+
var sdk_2 = new sdk_1.Session({ host: host });
|
|
213
|
+
var sdkNonAdmin_1 = new sdk_1.Session({ host: host });
|
|
214
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
215
|
+
return __generator(this, function (_a) {
|
|
216
|
+
switch (_a.label) {
|
|
217
|
+
case 0: return [4 /*yield*/, (0, setup_1.setup_tests)(sdk_2, sdkNonAdmin_1)];
|
|
218
|
+
case 1:
|
|
219
|
+
_a.sent();
|
|
220
|
+
return [4 /*yield*/, (0, exports.create_note_action_tests)({ sdk: sdk_2, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
221
|
+
case 2:
|
|
222
|
+
_a.sent();
|
|
223
|
+
return [2 /*return*/];
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}); };
|
|
227
|
+
runTests()
|
|
228
|
+
.then(function () {
|
|
229
|
+
console.log("✅ Create Note Action test suite completed successfully");
|
|
230
|
+
process.exit(0);
|
|
231
|
+
})
|
|
232
|
+
.catch(function (error) {
|
|
233
|
+
console.error("❌ Create Note Action test suite failed:", error);
|
|
234
|
+
process.exit(1);
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=create_note_action.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create_note_action.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/create_note_action.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group_event_attendee_self_update.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/group_event_attendee_self_update.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAkB,MAAM,WAAW,CAAA;AAWnD,eAAO,MAAM,sCAAsC;SAA2B,OAAO;iBAAe,OAAO;mBA6H1G,CAAA"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
39
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
40
|
+
if (ar || !(i in from)) {
|
|
41
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
42
|
+
ar[i] = from[i];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.group_event_attendee_self_update_tests = void 0;
|
|
49
|
+
require('source-map-support').install();
|
|
50
|
+
var sdk_1 = require("../../sdk");
|
|
51
|
+
var testing_1 = require("@tellescope/testing");
|
|
52
|
+
var setup_1 = require("../setup");
|
|
53
|
+
var host = process.env.API_URL || 'http://localhost:8080';
|
|
54
|
+
// An enduser attendee can PATCH a calendar_event (needed to self-cancel out of a group event), and
|
|
55
|
+
// attendeeStatuses / cancelledGroupAttendees are attendee-keyed arrays that drive per-attendee
|
|
56
|
+
// automation triggers (handle_attendee_status_change_triggers + event-wide completion). The
|
|
57
|
+
// calendar_events relationship constraint must let an enduser touch ONLY their own id's entry, so a
|
|
58
|
+
// patient cannot fire or suppress a co-attendee's Appointment triggers by patching the shared event.
|
|
59
|
+
var group_event_attendee_self_update_tests = function (_a) {
|
|
60
|
+
var sdk = _a.sdk;
|
|
61
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
62
|
+
var createdEnduserIds, createdEventIds, createEnduser, enduserSession, createGroupEvent, attacker_1, victim_1, attackerSDK_1, e1_1, e2_1, e3_1, e4_1, e5_1, e6_1, e7_1, e7ForAttacker_1, e8_1, _i, createdEventIds_1, id, _1, _b, createdEnduserIds_1, id, _2;
|
|
63
|
+
return __generator(this, function (_c) {
|
|
64
|
+
switch (_c.label) {
|
|
65
|
+
case 0:
|
|
66
|
+
(0, testing_1.log_header)("Group Event Attendee Self-Update Constraint");
|
|
67
|
+
createdEnduserIds = [];
|
|
68
|
+
createdEventIds = [];
|
|
69
|
+
createEnduser = function (label) { return __awaiter(void 0, void 0, void 0, function () {
|
|
70
|
+
var e;
|
|
71
|
+
return __generator(this, function (_a) {
|
|
72
|
+
switch (_a.label) {
|
|
73
|
+
case 0: return [4 /*yield*/, sdk.api.endusers.createOne({ email: "attendee_self_update_".concat(label, "_").concat(Date.now(), "@test.tellescope.com") })];
|
|
74
|
+
case 1:
|
|
75
|
+
e = _a.sent();
|
|
76
|
+
createdEnduserIds.push(e.id);
|
|
77
|
+
return [2 /*return*/, e];
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}); };
|
|
81
|
+
enduserSession = function (id) { return __awaiter(void 0, void 0, void 0, function () {
|
|
82
|
+
var _a, authToken, enduser;
|
|
83
|
+
return __generator(this, function (_b) {
|
|
84
|
+
switch (_b.label) {
|
|
85
|
+
case 0: return [4 /*yield*/, sdk.api.endusers.generate_auth_token({ id: id })];
|
|
86
|
+
case 1:
|
|
87
|
+
_a = _b.sent(), authToken = _a.authToken, enduser = _a.enduser;
|
|
88
|
+
return [2 /*return*/, new sdk_1.EnduserSession({ host: host, authToken: authToken, enduser: enduser, businessId: sdk.userInfo.businessId })];
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}); };
|
|
92
|
+
createGroupEvent = function (attendeeIds) { return __awaiter(void 0, void 0, void 0, function () {
|
|
93
|
+
var event;
|
|
94
|
+
return __generator(this, function (_a) {
|
|
95
|
+
switch (_a.label) {
|
|
96
|
+
case 0: return [4 /*yield*/, sdk.api.calendar_events.createOne({
|
|
97
|
+
title: 'Attendee Self-Update Test',
|
|
98
|
+
durationInMinutes: 30,
|
|
99
|
+
startTimeInMS: Date.now() + Math.floor(Math.random() * 100000),
|
|
100
|
+
attendees: attendeeIds.map(function (id) { return ({ type: 'enduser', id: id }); }),
|
|
101
|
+
})];
|
|
102
|
+
case 1:
|
|
103
|
+
event = _a.sent();
|
|
104
|
+
createdEventIds.push(event.id);
|
|
105
|
+
return [2 /*return*/, event];
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}); };
|
|
109
|
+
_c.label = 1;
|
|
110
|
+
case 1:
|
|
111
|
+
_c.trys.push([1, , 25, 38]);
|
|
112
|
+
return [4 /*yield*/, createEnduser('self')];
|
|
113
|
+
case 2:
|
|
114
|
+
attacker_1 = _c.sent();
|
|
115
|
+
return [4 /*yield*/, createEnduser('other')];
|
|
116
|
+
case 3:
|
|
117
|
+
victim_1 = _c.sent();
|
|
118
|
+
return [4 /*yield*/, enduserSession(attacker_1.id)
|
|
119
|
+
// ---- ALLOWED: self-cancel out of a fresh group event (the portal self-cancel path) ----
|
|
120
|
+
];
|
|
121
|
+
case 4:
|
|
122
|
+
attackerSDK_1 = _c.sent();
|
|
123
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
124
|
+
case 5:
|
|
125
|
+
e1_1 = _c.sent();
|
|
126
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may add their OWN cancelledGroupAttendees entry (self-cancel)", function () { return attackerSDK_1.api.calendar_events.updateOne(e1_1.id, {
|
|
127
|
+
cancelledGroupAttendees: [{ id: attacker_1.id, at: new Date() }],
|
|
128
|
+
}, { replaceObjectFields: true }); }, testing_1.passOnAnyResult)
|
|
129
|
+
// ---- ALLOWED: set own attendeeStatuses entry ----
|
|
130
|
+
];
|
|
131
|
+
case 6:
|
|
132
|
+
_c.sent();
|
|
133
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
134
|
+
case 7:
|
|
135
|
+
e2_1 = _c.sent();
|
|
136
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may set their OWN attendeeStatuses entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e2_1.id, {
|
|
137
|
+
attendeeStatuses: [{ id: attacker_1.id, at: new Date(), status: 'Cancelled' }],
|
|
138
|
+
}, { replaceObjectFields: true }); }, testing_1.passOnAnyResult)
|
|
139
|
+
// ---- REJECTED: set a co-attendee's attendeeStatuses (would fire that patient's triggers) ----
|
|
140
|
+
];
|
|
141
|
+
case 8:
|
|
142
|
+
_c.sent();
|
|
143
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
144
|
+
case 9:
|
|
145
|
+
e3_1 = _c.sent();
|
|
146
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may NOT set a co-attendee's attendeeStatuses entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e3_1.id, {
|
|
147
|
+
attendeeStatuses: [{ id: victim_1.id, at: new Date(), status: 'No-showed' }],
|
|
148
|
+
}, { replaceObjectFields: true }); }, testing_1.handleAnyError)
|
|
149
|
+
// ---- REJECTED: set a co-attendee's cancelledGroupAttendees entry ----
|
|
150
|
+
];
|
|
151
|
+
case 10:
|
|
152
|
+
_c.sent();
|
|
153
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
154
|
+
case 11:
|
|
155
|
+
e4_1 = _c.sent();
|
|
156
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may NOT set a co-attendee's cancelledGroupAttendees entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e4_1.id, {
|
|
157
|
+
cancelledGroupAttendees: [{ id: victim_1.id, at: new Date() }],
|
|
158
|
+
}, { replaceObjectFields: true }); }, testing_1.handleAnyError)
|
|
159
|
+
// ---- REJECTED: drop a co-attendee's existing entry (would suppress their completion trigger) ----
|
|
160
|
+
];
|
|
161
|
+
case 12:
|
|
162
|
+
_c.sent();
|
|
163
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
164
|
+
case 13:
|
|
165
|
+
e5_1 = _c.sent();
|
|
166
|
+
return [4 /*yield*/, sdk.api.calendar_events.updateOne(e5_1.id, {
|
|
167
|
+
attendeeStatuses: [{ id: victim_1.id, at: new Date(), status: 'Completed' }],
|
|
168
|
+
}, { replaceObjectFields: true })];
|
|
169
|
+
case 14:
|
|
170
|
+
_c.sent();
|
|
171
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may NOT remove a co-attendee's existing attendeeStatuses entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e5_1.id, {
|
|
172
|
+
attendeeStatuses: [{ id: attacker_1.id, at: new Date(), status: 'Cancelled' }], // silently drops victim's entry
|
|
173
|
+
}, { replaceObjectFields: true }); }, testing_1.handleAnyError)
|
|
174
|
+
// ---- REJECTED: modify a co-attendee's existing entry ----
|
|
175
|
+
];
|
|
176
|
+
case 15:
|
|
177
|
+
_c.sent();
|
|
178
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
179
|
+
case 16:
|
|
180
|
+
e6_1 = _c.sent();
|
|
181
|
+
return [4 /*yield*/, sdk.api.calendar_events.updateOne(e6_1.id, {
|
|
182
|
+
attendeeStatuses: [{ id: victim_1.id, at: new Date(), status: 'Completed' }],
|
|
183
|
+
}, { replaceObjectFields: true })];
|
|
184
|
+
case 17:
|
|
185
|
+
_c.sent();
|
|
186
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may NOT modify a co-attendee's existing attendeeStatuses entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e6_1.id, {
|
|
187
|
+
attendeeStatuses: [{ id: victim_1.id, at: new Date(), status: 'No-showed' }],
|
|
188
|
+
}, { replaceObjectFields: true }); }, testing_1.handleAnyError)
|
|
189
|
+
// ---- ALLOWED: self-cancel while PRESERVING a co-attendee's existing entry (realistic group self-cancel) ----
|
|
190
|
+
];
|
|
191
|
+
case 18:
|
|
192
|
+
_c.sent();
|
|
193
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
194
|
+
case 19:
|
|
195
|
+
e7_1 = _c.sent();
|
|
196
|
+
return [4 /*yield*/, sdk.api.calendar_events.updateOne(e7_1.id, {
|
|
197
|
+
cancelledGroupAttendees: [{ id: victim_1.id, at: new Date() }],
|
|
198
|
+
}, { replaceObjectFields: true })];
|
|
199
|
+
case 20:
|
|
200
|
+
_c.sent();
|
|
201
|
+
return [4 /*yield*/, attackerSDK_1.api.calendar_events.getOne(e7_1.id)];
|
|
202
|
+
case 21:
|
|
203
|
+
e7ForAttacker_1 = _c.sent();
|
|
204
|
+
return [4 /*yield*/, (0, testing_1.async_test)("enduser may self-cancel while preserving a co-attendee's existing entry", function () { return attackerSDK_1.api.calendar_events.updateOne(e7_1.id, {
|
|
205
|
+
cancelledGroupAttendees: __spreadArray(__spreadArray([], (e7ForAttacker_1.cancelledGroupAttendees || []), true), [{ id: attacker_1.id, at: new Date() }], false),
|
|
206
|
+
}, { replaceObjectFields: true }); }, testing_1.passOnAnyResult)
|
|
207
|
+
// ---- ALLOWED (baseline): staff may set any attendee's status (constraint is enduser-only) ----
|
|
208
|
+
];
|
|
209
|
+
case 22:
|
|
210
|
+
_c.sent();
|
|
211
|
+
return [4 /*yield*/, createGroupEvent([attacker_1.id, victim_1.id])];
|
|
212
|
+
case 23:
|
|
213
|
+
e8_1 = _c.sent();
|
|
214
|
+
return [4 /*yield*/, (0, testing_1.async_test)("staff may set any attendee's status", function () { return sdk.api.calendar_events.updateOne(e8_1.id, {
|
|
215
|
+
attendeeStatuses: [{ id: victim_1.id, at: new Date(), status: 'No-showed' }],
|
|
216
|
+
}, { replaceObjectFields: true }); }, testing_1.passOnAnyResult)];
|
|
217
|
+
case 24:
|
|
218
|
+
_c.sent();
|
|
219
|
+
return [3 /*break*/, 38];
|
|
220
|
+
case 25:
|
|
221
|
+
_i = 0, createdEventIds_1 = createdEventIds;
|
|
222
|
+
_c.label = 26;
|
|
223
|
+
case 26:
|
|
224
|
+
if (!(_i < createdEventIds_1.length)) return [3 /*break*/, 31];
|
|
225
|
+
id = createdEventIds_1[_i];
|
|
226
|
+
_c.label = 27;
|
|
227
|
+
case 27:
|
|
228
|
+
_c.trys.push([27, 29, , 30]);
|
|
229
|
+
return [4 /*yield*/, sdk.api.calendar_events.deleteOne(id)];
|
|
230
|
+
case 28:
|
|
231
|
+
_c.sent();
|
|
232
|
+
return [3 /*break*/, 30];
|
|
233
|
+
case 29:
|
|
234
|
+
_1 = _c.sent();
|
|
235
|
+
return [3 /*break*/, 30];
|
|
236
|
+
case 30:
|
|
237
|
+
_i++;
|
|
238
|
+
return [3 /*break*/, 26];
|
|
239
|
+
case 31:
|
|
240
|
+
_b = 0, createdEnduserIds_1 = createdEnduserIds;
|
|
241
|
+
_c.label = 32;
|
|
242
|
+
case 32:
|
|
243
|
+
if (!(_b < createdEnduserIds_1.length)) return [3 /*break*/, 37];
|
|
244
|
+
id = createdEnduserIds_1[_b];
|
|
245
|
+
_c.label = 33;
|
|
246
|
+
case 33:
|
|
247
|
+
_c.trys.push([33, 35, , 36]);
|
|
248
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(id)];
|
|
249
|
+
case 34:
|
|
250
|
+
_c.sent();
|
|
251
|
+
return [3 /*break*/, 36];
|
|
252
|
+
case 35:
|
|
253
|
+
_2 = _c.sent();
|
|
254
|
+
return [3 /*break*/, 36];
|
|
255
|
+
case 36:
|
|
256
|
+
_b++;
|
|
257
|
+
return [3 /*break*/, 32];
|
|
258
|
+
case 37: return [7 /*endfinally*/];
|
|
259
|
+
case 38: return [2 /*return*/];
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
};
|
|
264
|
+
exports.group_event_attendee_self_update_tests = group_event_attendee_self_update_tests;
|
|
265
|
+
// Allow running this test file independently
|
|
266
|
+
if (require.main === module) {
|
|
267
|
+
console.log("\uD83C\uDF10 Using API URL: ".concat(host));
|
|
268
|
+
var sdk_2 = new sdk_1.Session({ host: host });
|
|
269
|
+
var sdkNonAdmin_1 = new sdk_1.Session({ host: host });
|
|
270
|
+
var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
271
|
+
return __generator(this, function (_a) {
|
|
272
|
+
switch (_a.label) {
|
|
273
|
+
case 0: return [4 /*yield*/, (0, setup_1.setup_tests)(sdk_2, sdkNonAdmin_1)];
|
|
274
|
+
case 1:
|
|
275
|
+
_a.sent();
|
|
276
|
+
return [4 /*yield*/, (0, exports.group_event_attendee_self_update_tests)({ sdk: sdk_2, sdkNonAdmin: sdkNonAdmin_1 })];
|
|
277
|
+
case 2:
|
|
278
|
+
_a.sent();
|
|
279
|
+
return [2 /*return*/];
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
}); };
|
|
283
|
+
runTests()
|
|
284
|
+
.then(function () {
|
|
285
|
+
console.log("✅ Group event attendee self-update constraint tests completed successfully");
|
|
286
|
+
process.exit(0);
|
|
287
|
+
})
|
|
288
|
+
.catch(function (error) {
|
|
289
|
+
console.error("❌ Group event attendee self-update constraint tests failed:", error);
|
|
290
|
+
process.exit(1);
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=group_event_attendee_self_update.test.js.map
|