@tellescope/sdk 1.255.0 → 1.255.2

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.
Files changed (46) hide show
  1. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.d.ts +6 -0
  2. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.d.ts.map +1 -0
  3. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.js +236 -0
  4. package/lib/cjs/tests/api_tests/appointment_no_showed_trigger.test.js.map +1 -0
  5. package/lib/cjs/tests/api_tests/calendar_events_bulk_update.test.d.ts.map +1 -1
  6. package/lib/cjs/tests/api_tests/calendar_events_bulk_update.test.js +108 -73
  7. package/lib/cjs/tests/api_tests/calendar_events_bulk_update.test.js.map +1 -1
  8. package/lib/cjs/tests/api_tests/group_event_attendee_status_triggers.test.d.ts +6 -0
  9. package/lib/cjs/tests/api_tests/group_event_attendee_status_triggers.test.d.ts.map +1 -0
  10. package/lib/cjs/tests/api_tests/group_event_attendee_status_triggers.test.js +587 -0
  11. package/lib/cjs/tests/api_tests/group_event_attendee_status_triggers.test.js.map +1 -0
  12. package/lib/cjs/tests/api_tests/healthie_force_sync.test.d.ts +6 -0
  13. package/lib/cjs/tests/api_tests/healthie_force_sync.test.d.ts.map +1 -0
  14. package/lib/cjs/tests/api_tests/healthie_force_sync.test.js +165 -0
  15. package/lib/cjs/tests/api_tests/healthie_force_sync.test.js.map +1 -0
  16. package/lib/cjs/tests/tests.d.ts.map +1 -1
  17. package/lib/cjs/tests/tests.js +55 -41
  18. package/lib/cjs/tests/tests.js.map +1 -1
  19. package/lib/esm/sdk.d.ts +2 -2
  20. package/lib/esm/session.d.ts +0 -1
  21. package/lib/esm/session.d.ts.map +1 -1
  22. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.d.ts +6 -0
  23. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.d.ts.map +1 -0
  24. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.js +232 -0
  25. package/lib/esm/tests/api_tests/appointment_no_showed_trigger.test.js.map +1 -0
  26. package/lib/esm/tests/api_tests/calendar_events_bulk_update.test.d.ts.map +1 -1
  27. package/lib/esm/tests/api_tests/calendar_events_bulk_update.test.js +109 -74
  28. package/lib/esm/tests/api_tests/calendar_events_bulk_update.test.js.map +1 -1
  29. package/lib/esm/tests/api_tests/group_event_attendee_status_triggers.test.d.ts +6 -0
  30. package/lib/esm/tests/api_tests/group_event_attendee_status_triggers.test.d.ts.map +1 -0
  31. package/lib/esm/tests/api_tests/group_event_attendee_status_triggers.test.js +583 -0
  32. package/lib/esm/tests/api_tests/group_event_attendee_status_triggers.test.js.map +1 -0
  33. package/lib/esm/tests/api_tests/healthie_force_sync.test.d.ts +6 -0
  34. package/lib/esm/tests/api_tests/healthie_force_sync.test.d.ts.map +1 -0
  35. package/lib/esm/tests/api_tests/healthie_force_sync.test.js +161 -0
  36. package/lib/esm/tests/api_tests/healthie_force_sync.test.js.map +1 -0
  37. package/lib/esm/tests/tests.d.ts.map +1 -1
  38. package/lib/esm/tests/tests.js +55 -41
  39. package/lib/esm/tests/tests.js.map +1 -1
  40. package/lib/tsconfig.tsbuildinfo +1 -1
  41. package/package.json +10 -10
  42. package/src/tests/api_tests/appointment_no_showed_trigger.test.ts +144 -0
  43. package/src/tests/api_tests/calendar_events_bulk_update.test.ts +22 -0
  44. package/src/tests/api_tests/group_event_attendee_status_triggers.test.ts +381 -0
  45. package/src/tests/tests.ts +7 -1
  46. package/test_generated.pdf +0 -0
