@tellescope/sdk 1.256.6 → 1.256.7
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 +1 -1
- package/lib/cjs/enduser.d.ts.map +1 -1
- package/lib/cjs/enduser.js +1 -0
- package/lib/cjs/enduser.js.map +1 -1
- package/lib/cjs/tests/api_tests/calendar_event_create_and_bulk_triggers.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/calendar_event_create_and_bulk_triggers.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/calendar_event_create_and_bulk_triggers.test.js +505 -0
- package/lib/cjs/tests/api_tests/calendar_event_create_and_bulk_triggers.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/configurations_public_read.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/configurations_public_read.test.js +173 -0
- package/lib/cjs/tests/api_tests/configurations_public_read.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/form_started_trigger.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/form_started_trigger.test.js +87 -24
- package/lib/cjs/tests/api_tests/form_started_trigger.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/form_translations.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/form_translations.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/form_translations.test.js +259 -0
- package/lib/cjs/tests/api_tests/form_translations.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/group_event_attendee_status_triggers.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/group_event_attendee_status_triggers.test.js +340 -124
- package/lib/cjs/tests/api_tests/group_event_attendee_status_triggers.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -0
- package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js +277 -0
- package/lib/cjs/tests/api_tests/mdi_trigger_refill.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/purchase_made_trigger.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/purchase_made_trigger.test.js +262 -78
- package/lib/cjs/tests/api_tests/purchase_made_trigger.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts +31 -0
- package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts.map +1 -0
- package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js +230 -0
- package/lib/cjs/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js.map +1 -0
- package/lib/cjs/tests/api_tests/security/public_endpoint_auth_field_lock.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/security/public_endpoint_auth_field_lock.test.js +206 -198
- package/lib/cjs/tests/api_tests/security/public_endpoint_auth_field_lock.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/stripe_webhook_triggers.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/stripe_webhook_triggers.test.js +343 -80
- package/lib/cjs/tests/api_tests/stripe_webhook_triggers.test.js.map +1 -1
- package/lib/cjs/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
- package/lib/cjs/tests/api_tests/welle_partner_token.test.js +74 -35
- package/lib/cjs/tests/api_tests/welle_partner_token.test.js.map +1 -1
- package/lib/cjs/tests/stripe_webhook_helpers.d.ts +134 -0
- package/lib/cjs/tests/stripe_webhook_helpers.d.ts.map +1 -1
- package/lib/cjs/tests/stripe_webhook_helpers.js +126 -1
- package/lib/cjs/tests/stripe_webhook_helpers.js.map +1 -1
- package/lib/cjs/tests/tests.d.ts.map +1 -1
- package/lib/cjs/tests/tests.js +238 -212
- package/lib/cjs/tests/tests.js.map +1 -1
- package/lib/esm/enduser.d.ts +1 -1
- package/lib/esm/enduser.d.ts.map +1 -1
- package/lib/esm/enduser.js +1 -0
- package/lib/esm/enduser.js.map +1 -1
- package/lib/esm/tests/api_tests/calendar_event_create_and_bulk_triggers.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/calendar_event_create_and_bulk_triggers.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/calendar_event_create_and_bulk_triggers.test.js +501 -0
- package/lib/esm/tests/api_tests/calendar_event_create_and_bulk_triggers.test.js.map +1 -0
- package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/configurations_public_read.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/configurations_public_read.test.js +169 -0
- package/lib/esm/tests/api_tests/configurations_public_read.test.js.map +1 -0
- package/lib/esm/tests/api_tests/form_started_trigger.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/form_started_trigger.test.js +87 -24
- package/lib/esm/tests/api_tests/form_started_trigger.test.js.map +1 -1
- package/lib/esm/tests/api_tests/form_translations.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/form_translations.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/form_translations.test.js +255 -0
- package/lib/esm/tests/api_tests/form_translations.test.js.map +1 -0
- package/lib/esm/tests/api_tests/group_event_attendee_status_triggers.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/group_event_attendee_status_triggers.test.js +340 -124
- package/lib/esm/tests/api_tests/group_event_attendee_status_triggers.test.js.map +1 -1
- package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts +6 -0
- package/lib/esm/tests/api_tests/mdi_trigger_refill.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js +273 -0
- package/lib/esm/tests/api_tests/mdi_trigger_refill.test.js.map +1 -0
- package/lib/esm/tests/api_tests/purchase_made_trigger.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/purchase_made_trigger.test.js +262 -78
- package/lib/esm/tests/api_tests/purchase_made_trigger.test.js.map +1 -1
- package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts +31 -0
- package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.d.ts.map +1 -0
- package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js +226 -0
- package/lib/esm/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.js.map +1 -0
- package/lib/esm/tests/api_tests/security/public_endpoint_auth_field_lock.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/security/public_endpoint_auth_field_lock.test.js +206 -198
- package/lib/esm/tests/api_tests/security/public_endpoint_auth_field_lock.test.js.map +1 -1
- package/lib/esm/tests/api_tests/stripe_webhook_triggers.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/stripe_webhook_triggers.test.js +344 -81
- package/lib/esm/tests/api_tests/stripe_webhook_triggers.test.js.map +1 -1
- package/lib/esm/tests/api_tests/welle_partner_token.test.d.ts.map +1 -1
- package/lib/esm/tests/api_tests/welle_partner_token.test.js +74 -35
- package/lib/esm/tests/api_tests/welle_partner_token.test.js.map +1 -1
- package/lib/esm/tests/stripe_webhook_helpers.d.ts +134 -0
- package/lib/esm/tests/stripe_webhook_helpers.d.ts.map +1 -1
- package/lib/esm/tests/stripe_webhook_helpers.js +119 -0
- package/lib/esm/tests/stripe_webhook_helpers.js.map +1 -1
- package/lib/esm/tests/tests.d.ts.map +1 -1
- package/lib/esm/tests/tests.js +238 -212
- package/lib/esm/tests/tests.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/enduser.ts +4 -2
- package/src/tests/api_tests/calendar_event_create_and_bulk_triggers.test.ts +293 -0
- package/src/tests/api_tests/configurations_public_read.test.ts +116 -0
- package/src/tests/api_tests/form_started_trigger.test.ts +49 -1
- package/src/tests/api_tests/form_translations.test.ts +205 -0
- package/src/tests/api_tests/group_event_attendee_status_triggers.test.ts +135 -0
- package/src/tests/api_tests/mdi_trigger_refill.test.ts +184 -0
- package/src/tests/api_tests/purchase_made_trigger.test.ts +137 -0
- package/src/tests/api_tests/security/F-0006-develop-health-benefit-verification-rbac.test.ts +144 -0
- package/src/tests/api_tests/security/public_endpoint_auth_field_lock.test.ts +16 -6
- package/src/tests/api_tests/stripe_webhook_triggers.test.ts +221 -0
- package/src/tests/api_tests/welle_partner_token.test.ts +49 -6
- package/src/tests/stripe_webhook_helpers.ts +116 -0
- package/src/tests/tests.ts +27 -12
- package/test_generated.pdf +0 -0
|
@@ -53,9 +53,9 @@ var ALL_STATUSES = ['Completed', 'No-showed', 'Rescheduled', 'Cancelled'];
|
|
|
53
53
|
var group_event_attendee_status_triggers_tests = function (_a) {
|
|
54
54
|
var sdk = _a.sdk;
|
|
55
55
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
56
|
-
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,
|
|
57
|
-
return __generator(this, function (
|
|
58
|
-
switch (
|
|
56
|
+
var createdTriggerIds, createdEnduserIds, createdEventIds, createEnduser, createGroupEvent, setAttendeeStatuses, markEventCompleted, 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, _loop_2, _c, _d, status_3, portalCancelled_1, portalActive_1, portalEvent, confirmed_1, confirmedBystander_1, confirmedEvent, plain1, plain2, plain3, plainEvent, plainAttendees, _loop_3, i, _e, createdEventIds_1, id, _1, _f, createdEnduserIds_1, id, _2, _g, createdTriggerIds_1, id, _3;
|
|
57
|
+
return __generator(this, function (_h) {
|
|
58
|
+
switch (_h.label) {
|
|
59
59
|
case 0:
|
|
60
60
|
(0, testing_1.log_header)("Automation Trigger Tests (Group Event Per-Attendee Status)");
|
|
61
61
|
createdTriggerIds = [];
|
|
@@ -97,7 +97,14 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
97
97
|
cancelledGroupAttendees: (statuses
|
|
98
98
|
.filter(function (s) { return s.status === 'Cancelled' || s.status === 'No-showed' || s.status === 'Rescheduled'; })
|
|
99
99
|
.map(function (s) { return ({ id: s.id, at: new Date() }); })),
|
|
100
|
-
}, { replaceObjectFields: true }))
|
|
100
|
+
}, { replaceObjectFields: true }))
|
|
101
|
+
// Replicates the webapp "Mark Completed" action on the whole event (Calendar.tsx)
|
|
102
|
+
];
|
|
103
|
+
});
|
|
104
|
+
}); };
|
|
105
|
+
markEventCompleted = function (eventId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
106
|
+
return __generator(this, function (_a) {
|
|
107
|
+
return [2 /*return*/, (sdk.api.calendar_events.updateOne(eventId, { completedAt: new Date(), completedBy: sdk.userInfo.id }))];
|
|
101
108
|
});
|
|
102
109
|
}); };
|
|
103
110
|
tagsOf = function (enduserId) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
@@ -106,11 +113,11 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
106
113
|
case 1: return [2 /*return*/, (_a.sent()).tags || []];
|
|
107
114
|
}
|
|
108
115
|
}); }); };
|
|
109
|
-
|
|
116
|
+
_h.label = 1;
|
|
110
117
|
case 1:
|
|
111
|
-
|
|
118
|
+
_h.trys.push([1, , 101, 120]);
|
|
112
119
|
_i = 0, ALL_STATUSES_1 = ALL_STATUSES;
|
|
113
|
-
|
|
120
|
+
_h.label = 2;
|
|
114
121
|
case 2:
|
|
115
122
|
if (!(_i < ALL_STATUSES_1.length)) return [3 /*break*/, 5];
|
|
116
123
|
status_1 = ALL_STATUSES_1[_i];
|
|
@@ -127,74 +134,74 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
127
134
|
title: "Group Attendee ".concat(status_1),
|
|
128
135
|
})];
|
|
129
136
|
case 3:
|
|
130
|
-
t =
|
|
137
|
+
t = _h.sent();
|
|
131
138
|
createdTriggerIds.push(t.id);
|
|
132
|
-
|
|
139
|
+
_h.label = 4;
|
|
133
140
|
case 4:
|
|
134
141
|
_i++;
|
|
135
142
|
return [3 /*break*/, 2];
|
|
136
143
|
case 5:
|
|
137
144
|
_loop_1 = function (status_2) {
|
|
138
145
|
var target, bystander1, bystander2, event_1;
|
|
139
|
-
return __generator(this, function (
|
|
140
|
-
switch (
|
|
146
|
+
return __generator(this, function (_j) {
|
|
147
|
+
switch (_j.label) {
|
|
141
148
|
case 0:
|
|
142
149
|
(0, testing_1.log_header)("Per-attendee '".concat(status_2, "' in a group event"));
|
|
143
150
|
return [4 /*yield*/, createEnduser()];
|
|
144
151
|
case 1:
|
|
145
|
-
target =
|
|
152
|
+
target = _j.sent();
|
|
146
153
|
return [4 /*yield*/, createEnduser()];
|
|
147
154
|
case 2:
|
|
148
|
-
bystander1 =
|
|
155
|
+
bystander1 = _j.sent();
|
|
149
156
|
return [4 /*yield*/, createEnduser()];
|
|
150
157
|
case 3:
|
|
151
|
-
bystander2 =
|
|
158
|
+
bystander2 = _j.sent();
|
|
152
159
|
return [4 /*yield*/, createGroupEvent([target.id, bystander1.id, bystander2.id])];
|
|
153
160
|
case 4:
|
|
154
|
-
event_1 =
|
|
161
|
+
event_1 = _j.sent();
|
|
155
162
|
return [4 /*yield*/, setAttendeeStatuses(event_1.id, [{ id: target.id, status: status_2 }])];
|
|
156
163
|
case 5:
|
|
157
|
-
|
|
164
|
+
_j.sent();
|
|
158
165
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)
|
|
159
166
|
// 1 + 2. True positive / no false negative: target has the correct tag
|
|
160
167
|
]; // allow trigger to fire
|
|
161
168
|
case 6:
|
|
162
|
-
|
|
169
|
+
_j.sent(); // allow trigger to fire
|
|
163
170
|
// 1 + 2. True positive / no false negative: target has the correct tag
|
|
164
171
|
return [4 /*yield*/, (0, testing_1.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]); } })
|
|
165
172
|
// 3. No false positive (wrong trigger): target has none of the other status tags
|
|
166
173
|
];
|
|
167
174
|
case 7:
|
|
168
175
|
// 1 + 2. True positive / no false negative: target has the correct tag
|
|
169
|
-
|
|
176
|
+
_j.sent();
|
|
170
177
|
// 3. No false positive (wrong trigger): target has none of the other status tags
|
|
171
178
|
return [4 /*yield*/, (0, testing_1.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]); }); } })
|
|
172
179
|
// 4. No false positive (collateral): bystanders received zero tags
|
|
173
180
|
];
|
|
174
181
|
case 8:
|
|
175
182
|
// 3. No false positive (wrong trigger): target has none of the other status tags
|
|
176
|
-
|
|
183
|
+
_j.sent();
|
|
177
184
|
// 4. No false positive (collateral): bystanders received zero tags
|
|
178
185
|
return [4 /*yield*/, (0, testing_1.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); } })];
|
|
179
186
|
case 9:
|
|
180
187
|
// 4. No false positive (collateral): bystanders received zero tags
|
|
181
|
-
|
|
188
|
+
_j.sent();
|
|
182
189
|
return [4 /*yield*/, (0, testing_1.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); } })];
|
|
183
190
|
case 10:
|
|
184
|
-
|
|
191
|
+
_j.sent();
|
|
185
192
|
return [2 /*return*/];
|
|
186
193
|
}
|
|
187
194
|
});
|
|
188
195
|
};
|
|
189
196
|
_b = 0, ALL_STATUSES_2 = ALL_STATUSES;
|
|
190
|
-
|
|
197
|
+
_h.label = 6;
|
|
191
198
|
case 6:
|
|
192
199
|
if (!(_b < ALL_STATUSES_2.length)) return [3 /*break*/, 9];
|
|
193
200
|
status_2 = ALL_STATUSES_2[_b];
|
|
194
201
|
return [5 /*yield**/, _loop_1(status_2)];
|
|
195
202
|
case 7:
|
|
196
|
-
|
|
197
|
-
|
|
203
|
+
_h.sent();
|
|
204
|
+
_h.label = 8;
|
|
198
205
|
case 8:
|
|
199
206
|
_b++;
|
|
200
207
|
return [3 /*break*/, 6];
|
|
@@ -205,19 +212,19 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
205
212
|
(0, testing_1.log_header)("Multiple distinct per-attendee statuses in one group event");
|
|
206
213
|
return [4 /*yield*/, createEnduser()];
|
|
207
214
|
case 10:
|
|
208
|
-
aCompleted_1 =
|
|
215
|
+
aCompleted_1 = _h.sent();
|
|
209
216
|
return [4 /*yield*/, createEnduser()];
|
|
210
217
|
case 11:
|
|
211
|
-
bNoShow_1 =
|
|
218
|
+
bNoShow_1 = _h.sent();
|
|
212
219
|
return [4 /*yield*/, createEnduser()];
|
|
213
220
|
case 12:
|
|
214
|
-
cCancelled_1 =
|
|
221
|
+
cCancelled_1 = _h.sent();
|
|
215
222
|
return [4 /*yield*/, createEnduser()];
|
|
216
223
|
case 13:
|
|
217
|
-
dUnset_1 =
|
|
224
|
+
dUnset_1 = _h.sent();
|
|
218
225
|
return [4 /*yield*/, createGroupEvent([aCompleted_1.id, bNoShow_1.id, cCancelled_1.id, dUnset_1.id])];
|
|
219
226
|
case 14:
|
|
220
|
-
mixedEvent =
|
|
227
|
+
mixedEvent = _h.sent();
|
|
221
228
|
return [4 /*yield*/, setAttendeeStatuses(mixedEvent.id, [
|
|
222
229
|
{ id: aCompleted_1.id, status: 'Completed' },
|
|
223
230
|
{ id: bNoShow_1.id, status: 'No-showed' },
|
|
@@ -225,19 +232,19 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
225
232
|
// dUnset intentionally left without a status
|
|
226
233
|
])];
|
|
227
234
|
case 15:
|
|
228
|
-
|
|
235
|
+
_h.sent();
|
|
229
236
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)]; // allow all triggers to fire
|
|
230
237
|
case 16:
|
|
231
|
-
|
|
238
|
+
_h.sent(); // allow all triggers to fire
|
|
232
239
|
return [4 /*yield*/, (0, testing_1.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]); }); } })];
|
|
233
240
|
case 17:
|
|
234
|
-
|
|
241
|
+
_h.sent();
|
|
235
242
|
return [4 /*yield*/, (0, testing_1.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]); }); } })];
|
|
236
243
|
case 18:
|
|
237
|
-
|
|
244
|
+
_h.sent();
|
|
238
245
|
return [4 /*yield*/, (0, testing_1.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]); }); } })];
|
|
239
246
|
case 19:
|
|
240
|
-
|
|
247
|
+
_h.sent();
|
|
241
248
|
return [4 /*yield*/, (0, testing_1.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); } })
|
|
242
249
|
// ============================================================
|
|
243
250
|
// Status transitions (A -> B): changing an attendee's status fires the NEW status's trigger.
|
|
@@ -249,7 +256,7 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
249
256
|
// ============================================================
|
|
250
257
|
];
|
|
251
258
|
case 20:
|
|
252
|
-
|
|
259
|
+
_h.sent();
|
|
253
260
|
// ============================================================
|
|
254
261
|
// Status transitions (A -> B): changing an attendee's status fires the NEW status's trigger.
|
|
255
262
|
// Exercises both directions of the cancelledGroupAttendees mirroring:
|
|
@@ -261,28 +268,28 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
261
268
|
(0, testing_1.log_header)("Per-attendee status transitions fire the new status only");
|
|
262
269
|
return [4 /*yield*/, createEnduser()];
|
|
263
270
|
case 21:
|
|
264
|
-
transA_1 =
|
|
271
|
+
transA_1 = _h.sent();
|
|
265
272
|
return [4 /*yield*/, createEnduser()];
|
|
266
273
|
case 22:
|
|
267
|
-
transABystander_1 =
|
|
274
|
+
transABystander_1 = _h.sent();
|
|
268
275
|
return [4 /*yield*/, createGroupEvent([transA_1.id, transABystander_1.id])];
|
|
269
276
|
case 23:
|
|
270
|
-
transAEvent =
|
|
277
|
+
transAEvent = _h.sent();
|
|
271
278
|
return [4 /*yield*/, setAttendeeStatuses(transAEvent.id, [{ id: transA_1.id, status: 'No-showed' }])];
|
|
272
279
|
case 24:
|
|
273
|
-
|
|
280
|
+
_h.sent();
|
|
274
281
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)];
|
|
275
282
|
case 25:
|
|
276
|
-
|
|
283
|
+
_h.sent();
|
|
277
284
|
return [4 /*yield*/, (0, testing_1.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']); } })];
|
|
278
285
|
case 26:
|
|
279
|
-
|
|
286
|
+
_h.sent();
|
|
280
287
|
return [4 /*yield*/, setAttendeeStatuses(transAEvent.id, [{ id: transA_1.id, status: 'Completed' }])];
|
|
281
288
|
case 27:
|
|
282
|
-
|
|
289
|
+
_h.sent();
|
|
283
290
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)];
|
|
284
291
|
case 28:
|
|
285
|
-
|
|
292
|
+
_h.sent();
|
|
286
293
|
return [4 /*yield*/, (0, testing_1.async_test)("transition No-showed -> Completed fires Completed (No-showed tag retained, no Cancelled)", function () { return tagsOf(transA_1.id); }, { onResult: function (tags) {
|
|
287
294
|
return tags.includes(TAG['Completed'])
|
|
288
295
|
&& tags.includes(TAG['No-showed'])
|
|
@@ -291,33 +298,33 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
291
298
|
}
|
|
292
299
|
})];
|
|
293
300
|
case 29:
|
|
294
|
-
|
|
301
|
+
_h.sent();
|
|
295
302
|
return [4 /*yield*/, (0, testing_1.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); } })
|
|
296
303
|
// unmirrored -> mirrored
|
|
297
304
|
];
|
|
298
305
|
case 30:
|
|
299
|
-
|
|
306
|
+
_h.sent();
|
|
300
307
|
return [4 /*yield*/, createEnduser()];
|
|
301
308
|
case 31:
|
|
302
|
-
transB_1 =
|
|
309
|
+
transB_1 = _h.sent();
|
|
303
310
|
return [4 /*yield*/, createEnduser()];
|
|
304
311
|
case 32:
|
|
305
|
-
transBBystander_1 =
|
|
312
|
+
transBBystander_1 = _h.sent();
|
|
306
313
|
return [4 /*yield*/, createGroupEvent([transB_1.id, transBBystander_1.id])];
|
|
307
314
|
case 33:
|
|
308
|
-
transBEvent =
|
|
315
|
+
transBEvent = _h.sent();
|
|
309
316
|
return [4 /*yield*/, setAttendeeStatuses(transBEvent.id, [{ id: transB_1.id, status: 'Completed' }])];
|
|
310
317
|
case 34:
|
|
311
|
-
|
|
318
|
+
_h.sent();
|
|
312
319
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)];
|
|
313
320
|
case 35:
|
|
314
|
-
|
|
321
|
+
_h.sent();
|
|
315
322
|
return [4 /*yield*/, setAttendeeStatuses(transBEvent.id, [{ id: transB_1.id, status: 'No-showed' }])];
|
|
316
323
|
case 36:
|
|
317
|
-
|
|
324
|
+
_h.sent();
|
|
318
325
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)];
|
|
319
326
|
case 37:
|
|
320
|
-
|
|
327
|
+
_h.sent();
|
|
321
328
|
return [4 /*yield*/, (0, testing_1.async_test)("transition Completed -> No-showed fires No-showed (Completed tag retained, no Cancelled)", function () { return tagsOf(transB_1.id); }, { onResult: function (tags) {
|
|
322
329
|
return tags.includes(TAG['No-showed'])
|
|
323
330
|
&& tags.includes(TAG['Completed'])
|
|
@@ -326,7 +333,7 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
326
333
|
}
|
|
327
334
|
})];
|
|
328
335
|
case 38:
|
|
329
|
-
|
|
336
|
+
_h.sent();
|
|
330
337
|
return [4 /*yield*/, (0, testing_1.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); } })
|
|
331
338
|
// ============================================================
|
|
332
339
|
// 'by' filter on the per-attendee Cancelled path. The AttendeeStatusEditor update does not set
|
|
@@ -337,7 +344,7 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
337
344
|
// ============================================================
|
|
338
345
|
];
|
|
339
346
|
case 39:
|
|
340
|
-
|
|
347
|
+
_h.sent();
|
|
341
348
|
// ============================================================
|
|
342
349
|
// 'by' filter on the per-attendee Cancelled path. The AttendeeStatusEditor update does not set
|
|
343
350
|
// statusChangeSource, so handle_cancelled_event's by-filter (which requires statusChangeSource
|
|
@@ -353,7 +360,7 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
353
360
|
title: "Group Attendee Cancelled by user",
|
|
354
361
|
})];
|
|
355
362
|
case 40:
|
|
356
|
-
byUserTrigger =
|
|
363
|
+
byUserTrigger = _h.sent();
|
|
357
364
|
createdTriggerIds.push(byUserTrigger.id);
|
|
358
365
|
return [4 /*yield*/, sdk.api.automation_triggers.createOne({
|
|
359
366
|
event: { type: 'Appointment Cancelled', info: { by: 'enduser' } },
|
|
@@ -362,32 +369,32 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
362
369
|
title: "Group Attendee Cancelled by enduser",
|
|
363
370
|
})];
|
|
364
371
|
case 41:
|
|
365
|
-
byEnduserTrigger =
|
|
372
|
+
byEnduserTrigger = _h.sent();
|
|
366
373
|
createdTriggerIds.push(byEnduserTrigger.id);
|
|
367
374
|
return [4 /*yield*/, createEnduser()];
|
|
368
375
|
case 42:
|
|
369
|
-
byTarget_1 =
|
|
376
|
+
byTarget_1 = _h.sent();
|
|
370
377
|
return [4 /*yield*/, createEnduser()];
|
|
371
378
|
case 43:
|
|
372
|
-
byBystander_1 =
|
|
379
|
+
byBystander_1 = _h.sent();
|
|
373
380
|
return [4 /*yield*/, createGroupEvent([byTarget_1.id, byBystander_1.id])];
|
|
374
381
|
case 44:
|
|
375
|
-
byEvent =
|
|
382
|
+
byEvent = _h.sent();
|
|
376
383
|
return [4 /*yield*/, setAttendeeStatuses(byEvent.id, [{ id: byTarget_1.id, status: 'Cancelled' }])];
|
|
377
384
|
case 45:
|
|
378
|
-
|
|
385
|
+
_h.sent();
|
|
379
386
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)];
|
|
380
387
|
case 46:
|
|
381
|
-
|
|
388
|
+
_h.sent();
|
|
382
389
|
return [4 /*yield*/, (0, testing_1.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']); } })];
|
|
383
390
|
case 47:
|
|
384
|
-
|
|
391
|
+
_h.sent();
|
|
385
392
|
return [4 /*yield*/, (0, testing_1.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'); } })];
|
|
386
393
|
case 48:
|
|
387
|
-
|
|
394
|
+
_h.sent();
|
|
388
395
|
return [4 /*yield*/, (0, testing_1.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'); } })];
|
|
389
396
|
case 49:
|
|
390
|
-
|
|
397
|
+
_h.sent();
|
|
391
398
|
return [4 /*yield*/, (0, testing_1.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); } })
|
|
392
399
|
// ============================================================
|
|
393
400
|
// bulk_update cancel_for_attendee fires Cancelled exactly once (via the new handler;
|
|
@@ -395,7 +402,7 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
395
402
|
// ============================================================
|
|
396
403
|
];
|
|
397
404
|
case 50:
|
|
398
|
-
|
|
405
|
+
_h.sent();
|
|
399
406
|
// ============================================================
|
|
400
407
|
// bulk_update cancel_for_attendee fires Cancelled exactly once (via the new handler;
|
|
401
408
|
// the legacy cancelledGroupAttendees branch is suppressed by the attendeeStatuses filter).
|
|
@@ -403,10 +410,10 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
403
410
|
(0, testing_1.log_header)("bulk_update cancel_for_attendee fires Cancelled for attendee");
|
|
404
411
|
return [4 /*yield*/, createEnduser()];
|
|
405
412
|
case 51:
|
|
406
|
-
bulkTarget_1 =
|
|
413
|
+
bulkTarget_1 = _h.sent();
|
|
407
414
|
return [4 /*yield*/, createEnduser()];
|
|
408
415
|
case 52:
|
|
409
|
-
bulkBystander_1 =
|
|
416
|
+
bulkBystander_1 = _h.sent();
|
|
410
417
|
now = Date.now();
|
|
411
418
|
DAY = 24 * 60 * 60 * 1000;
|
|
412
419
|
return [4 /*yield*/, sdk.api.calendar_events.createOne({
|
|
@@ -416,7 +423,7 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
416
423
|
attendees: [{ type: 'enduser', id: bulkTarget_1.id }, { type: 'enduser', id: bulkBystander_1.id }],
|
|
417
424
|
})];
|
|
418
425
|
case 53:
|
|
419
|
-
rootEvent =
|
|
426
|
+
rootEvent = _h.sent();
|
|
420
427
|
createdEventIds.push(rootEvent.id);
|
|
421
428
|
return [4 /*yield*/, sdk.api.calendar_events.createOne({
|
|
422
429
|
title: 'Group Status Test',
|
|
@@ -426,7 +433,7 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
426
433
|
attendees: [{ type: 'enduser', id: bulkTarget_1.id }, { type: 'enduser', id: bulkBystander_1.id }],
|
|
427
434
|
})];
|
|
428
435
|
case 54:
|
|
429
|
-
childEvent =
|
|
436
|
+
childEvent = _h.sent();
|
|
430
437
|
createdEventIds.push(childEvent.id);
|
|
431
438
|
return [4 /*yield*/, sdk.api.calendar_events.bulk_update({
|
|
432
439
|
recurringEventId: rootEvent.id,
|
|
@@ -435,122 +442,331 @@ var group_event_attendee_status_triggers_tests = function (_a) {
|
|
|
435
442
|
enduserId: bulkTarget_1.id,
|
|
436
443
|
})];
|
|
437
444
|
case 55:
|
|
438
|
-
|
|
445
|
+
_h.sent();
|
|
439
446
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)];
|
|
440
447
|
case 56:
|
|
441
|
-
|
|
448
|
+
_h.sent();
|
|
442
449
|
return [4 /*yield*/, (0, testing_1.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']); } })];
|
|
443
450
|
case 57:
|
|
444
|
-
|
|
451
|
+
_h.sent();
|
|
445
452
|
return [4 /*yield*/, (0, testing_1.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); } })
|
|
446
453
|
// ============================================================
|
|
447
454
|
// 'Confirmed' and clearing a status fire nothing.
|
|
448
455
|
// ============================================================
|
|
449
456
|
];
|
|
450
457
|
case 58:
|
|
451
|
-
|
|
458
|
+
_h.sent();
|
|
452
459
|
// ============================================================
|
|
453
460
|
// 'Confirmed' and clearing a status fire nothing.
|
|
454
461
|
// ============================================================
|
|
455
462
|
(0, testing_1.log_header)("Confirmed / cleared statuses fire no triggers");
|
|
456
463
|
return [4 /*yield*/, createEnduser()];
|
|
457
464
|
case 59:
|
|
458
|
-
confirmEnduser_1 =
|
|
465
|
+
confirmEnduser_1 = _h.sent();
|
|
459
466
|
return [4 /*yield*/, createEnduser()];
|
|
460
467
|
case 60:
|
|
461
|
-
clearEnduser_1 =
|
|
468
|
+
clearEnduser_1 = _h.sent();
|
|
462
469
|
return [4 /*yield*/, createGroupEvent([confirmEnduser_1.id, clearEnduser_1.id])
|
|
463
470
|
// set clearEnduser to No-showed, then clear it; set confirmEnduser to Confirmed
|
|
464
471
|
];
|
|
465
472
|
case 61:
|
|
466
|
-
noopEvent =
|
|
473
|
+
noopEvent = _h.sent();
|
|
467
474
|
// set clearEnduser to No-showed, then clear it; set confirmEnduser to Confirmed
|
|
468
475
|
return [4 /*yield*/, setAttendeeStatuses(noopEvent.id, [{ id: clearEnduser_1.id, status: 'No-showed' }])];
|
|
469
476
|
case 62:
|
|
470
477
|
// set clearEnduser to No-showed, then clear it; set confirmEnduser to Confirmed
|
|
471
|
-
|
|
478
|
+
_h.sent();
|
|
472
479
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)];
|
|
473
480
|
case 63:
|
|
474
|
-
|
|
481
|
+
_h.sent();
|
|
475
482
|
return [4 /*yield*/, setAttendeeStatuses(noopEvent.id, [{ id: confirmEnduser_1.id, status: 'Confirmed' }])]; // also clears clearEnduser
|
|
476
483
|
case 64:
|
|
477
|
-
|
|
484
|
+
_h.sent(); // also clears clearEnduser
|
|
478
485
|
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)];
|
|
479
486
|
case 65:
|
|
480
|
-
|
|
487
|
+
_h.sent();
|
|
481
488
|
return [4 /*yield*/, (0, testing_1.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); } })
|
|
482
489
|
// clearEnduser previously got the No-showed tag (that firing is expected); clearing must not
|
|
483
490
|
// add anything new. Assert it still has exactly the one No-showed tag and nothing else.
|
|
484
491
|
];
|
|
485
492
|
case 66:
|
|
486
|
-
|
|
493
|
+
_h.sent();
|
|
487
494
|
// clearEnduser previously got the No-showed tag (that firing is expected); clearing must not
|
|
488
495
|
// add anything new. Assert it still has exactly the one No-showed tag and nothing else.
|
|
489
|
-
return [4 /*yield*/, (0, testing_1.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']); } })
|
|
496
|
+
return [4 /*yield*/, (0, testing_1.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']); } })
|
|
497
|
+
// ============================================================
|
|
498
|
+
// Marking the WHOLE event Complete must not fan "Appointment Completed" out to attendees who
|
|
499
|
+
// already have an explicit per-attendee status — they were resolved individually (and already
|
|
500
|
+
// fired their own trigger via handle_attendee_status_change_triggers). Attendees with no status,
|
|
501
|
+
// or 'Confirmed', are still active participants and must still fire.
|
|
502
|
+
//
|
|
503
|
+
// Each case uses fresh endusers and a fresh event: triggers are throttled for 60s per
|
|
504
|
+
// trigger-per-enduser, and the completion handler early-returns once completedAt is already set.
|
|
505
|
+
//
|
|
506
|
+
// Not covered here: per-attendee 'Completed' followed by event-wide completion. That duplicate
|
|
507
|
+
// fire is already swallowed by the 60s throttle (which is applied before the action, and Add Tags
|
|
508
|
+
// is idempotent), so the assertion would pass with or without the filter.
|
|
509
|
+
// ============================================================
|
|
510
|
+
];
|
|
490
511
|
case 67:
|
|
491
512
|
// clearEnduser previously got the No-showed tag (that firing is expected); clearing must not
|
|
492
513
|
// add anything new. Assert it still has exactly the one No-showed tag and nothing else.
|
|
493
|
-
|
|
494
|
-
|
|
514
|
+
_h.sent();
|
|
515
|
+
// ============================================================
|
|
516
|
+
// Marking the WHOLE event Complete must not fan "Appointment Completed" out to attendees who
|
|
517
|
+
// already have an explicit per-attendee status — they were resolved individually (and already
|
|
518
|
+
// fired their own trigger via handle_attendee_status_change_triggers). Attendees with no status,
|
|
519
|
+
// or 'Confirmed', are still active participants and must still fire.
|
|
520
|
+
//
|
|
521
|
+
// Each case uses fresh endusers and a fresh event: triggers are throttled for 60s per
|
|
522
|
+
// trigger-per-enduser, and the completion handler early-returns once completedAt is already set.
|
|
523
|
+
//
|
|
524
|
+
// Not covered here: per-attendee 'Completed' followed by event-wide completion. That duplicate
|
|
525
|
+
// fire is already swallowed by the 60s throttle (which is applied before the action, and Add Tags
|
|
526
|
+
// is idempotent), so the assertion would pass with or without the filter.
|
|
527
|
+
// ============================================================
|
|
528
|
+
(0, testing_1.log_header)("Event-wide completion respects per-attendee statuses");
|
|
529
|
+
_loop_2 = function (status_3) {
|
|
530
|
+
var target, active, event_2;
|
|
531
|
+
return __generator(this, function (_k) {
|
|
532
|
+
switch (_k.label) {
|
|
533
|
+
case 0: return [4 /*yield*/, createEnduser()];
|
|
534
|
+
case 1:
|
|
535
|
+
target = _k.sent();
|
|
536
|
+
return [4 /*yield*/, createEnduser()];
|
|
537
|
+
case 2:
|
|
538
|
+
active = _k.sent();
|
|
539
|
+
return [4 /*yield*/, createGroupEvent([target.id, active.id])];
|
|
540
|
+
case 3:
|
|
541
|
+
event_2 = _k.sent();
|
|
542
|
+
return [4 /*yield*/, setAttendeeStatuses(event_2.id, [{ id: target.id, status: status_3 }])];
|
|
543
|
+
case 4:
|
|
544
|
+
_k.sent();
|
|
545
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)
|
|
546
|
+
// pre-condition: the per-attendee status fired its own trigger
|
|
547
|
+
];
|
|
548
|
+
case 5:
|
|
549
|
+
_k.sent();
|
|
550
|
+
// pre-condition: the per-attendee status fired its own trigger
|
|
551
|
+
return [4 /*yield*/, (0, testing_1.async_test)("event-wide completion setup: '".concat(status_3, "' attendee has the '").concat(status_3, "' tag"), function () { return tagsOf(target.id); }, { onResult: function (tags) { return tags.includes(TAG[status_3]); } })];
|
|
552
|
+
case 6:
|
|
553
|
+
// pre-condition: the per-attendee status fired its own trigger
|
|
554
|
+
_k.sent();
|
|
555
|
+
return [4 /*yield*/, markEventCompleted(event_2.id)];
|
|
556
|
+
case 7:
|
|
557
|
+
_k.sent();
|
|
558
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)];
|
|
559
|
+
case 8:
|
|
560
|
+
_k.sent();
|
|
561
|
+
return [4 /*yield*/, (0, testing_1.async_test)("event-wide completion does NOT fire Completed for the '".concat(status_3, "' attendee"), function () { return tagsOf(target.id); }, { onResult: function (tags) { return !tags.includes(TAG['Completed']); } })];
|
|
562
|
+
case 9:
|
|
563
|
+
_k.sent();
|
|
564
|
+
return [4 /*yield*/, (0, testing_1.async_test)("event-wide completion leaves the '".concat(status_3, "' attendee with only its own tag"), function () { return tagsOf(target.id); }, { onResult: function (tags) { return tags.length === 1 && tags.includes(TAG[status_3]); } })
|
|
565
|
+
// guard against over-filtering: the un-statused attendee must still be completed
|
|
566
|
+
];
|
|
567
|
+
case 10:
|
|
568
|
+
_k.sent();
|
|
569
|
+
// guard against over-filtering: the un-statused attendee must still be completed
|
|
570
|
+
return [4 /*yield*/, (0, testing_1.async_test)("event-wide completion still fires Completed for the active attendee (alongside '".concat(status_3, "')"), function () { return tagsOf(active.id); }, { onResult: function (tags) { return tags.includes(TAG['Completed']); } })];
|
|
571
|
+
case 11:
|
|
572
|
+
// guard against over-filtering: the un-statused attendee must still be completed
|
|
573
|
+
_k.sent();
|
|
574
|
+
return [2 /*return*/];
|
|
575
|
+
}
|
|
576
|
+
});
|
|
577
|
+
};
|
|
578
|
+
_c = 0, _d = ['No-showed', 'Cancelled', 'Rescheduled'];
|
|
579
|
+
_h.label = 68;
|
|
495
580
|
case 68:
|
|
496
|
-
_c
|
|
497
|
-
|
|
581
|
+
if (!(_c < _d.length)) return [3 /*break*/, 71];
|
|
582
|
+
status_3 = _d[_c];
|
|
583
|
+
return [5 /*yield**/, _loop_2(status_3)];
|
|
498
584
|
case 69:
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
_f.label = 70;
|
|
585
|
+
_h.sent();
|
|
586
|
+
_h.label = 70;
|
|
502
587
|
case 70:
|
|
503
|
-
|
|
504
|
-
return [
|
|
588
|
+
_c++;
|
|
589
|
+
return [3 /*break*/, 68];
|
|
505
590
|
case 71:
|
|
506
|
-
|
|
507
|
-
|
|
591
|
+
// cancelledGroupAttendees with no attendeeStatuses entry — the shape written by the patient
|
|
592
|
+
// portal when an enduser cancels themselves out of a group event.
|
|
593
|
+
(0, testing_1.log_header)("Event-wide completion respects legacy cancelledGroupAttendees");
|
|
594
|
+
return [4 /*yield*/, createEnduser()];
|
|
508
595
|
case 72:
|
|
509
|
-
|
|
510
|
-
return [
|
|
596
|
+
portalCancelled_1 = _h.sent();
|
|
597
|
+
return [4 /*yield*/, createEnduser()];
|
|
511
598
|
case 73:
|
|
512
|
-
|
|
513
|
-
return [
|
|
599
|
+
portalActive_1 = _h.sent();
|
|
600
|
+
return [4 /*yield*/, createGroupEvent([portalCancelled_1.id, portalActive_1.id])];
|
|
514
601
|
case 74:
|
|
515
|
-
|
|
516
|
-
|
|
602
|
+
portalEvent = _h.sent();
|
|
603
|
+
return [4 /*yield*/, sdk.api.calendar_events.updateOne(portalEvent.id, {
|
|
604
|
+
cancelledGroupAttendees: [{ id: portalCancelled_1.id, at: new Date() }],
|
|
605
|
+
}, { replaceObjectFields: true })];
|
|
517
606
|
case 75:
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
607
|
+
_h.sent();
|
|
608
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)
|
|
609
|
+
// pre-condition: the legacy branch fires Cancelled for them
|
|
610
|
+
];
|
|
521
611
|
case 76:
|
|
522
|
-
|
|
523
|
-
|
|
612
|
+
_h.sent();
|
|
613
|
+
// pre-condition: the legacy branch fires Cancelled for them
|
|
614
|
+
return [4 /*yield*/, (0, testing_1.async_test)("legacy cancelledGroupAttendees setup: attendee has the Cancelled tag", function () { return tagsOf(portalCancelled_1.id); }, { onResult: function (tags) { return tags.includes(TAG['Cancelled']); } })];
|
|
524
615
|
case 77:
|
|
525
|
-
|
|
526
|
-
|
|
616
|
+
// pre-condition: the legacy branch fires Cancelled for them
|
|
617
|
+
_h.sent();
|
|
618
|
+
return [4 /*yield*/, markEventCompleted(portalEvent.id)];
|
|
527
619
|
case 78:
|
|
528
|
-
|
|
529
|
-
return [
|
|
620
|
+
_h.sent();
|
|
621
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)];
|
|
530
622
|
case 79:
|
|
531
|
-
|
|
532
|
-
return [
|
|
623
|
+
_h.sent();
|
|
624
|
+
return [4 /*yield*/, (0, testing_1.async_test)("event-wide completion does NOT fire Completed for a cancelledGroupAttendees attendee", function () { return tagsOf(portalCancelled_1.id); }, { onResult: function (tags) { return !tags.includes(TAG['Completed']); } })];
|
|
533
625
|
case 80:
|
|
534
|
-
|
|
535
|
-
|
|
626
|
+
_h.sent();
|
|
627
|
+
return [4 /*yield*/, (0, testing_1.async_test)("event-wide completion still fires Completed for the active attendee (legacy cancel case)", function () { return tagsOf(portalActive_1.id); }, { onResult: function (tags) { return tags.includes(TAG['Completed']); } })
|
|
628
|
+
// ============================================================
|
|
629
|
+
// Over-filtering guards: 'Confirmed' and no-status attendees must still complete.
|
|
630
|
+
// ============================================================
|
|
631
|
+
];
|
|
536
632
|
case 81:
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
633
|
+
_h.sent();
|
|
634
|
+
// ============================================================
|
|
635
|
+
// Over-filtering guards: 'Confirmed' and no-status attendees must still complete.
|
|
636
|
+
// ============================================================
|
|
637
|
+
(0, testing_1.log_header)("Event-wide completion still fires for Confirmed / un-statused attendees");
|
|
638
|
+
return [4 /*yield*/, createEnduser()];
|
|
540
639
|
case 82:
|
|
541
|
-
|
|
542
|
-
return [4 /*yield*/,
|
|
640
|
+
confirmed_1 = _h.sent();
|
|
641
|
+
return [4 /*yield*/, createEnduser()];
|
|
543
642
|
case 83:
|
|
544
|
-
|
|
545
|
-
return [
|
|
643
|
+
confirmedBystander_1 = _h.sent();
|
|
644
|
+
return [4 /*yield*/, createGroupEvent([confirmed_1.id, confirmedBystander_1.id])];
|
|
546
645
|
case 84:
|
|
547
|
-
|
|
548
|
-
return [
|
|
646
|
+
confirmedEvent = _h.sent();
|
|
647
|
+
return [4 /*yield*/, setAttendeeStatuses(confirmedEvent.id, [{ id: confirmed_1.id, status: 'Confirmed' }])];
|
|
549
648
|
case 85:
|
|
649
|
+
_h.sent();
|
|
650
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 750)];
|
|
651
|
+
case 86:
|
|
652
|
+
_h.sent();
|
|
653
|
+
return [4 /*yield*/, markEventCompleted(confirmedEvent.id)];
|
|
654
|
+
case 87:
|
|
655
|
+
_h.sent();
|
|
656
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)];
|
|
657
|
+
case 88:
|
|
658
|
+
_h.sent();
|
|
659
|
+
return [4 /*yield*/, (0, testing_1.async_test)("event-wide completion fires Completed for a 'Confirmed' attendee", function () { return tagsOf(confirmed_1.id); }, { onResult: function (tags) { return tags.includes(TAG['Completed']); } })];
|
|
660
|
+
case 89:
|
|
661
|
+
_h.sent();
|
|
662
|
+
return [4 /*yield*/, (0, testing_1.async_test)("event-wide completion fires Completed for the bystander alongside 'Confirmed'", function () { return tagsOf(confirmedBystander_1.id); }, { onResult: function (tags) { return tags.includes(TAG['Completed']); } })
|
|
663
|
+
// baseline: a group event with no per-attendee statuses completes for everyone
|
|
664
|
+
];
|
|
665
|
+
case 90:
|
|
666
|
+
_h.sent();
|
|
667
|
+
return [4 /*yield*/, createEnduser()];
|
|
668
|
+
case 91:
|
|
669
|
+
plain1 = _h.sent();
|
|
670
|
+
return [4 /*yield*/, createEnduser()];
|
|
671
|
+
case 92:
|
|
672
|
+
plain2 = _h.sent();
|
|
673
|
+
return [4 /*yield*/, createEnduser()];
|
|
674
|
+
case 93:
|
|
675
|
+
plain3 = _h.sent();
|
|
676
|
+
return [4 /*yield*/, createGroupEvent([plain1.id, plain2.id, plain3.id])];
|
|
677
|
+
case 94:
|
|
678
|
+
plainEvent = _h.sent();
|
|
679
|
+
return [4 /*yield*/, markEventCompleted(plainEvent.id)];
|
|
680
|
+
case 95:
|
|
681
|
+
_h.sent();
|
|
682
|
+
return [4 /*yield*/, (0, testing_1.wait)(undefined, 1000)];
|
|
683
|
+
case 96:
|
|
684
|
+
_h.sent();
|
|
685
|
+
plainAttendees = [plain1, plain2, plain3];
|
|
686
|
+
_loop_3 = function (i) {
|
|
687
|
+
var enduserId;
|
|
688
|
+
return __generator(this, function (_l) {
|
|
689
|
+
switch (_l.label) {
|
|
690
|
+
case 0:
|
|
691
|
+
enduserId = plainAttendees[i].id;
|
|
692
|
+
return [4 /*yield*/, (0, testing_1.async_test)("event-wide completion fires Completed for un-statused attendee #".concat(i + 1), function () { return tagsOf(enduserId); }, { onResult: function (tags) { return tags.includes(TAG['Completed']); } })];
|
|
693
|
+
case 1:
|
|
694
|
+
_l.sent();
|
|
695
|
+
return [2 /*return*/];
|
|
696
|
+
}
|
|
697
|
+
});
|
|
698
|
+
};
|
|
699
|
+
i = 0;
|
|
700
|
+
_h.label = 97;
|
|
701
|
+
case 97:
|
|
702
|
+
if (!(i < plainAttendees.length)) return [3 /*break*/, 100];
|
|
703
|
+
return [5 /*yield**/, _loop_3(i)];
|
|
704
|
+
case 98:
|
|
705
|
+
_h.sent();
|
|
706
|
+
_h.label = 99;
|
|
707
|
+
case 99:
|
|
708
|
+
i++;
|
|
709
|
+
return [3 /*break*/, 97];
|
|
710
|
+
case 100: return [3 /*break*/, 120];
|
|
711
|
+
case 101:
|
|
712
|
+
_e = 0, createdEventIds_1 = createdEventIds;
|
|
713
|
+
_h.label = 102;
|
|
714
|
+
case 102:
|
|
715
|
+
if (!(_e < createdEventIds_1.length)) return [3 /*break*/, 107];
|
|
716
|
+
id = createdEventIds_1[_e];
|
|
717
|
+
_h.label = 103;
|
|
718
|
+
case 103:
|
|
719
|
+
_h.trys.push([103, 105, , 106]);
|
|
720
|
+
return [4 /*yield*/, sdk.api.calendar_events.deleteOne(id)];
|
|
721
|
+
case 104:
|
|
722
|
+
_h.sent();
|
|
723
|
+
return [3 /*break*/, 106];
|
|
724
|
+
case 105:
|
|
725
|
+
_1 = _h.sent();
|
|
726
|
+
return [3 /*break*/, 106];
|
|
727
|
+
case 106:
|
|
550
728
|
_e++;
|
|
551
|
-
return [3 /*break*/,
|
|
552
|
-
case
|
|
553
|
-
|
|
729
|
+
return [3 /*break*/, 102];
|
|
730
|
+
case 107:
|
|
731
|
+
_f = 0, createdEnduserIds_1 = createdEnduserIds;
|
|
732
|
+
_h.label = 108;
|
|
733
|
+
case 108:
|
|
734
|
+
if (!(_f < createdEnduserIds_1.length)) return [3 /*break*/, 113];
|
|
735
|
+
id = createdEnduserIds_1[_f];
|
|
736
|
+
_h.label = 109;
|
|
737
|
+
case 109:
|
|
738
|
+
_h.trys.push([109, 111, , 112]);
|
|
739
|
+
return [4 /*yield*/, sdk.api.endusers.deleteOne(id)];
|
|
740
|
+
case 110:
|
|
741
|
+
_h.sent();
|
|
742
|
+
return [3 /*break*/, 112];
|
|
743
|
+
case 111:
|
|
744
|
+
_2 = _h.sent();
|
|
745
|
+
return [3 /*break*/, 112];
|
|
746
|
+
case 112:
|
|
747
|
+
_f++;
|
|
748
|
+
return [3 /*break*/, 108];
|
|
749
|
+
case 113:
|
|
750
|
+
_g = 0, createdTriggerIds_1 = createdTriggerIds;
|
|
751
|
+
_h.label = 114;
|
|
752
|
+
case 114:
|
|
753
|
+
if (!(_g < createdTriggerIds_1.length)) return [3 /*break*/, 119];
|
|
754
|
+
id = createdTriggerIds_1[_g];
|
|
755
|
+
_h.label = 115;
|
|
756
|
+
case 115:
|
|
757
|
+
_h.trys.push([115, 117, , 118]);
|
|
758
|
+
return [4 /*yield*/, sdk.api.automation_triggers.deleteOne(id)];
|
|
759
|
+
case 116:
|
|
760
|
+
_h.sent();
|
|
761
|
+
return [3 /*break*/, 118];
|
|
762
|
+
case 117:
|
|
763
|
+
_3 = _h.sent();
|
|
764
|
+
return [3 /*break*/, 118];
|
|
765
|
+
case 118:
|
|
766
|
+
_g++;
|
|
767
|
+
return [3 /*break*/, 114];
|
|
768
|
+
case 119: return [7 /*endfinally*/];
|
|
769
|
+
case 120: return [2 /*return*/];
|
|
554
770
|
}
|
|
555
771
|
});
|
|
556
772
|
});
|