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