@@ -0,0 +1,583 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ 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;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { Session } from "../../sdk";
38
+ import { log_header, wait, async_test } from "@tellescope/testing";
39
+ import { setup_tests } from "../setup";
40
+ var host = process.env.API_URL || "http://localhost:8080";
41
+ // Tags applied by the four per-status triggers. Distinct so we can prove exactly which trigger
42
+ // fired against which attendee (no false positives / no false negatives).
43
+ var TAG = {
44
+ 'Completed': 'Group Attendee: Completed',
45
+ 'No-showed': 'Group Attendee: No-showed',
46
+ 'Rescheduled': 'Group Attendee: Rescheduled',
47
+ 'Cancelled': 'Group Attendee: Cancelled',
48
+ };
49
+ var ALL_STATUSES = ['Completed', 'No-showed', 'Rescheduled', 'Cancelled'];
50
+ export var group_event_attendee_status_triggers_tests = function (_a) {
51
+ var sdk = _a.sdk;
52
+ return __awaiter(void 0, void 0, void 0, function () {
53
+ var createdTriggerIds, createdEnduserIds, createdEventIds, createEnduser, createGroupEvent, setAttendeeStatuses, tagsOf, _i, ALL_STATUSES_1, status_1, t, _loop_1, _b, ALL_STATUSES_2, status_2, aCompleted_1, bNoShow_1, cCancelled_1, dUnset_1, mixedEvent, transA_1, transABystander_1, transAEvent, transB_1, transBBystander_1, transBEvent, byUserTrigger, byEnduserTrigger, byTarget_1, byBystander_1, byEvent, bulkTarget_1, bulkBystander_1, now, DAY, rootEvent, childEvent, confirmEnduser_1, clearEnduser_1, noopEvent, _c, createdEventIds_1, id, _1, _d, createdEnduserIds_1, id, _2, _e, createdTriggerIds_1, id, _3;
54
+ return __generator(this, function (_f) {
55
+ switch (_f.label) {
56
+ case 0:
57
+ log_header("Automation Trigger Tests (Group Event Per-Attendee Status)");
58
+ createdTriggerIds = [];
59
+ createdEnduserIds = [];
60
+ createdEventIds = [];
61
+ createEnduser = function () { return __awaiter(void 0, void 0, void 0, function () {
62
+ var e;
63
+ return __generator(this, function (_a) {
64
+ switch (_a.label) {
65
+ case 0: return [4 /*yield*/, sdk.api.endusers.createOne({})];
66
+ case 1:
67
+ e = _a.sent();
68
+ createdEnduserIds.push(e.id);
69
+ return [2 /*return*/, e];
70
+ }
71
+ });
72
+ }); };
73
+ createGroupEvent = function (attendeeIds) { return __awaiter(void 0, void 0, void 0, function () {
74
+ var event;
75
+ return __generator(this, function (_a) {
76
+ switch (_a.label) {
77
+ case 0: return [4 /*yield*/, sdk.api.calendar_events.createOne({
78
+ title: 'Group Status Test',
79
+ durationInMinutes: 30,
80
+ startTimeInMS: Date.now() + Math.floor(Math.random() * 100000),
81
+ attendees: attendeeIds.map(function (id) { return ({ type: 'enduser', id: id }); }),
82
+ })];
83
+ case 1:
84
+ event = _a.sent();
85
+ createdEventIds.push(event.id);
86
+ return [2 /*return*/, event];
87
+ }
88
+ });
89
+ }); };
90
+ setAttendeeStatuses = function (eventId, statuses) { return __awaiter(void 0, void 0, void 0, function () {
91
+ return __generator(this, function (_a) {
92
+ return [2 /*return*/, (sdk.api.calendar_events.updateOne(eventId, {
93
+ attendeeStatuses: statuses.map(function (s) { return ({ id: s.id, at: new Date(), status: s.status }); }),
94
+ cancelledGroupAttendees: (statuses
95
+ .filter(function (s) { return s.status === 'Cancelled' || s.status === 'No-showed' || s.status === 'Rescheduled'; })
96
+ .map(function (s) { return ({ id: s.id, at: new Date() }); })),
97
+ }, { replaceObjectFields: true }))];
98
+ });
99
+ }); };
100
+ tagsOf = function (enduserId) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
101
+ switch (_a.label) {
102
+ case 0: return [4 /*yield*/, sdk.api.endusers.getOne(enduserId)];
103
+ case 1: return [2 /*return*/, (_a.sent()).tags || []];
104
+ }
105
+ }); }); };
106
+ _f.label = 1;
107
+ case 1:
108
+ _f.trys.push([1, , 68, 87]);
109
+ _i = 0, ALL_STATUSES_1 = ALL_STATUSES;
110
+ _f.label = 2;
111
+ case 2:
112
+ if (!(_i < ALL_STATUSES_1.length)) return [3 /*break*/, 5];
113
+ status_1 = ALL_STATUSES_1[_i];
114
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
115
+ event: {
116
+ type: status_1 === 'No-showed' ? 'Appointment No-Showed'
117
+ : status_1 === 'Completed' ? 'Appointment Completed'
118
+ : status_1 === 'Rescheduled' ? 'Appointment Rescheduled'
119
+ : 'Appointment Cancelled',
120
+ info: {},
121
+ },
122
+ action: { type: 'Add Tags', info: { tags: [TAG[status_1]] } },
123
+ status: 'Active',
124
+ title: "Group Attendee ".concat(status_1),
125
+ })];
126
+ case 3:
127
+ t = _f.sent();
128
+ createdTriggerIds.push(t.id);
129
+ _f.label = 4;
130
+ case 4:
131
+ _i++;
132
+ return [3 /*break*/, 2];
133
+ case 5:
134
+ _loop_1 = function (status_2) {
135
+ var target, bystander1, bystander2, event_1;
136
+ return __generator(this, function (_g) {
137
+ switch (_g.label) {
138
+ case 0:
139
+ log_header("Per-attendee '".concat(status_2, "' in a group event"));
140
+ return [4 /*yield*/, createEnduser()];
141
+ case 1:
142
+ target = _g.sent();
143
+ return [4 /*yield*/, createEnduser()];
144
+ case 2:
145
+ bystander1 = _g.sent();
146
+ return [4 /*yield*/, createEnduser()];
147
+ case 3:
148
+ bystander2 = _g.sent();
149
+ return [4 /*yield*/, createGroupEvent([target.id, bystander1.id, bystander2.id])];
150
+ case 4:
151
+ event_1 = _g.sent();
152
+ return [4 /*yield*/, setAttendeeStatuses(event_1.id, [{ id: target.id, status: status_2 }])];
153
+ case 5:
154
+ _g.sent();
155
+ return [4 /*yield*/, wait(undefined, 750)
156
+ // 1 + 2. True positive / no false negative: target has the correct tag
157
+ ]; // allow trigger to fire
158
+ case 6:
159
+ _g.sent(); // allow trigger to fire
160
+ // 1 + 2. True positive / no false negative: target has the correct tag
161
+ return [4 /*yield*/, async_test("'".concat(status_2, "' fires its trigger for the target attendee"), function () { return tagsOf(target.id); }, { onResult: function (tags) { return tags.includes(TAG[status_2]); } })
162
+ // 3. No false positive (wrong trigger): target has none of the other status tags
163
+ ];
164
+ case 7:
165
+ // 1 + 2. True positive / no false negative: target has the correct tag
166
+ _g.sent();
167
+ // 3. No false positive (wrong trigger): target has none of the other status tags
168
+ return [4 /*yield*/, async_test("'".concat(status_2, "' does NOT fire any other status trigger for the target"), function () { return tagsOf(target.id); }, { onResult: function (tags) { return ALL_STATUSES.every(function (s) { return s === status_2 || !tags.includes(TAG[s]); }); } })
169
+ // 4. No false positive (collateral): bystanders received zero tags
170
+ ];
171
+ case 8:
172
+ // 3. No false positive (wrong trigger): target has none of the other status tags
173
+ _g.sent();
174
+ // 4. No false positive (collateral): bystanders received zero tags
175
+ return [4 /*yield*/, async_test("'".concat(status_2, "' does NOT fire for bystander attendee #1"), function () { return sdk.api.endusers.getOne(bystander1.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })];
176
+ case 9:
177
+ // 4. No false positive (collateral): bystanders received zero tags
178
+ _g.sent();
179
+ return [4 /*yield*/, async_test("'".concat(status_2, "' does NOT fire for bystander attendee #2"), function () { return sdk.api.endusers.getOne(bystander2.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })];
180
+ case 10:
181
+ _g.sent();
182
+ return [2 /*return*/];
183
+ }
184
+ });
185
+ };
186
+ _b = 0, ALL_STATUSES_2 = ALL_STATUSES;
187
+ _f.label = 6;
188
+ case 6:
189
+ if (!(_b < ALL_STATUSES_2.length)) return [3 /*break*/, 9];
190
+ status_2 = ALL_STATUSES_2[_b];
191
+ return [5 /*yield**/, _loop_1(status_2)];
192
+ case 7:
193
+ _f.sent();
194
+ _f.label = 8;
195
+ case 8:
196
+ _b++;
197
+ return [3 /*break*/, 6];
198
+ case 9:
199
+ // ============================================================
200
+ // Multiple distinct statuses set in one group event — no cross-talk.
201
+ // ============================================================
202
+ log_header("Multiple distinct per-attendee statuses in one group event");
203
+ return [4 /*yield*/, createEnduser()];
204
+ case 10:
205
+ aCompleted_1 = _f.sent();
206
+ return [4 /*yield*/, createEnduser()];
207
+ case 11:
208
+ bNoShow_1 = _f.sent();
209
+ return [4 /*yield*/, createEnduser()];
210
+ case 12:
211
+ cCancelled_1 = _f.sent();
212
+ return [4 /*yield*/, createEnduser()];
213
+ case 13:
214
+ dUnset_1 = _f.sent();
215
+ return [4 /*yield*/, createGroupEvent([aCompleted_1.id, bNoShow_1.id, cCancelled_1.id, dUnset_1.id])];
216
+ case 14:
217
+ mixedEvent = _f.sent();
218
+ return [4 /*yield*/, setAttendeeStatuses(mixedEvent.id, [
219
+ { id: aCompleted_1.id, status: 'Completed' },
220
+ { id: bNoShow_1.id, status: 'No-showed' },
221
+ { id: cCancelled_1.id, status: 'Cancelled' },
222
+ // dUnset intentionally left without a status
223
+ ])];
224
+ case 15:
225
+ _f.sent();
226
+ return [4 /*yield*/, wait(undefined, 1000)]; // allow all triggers to fire
227
+ case 16:
228
+ _f.sent(); // allow all triggers to fire
229
+ return [4 /*yield*/, async_test("mixed: Completed attendee gets only the Completed tag", function () { return tagsOf(aCompleted_1.id); }, { onResult: function (tags) { return tags.includes(TAG['Completed']) && ALL_STATUSES.every(function (s) { return s === 'Completed' || !tags.includes(TAG[s]); }); } })];
230
+ case 17:
231
+ _f.sent();
232
+ return [4 /*yield*/, async_test("mixed: No-showed attendee gets only the No-showed tag", function () { return tagsOf(bNoShow_1.id); }, { onResult: function (tags) { return tags.includes(TAG['No-showed']) && ALL_STATUSES.every(function (s) { return s === 'No-showed' || !tags.includes(TAG[s]); }); } })];
233
+ case 18:
234
+ _f.sent();
235
+ return [4 /*yield*/, async_test("mixed: Cancelled attendee gets only the Cancelled tag", function () { return tagsOf(cCancelled_1.id); }, { onResult: function (tags) { return tags.includes(TAG['Cancelled']) && ALL_STATUSES.every(function (s) { return s === 'Cancelled' || !tags.includes(TAG[s]); }); } })];
236
+ case 19:
237
+ _f.sent();
238
+ return [4 /*yield*/, async_test("mixed: unset attendee receives no tags", function () { return sdk.api.endusers.getOne(dUnset_1.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })
239
+ // ============================================================
240
+ // Status transitions (A -> B): changing an attendee's status fires the NEW status's trigger.
241
+ // Exercises both directions of the cancelledGroupAttendees mirroring:
242
+ // - mirrored -> unmirrored (No-showed -> Completed)
243
+ // - unmirrored -> mirrored (Completed -> No-showed)
244
+ // The prior status's tag remains (it fired at its own transition); no spurious Cancelled fires
245
+ // from the cancelledGroupAttendees add/remove, and bystanders never fire.
246
+ // ============================================================
247
+ ];
248
+ case 20:
249
+ _f.sent();
250
+ // ============================================================
251
+ // Status transitions (A -> B): changing an attendee's status fires the NEW status's trigger.
252
+ // Exercises both directions of the cancelledGroupAttendees mirroring:
253
+ // - mirrored -> unmirrored (No-showed -> Completed)
254
+ // - unmirrored -> mirrored (Completed -> No-showed)
255
+ // The prior status's tag remains (it fired at its own transition); no spurious Cancelled fires
256
+ // from the cancelledGroupAttendees add/remove, and bystanders never fire.
257
+ // ============================================================
258
+ log_header("Per-attendee status transitions fire the new status only");
259
+ return [4 /*yield*/, createEnduser()];
260
+ case 21:
261
+ transA_1 = _f.sent();
262
+ return [4 /*yield*/, createEnduser()];
263
+ case 22:
264
+ transABystander_1 = _f.sent();
265
+ return [4 /*yield*/, createGroupEvent([transA_1.id, transABystander_1.id])];
266
+ case 23:
267
+ transAEvent = _f.sent();
268
+ return [4 /*yield*/, setAttendeeStatuses(transAEvent.id, [{ id: transA_1.id, status: 'No-showed' }])];
269
+ case 24:
270
+ _f.sent();
271
+ return [4 /*yield*/, wait(undefined, 750)];
272
+ case 25:
273
+ _f.sent();
274
+ return [4 /*yield*/, async_test("transition step 1: No-showed fires No-showed", function () { return tagsOf(transA_1.id); }, { onResult: function (tags) { return tags.includes(TAG['No-showed']); } })];
275
+ case 26:
276
+ _f.sent();
277
+ return [4 /*yield*/, setAttendeeStatuses(transAEvent.id, [{ id: transA_1.id, status: 'Completed' }])];
278
+ case 27:
279
+ _f.sent();
280
+ return [4 /*yield*/, wait(undefined, 750)];
281
+ case 28:
282
+ _f.sent();
283
+ return [4 /*yield*/, async_test("transition No-showed -> Completed fires Completed (No-showed tag retained, no Cancelled)", function () { return tagsOf(transA_1.id); }, { onResult: function (tags) {
284
+ return tags.includes(TAG['Completed'])
285
+ && tags.includes(TAG['No-showed'])
286
+ && !tags.includes(TAG['Cancelled'])
287
+ && !tags.includes(TAG['Rescheduled']);
288
+ }
289
+ })];
290
+ case 29:
291
+ _f.sent();
292
+ return [4 /*yield*/, async_test("transition (mirrored->unmirrored): bystander never fires", function () { return sdk.api.endusers.getOne(transABystander_1.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })
293
+ // unmirrored -> mirrored
294
+ ];
295
+ case 30:
296
+ _f.sent();
297
+ return [4 /*yield*/, createEnduser()];
298
+ case 31:
299
+ transB_1 = _f.sent();
300
+ return [4 /*yield*/, createEnduser()];
301
+ case 32:
302
+ transBBystander_1 = _f.sent();
303
+ return [4 /*yield*/, createGroupEvent([transB_1.id, transBBystander_1.id])];
304
+ case 33:
305
+ transBEvent = _f.sent();
306
+ return [4 /*yield*/, setAttendeeStatuses(transBEvent.id, [{ id: transB_1.id, status: 'Completed' }])];
307
+ case 34:
308
+ _f.sent();
309
+ return [4 /*yield*/, wait(undefined, 750)];
310
+ case 35:
311
+ _f.sent();
312
+ return [4 /*yield*/, setAttendeeStatuses(transBEvent.id, [{ id: transB_1.id, status: 'No-showed' }])];
313
+ case 36:
314
+ _f.sent();
315
+ return [4 /*yield*/, wait(undefined, 750)];
316
+ case 37:
317
+ _f.sent();
318
+ return [4 /*yield*/, async_test("transition Completed -> No-showed fires No-showed (Completed tag retained, no Cancelled)", function () { return tagsOf(transB_1.id); }, { onResult: function (tags) {
319
+ return tags.includes(TAG['No-showed'])
320
+ && tags.includes(TAG['Completed'])
321
+ && !tags.includes(TAG['Cancelled'])
322
+ && !tags.includes(TAG['Rescheduled']);
323
+ }
324
+ })];
325
+ case 38:
326
+ _f.sent();
327
+ return [4 /*yield*/, async_test("transition (unmirrored->mirrored): bystander never fires", function () { return sdk.api.endusers.getOne(transBBystander_1.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })
328
+ // ============================================================
329
+ // 'by' filter on the per-attendee Cancelled path. The AttendeeStatusEditor update does not set
330
+ // statusChangeSource, so handle_cancelled_event's by-filter (which requires statusChangeSource
331
+ // to match 'user'/'enduser') excludes by-filtered triggers. Only the unfiltered (by: undefined)
332
+ // Cancelled trigger fires for a per-attendee cancellation. This pins current behavior; see the
333
+ // note returned with this change about whether by:'user' SHOULD fire here.
334
+ // ============================================================
335
+ ];
336
+ case 39:
337
+ _f.sent();
338
+ // ============================================================
339
+ // 'by' filter on the per-attendee Cancelled path. The AttendeeStatusEditor update does not set
340
+ // statusChangeSource, so handle_cancelled_event's by-filter (which requires statusChangeSource
341
+ // to match 'user'/'enduser') excludes by-filtered triggers. Only the unfiltered (by: undefined)
342
+ // Cancelled trigger fires for a per-attendee cancellation. This pins current behavior; see the
343
+ // note returned with this change about whether by:'user' SHOULD fire here.
344
+ // ============================================================
345
+ log_header("Per-attendee Cancelled respects 'by' filter");
346
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
347
+ event: { type: 'Appointment Cancelled', info: { by: 'user' } },
348
+ action: { type: 'Add Tags', info: { tags: ['Group Attendee Cancelled by:user'] } },
349
+ status: 'Active',
350
+ title: "Group Attendee Cancelled by user",
351
+ })];
352
+ case 40:
353
+ byUserTrigger = _f.sent();
354
+ createdTriggerIds.push(byUserTrigger.id);
355
+ return [4 /*yield*/, sdk.api.automation_triggers.createOne({
356
+ event: { type: 'Appointment Cancelled', info: { by: 'enduser' } },
357
+ action: { type: 'Add Tags', info: { tags: ['Group Attendee Cancelled by:enduser'] } },
358
+ status: 'Active',
359
+ title: "Group Attendee Cancelled by enduser",
360
+ })];
361
+ case 41:
362
+ byEnduserTrigger = _f.sent();
363
+ createdTriggerIds.push(byEnduserTrigger.id);
364
+ return [4 /*yield*/, createEnduser()];
365
+ case 42:
366
+ byTarget_1 = _f.sent();
367
+ return [4 /*yield*/, createEnduser()];
368
+ case 43:
369
+ byBystander_1 = _f.sent();
370
+ return [4 /*yield*/, createGroupEvent([byTarget_1.id, byBystander_1.id])];
371
+ case 44:
372
+ byEvent = _f.sent();
373
+ return [4 /*yield*/, setAttendeeStatuses(byEvent.id, [{ id: byTarget_1.id, status: 'Cancelled' }])];
374
+ case 45:
375
+ _f.sent();
376
+ return [4 /*yield*/, wait(undefined, 750)];
377
+ case 46:
378
+ _f.sent();
379
+ return [4 /*yield*/, async_test("per-attendee cancel fires the unfiltered (by: undefined) Cancelled trigger", function () { return tagsOf(byTarget_1.id); }, { onResult: function (tags) { return tags.includes(TAG['Cancelled']); } })];
380
+ case 47:
381
+ _f.sent();
382
+ return [4 /*yield*/, async_test("per-attendee cancel does NOT fire by:'enduser' Cancelled trigger", function () { return tagsOf(byTarget_1.id); }, { onResult: function (tags) { return !tags.includes('Group Attendee Cancelled by:enduser'); } })];
383
+ case 48:
384
+ _f.sent();
385
+ return [4 /*yield*/, async_test("per-attendee cancel does NOT fire by:'user' Cancelled trigger (statusChangeSource unset)", function () { return tagsOf(byTarget_1.id); }, { onResult: function (tags) { return !tags.includes('Group Attendee Cancelled by:user'); } })];
386
+ case 49:
387
+ _f.sent();
388
+ return [4 /*yield*/, async_test("'by' filter case: bystander never fires", function () { return sdk.api.endusers.getOne(byBystander_1.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })
389
+ // ============================================================
390
+ // bulk_update cancel_for_attendee fires Cancelled exactly once (via the new handler;
391
+ // the legacy cancelledGroupAttendees branch is suppressed by the attendeeStatuses filter).
392
+ // ============================================================
393
+ ];
394
+ case 50:
395
+ _f.sent();
396
+ // ============================================================
397
+ // bulk_update cancel_for_attendee fires Cancelled exactly once (via the new handler;
398
+ // the legacy cancelledGroupAttendees branch is suppressed by the attendeeStatuses filter).
399
+ // ============================================================
400
+ log_header("bulk_update cancel_for_attendee fires Cancelled for attendee");
401
+ return [4 /*yield*/, createEnduser()];
402
+ case 51:
403
+ bulkTarget_1 = _f.sent();
404
+ return [4 /*yield*/, createEnduser()];
405
+ case 52:
406
+ bulkBystander_1 = _f.sent();
407
+ now = Date.now();
408
+ DAY = 24 * 60 * 60 * 1000;
409
+ return [4 /*yield*/, sdk.api.calendar_events.createOne({
410
+ title: 'Group Status Test',
411
+ durationInMinutes: 30,
412
+ startTimeInMS: now,
413
+ attendees: [{ type: 'enduser', id: bulkTarget_1.id }, { type: 'enduser', id: bulkBystander_1.id }],
414
+ })];
415
+ case 53:
416
+ rootEvent = _f.sent();
417
+ createdEventIds.push(rootEvent.id);
418
+ return [4 /*yield*/, sdk.api.calendar_events.createOne({
419
+ title: 'Group Status Test',
420
+ durationInMinutes: 30,
421
+ startTimeInMS: now + DAY,
422
+ copiedFrom: rootEvent.id,
423
+ attendees: [{ type: 'enduser', id: bulkTarget_1.id }, { type: 'enduser', id: bulkBystander_1.id }],
424
+ })];
425
+ case 54:
426
+ childEvent = _f.sent();
427
+ createdEventIds.push(childEvent.id);
428
+ return [4 /*yield*/, sdk.api.calendar_events.bulk_update({
429
+ recurringEventId: rootEvent.id,
430
+ action: 'cancel_for_attendee',
431
+ scope: 'all',
432
+ enduserId: bulkTarget_1.id,
433
+ })];
434
+ case 55:
435
+ _f.sent();
436
+ return [4 /*yield*/, wait(undefined, 750)];
437
+ case 56:
438
+ _f.sent();
439
+ return [4 /*yield*/, async_test("cancel_for_attendee fires Cancelled trigger for the target", function () { return tagsOf(bulkTarget_1.id); }, { onResult: function (tags) { return tags.includes(TAG['Cancelled']); } })];
440
+ case 57:
441
+ _f.sent();
442
+ return [4 /*yield*/, async_test("cancel_for_attendee does NOT fire for the bystander", function () { return sdk.api.endusers.getOne(bulkBystander_1.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })
443
+ // ============================================================
444
+ // 'Confirmed' and clearing a status fire nothing.
445
+ // ============================================================
446
+ ];
447
+ case 58:
448
+ _f.sent();
449
+ // ============================================================
450
+ // 'Confirmed' and clearing a status fire nothing.
451
+ // ============================================================
452
+ log_header("Confirmed / cleared statuses fire no triggers");
453
+ return [4 /*yield*/, createEnduser()];
454
+ case 59:
455
+ confirmEnduser_1 = _f.sent();
456
+ return [4 /*yield*/, createEnduser()];
457
+ case 60:
458
+ clearEnduser_1 = _f.sent();
459
+ return [4 /*yield*/, createGroupEvent([confirmEnduser_1.id, clearEnduser_1.id])
460
+ // set clearEnduser to No-showed, then clear it; set confirmEnduser to Confirmed
461
+ ];
462
+ case 61:
463
+ noopEvent = _f.sent();
464
+ // set clearEnduser to No-showed, then clear it; set confirmEnduser to Confirmed
465
+ return [4 /*yield*/, setAttendeeStatuses(noopEvent.id, [{ id: clearEnduser_1.id, status: 'No-showed' }])];
466
+ case 62:
467
+ // set clearEnduser to No-showed, then clear it; set confirmEnduser to Confirmed
468
+ _f.sent();
469
+ return [4 /*yield*/, wait(undefined, 750)];
470
+ case 63:
471
+ _f.sent();
472
+ return [4 /*yield*/, setAttendeeStatuses(noopEvent.id, [{ id: confirmEnduser_1.id, status: 'Confirmed' }])]; // also clears clearEnduser
473
+ case 64:
474
+ _f.sent(); // also clears clearEnduser
475
+ return [4 /*yield*/, wait(undefined, 750)];
476
+ case 65:
477
+ _f.sent();
478
+ return [4 /*yield*/, async_test("'Confirmed' status fires no trigger", function () { return sdk.api.endusers.getOne(confirmEnduser_1.id); }, { onResult: function (e) { var _a; return !((_a = e.tags) === null || _a === void 0 ? void 0 : _a.length); } })
479
+ // clearEnduser previously got the No-showed tag (that firing is expected); clearing must not
480
+ // add anything new. Assert it still has exactly the one No-showed tag and nothing else.
481
+ ];
482
+ case 66:
483
+ _f.sent();
484
+ // clearEnduser previously got the No-showed tag (that firing is expected); clearing must not
485
+ // add anything new. Assert it still has exactly the one No-showed tag and nothing else.
486
+ return [4 /*yield*/, async_test("clearing a status fires no additional trigger", function () { return tagsOf(clearEnduser_1.id); }, { onResult: function (tags) { return tags.length === 1 && tags.includes(TAG['No-showed']); } })];
487
+ case 67:
488
+ // clearEnduser previously got the No-showed tag (that firing is expected); clearing must not
489
+ // add anything new. Assert it still has exactly the one No-showed tag and nothing else.
490
+ _f.sent();
491
+ return [3 /*break*/, 87];
492
+ case 68:
493
+ _c = 0, createdEventIds_1 = createdEventIds;
494
+ _f.label = 69;
495
+ case 69:
496
+ if (!(_c < createdEventIds_1.length)) return [3 /*break*/, 74];
497
+ id = createdEventIds_1[_c];
498
+ _f.label = 70;
499
+ case 70:
500
+ _f.trys.push([70, 72, , 73]);
501
+ return [4 /*yield*/, sdk.api.calendar_events.deleteOne(id)];
502
+ case 71:
503
+ _f.sent();
504
+ return [3 /*break*/, 73];
505
+ case 72:
506
+ _1 = _f.sent();
507
+ return [3 /*break*/, 73];
508
+ case 73:
509
+ _c++;
510
+ return [3 /*break*/, 69];
511
+ case 74:
512
+ _d = 0, createdEnduserIds_1 = createdEnduserIds;
513
+ _f.label = 75;
514
+ case 75:
515
+ if (!(_d < createdEnduserIds_1.length)) return [3 /*break*/, 80];
516
+ id = createdEnduserIds_1[_d];
517
+ _f.label = 76;
518
+ case 76:
519
+ _f.trys.push([76, 78, , 79]);
520
+ return [4 /*yield*/, sdk.api.endusers.deleteOne(id)];
521
+ case 77:
522
+ _f.sent();
523
+ return [3 /*break*/, 79];
524
+ case 78:
525
+ _2 = _f.sent();
526
+ return [3 /*break*/, 79];
527
+ case 79:
528
+ _d++;
529
+ return [3 /*break*/, 75];
530
+ case 80:
531
+ _e = 0, createdTriggerIds_1 = createdTriggerIds;
532
+ _f.label = 81;
533
+ case 81:
534
+ if (!(_e < createdTriggerIds_1.length)) return [3 /*break*/, 86];
535
+ id = createdTriggerIds_1[_e];
536
+ _f.label = 82;
537
+ case 82:
538
+ _f.trys.push([82, 84, , 85]);
539
+ return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(id)];
540
+ case 83:
541
+ _f.sent();
542
+ return [3 /*break*/, 85];
543
+ case 84:
544
+ _3 = _f.sent();
545
+ return [3 /*break*/, 85];
546
+ case 85:
547
+ _e++;
548
+ return [3 /*break*/, 81];
549
+ case 86: return [7 /*endfinally*/];
550
+ case 87: return [2 /*return*/];
551
+ }
552
+ });
553
+ });
554
+ };
555
+ // Allow running this test file independently
556
+ if (require.main === module) {
557
+ console.log("\uD83C\uDF10 Using API URL: ".concat(host));
558
+ var sdk_1 = new Session({ host: host });
559
+ var sdkNonAdmin_1 = new Session({ host: host });
560
+ var runTests = function () { return __awaiter(void 0, void 0, void 0, function () {
561
+ return __generator(this, function (_a) {
562
+ switch (_a.label) {
563
+ case 0: return [4 /*yield*/, setup_tests(sdk_1, sdkNonAdmin_1)];
564
+ case 1:
565
+ _a.sent();
566
+ return [4 /*yield*/, group_event_attendee_status_triggers_tests({ sdk: sdk_1, sdkNonAdmin: sdkNonAdmin_1 })];
567
+ case 2:
568
+ _a.sent();
569
+ return [2 /*return*/];
570
+ }
571
+ });
572
+ }); };
573
+ runTests()
574
+ .then(function () {
575
+ console.log("✅ Group event per-attendee status trigger tests completed successfully");
576
+ process.exit(0);
577
+ })
578
+ .catch(function (error) {
579
+ console.error("❌ Group event per-attendee status trigger tests failed:", error);
580
+ process.exit(1);
581
+ });
582
+ }
583
+ //# sourceMappingURL=group_event_attendee_status_triggers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group_event_attendee_status_triggers.test.js","sourceRoot":"","sources":["../../../../src/tests/api_tests/group_event_attendee_status_triggers.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Session } from "../../sdk";
2
+ export declare const healthie_force_sync_tests: ({ sdk, sdkNonAdmin }: {
3
+ sdk: Session;
4
+ sdkNonAdmin: Session;
5
+ }) => Promise<void>;
6
+ //# sourceMappingURL=healthie_force_sync.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"healthie_force_sync.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/api_tests/healthie_force_sync.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiBnC,eAAO,MAAM,yBAAyB;SAAwC,OAAO;iBAAe,OAAO;mBAwC1G,CAAA"}