Skip to content

Commit a02bdad

Browse files
authoredOct 25, 2024··
Merge pull request #102 from hudl/SK24-SkippedCanceledEvents
Filter out canceled events from updates
2 parents 7936b0f + a32d03e commit a02bdad

File tree

2 files changed

+46
-45
lines changed

2 files changed

+46
-45
lines changed
 

‎src/__tests__/updateOne.tests.ts

+45-45
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ describe('updateOne', () => {
6666
test('skips updates for snoozed users', () => {
6767
updateOne({ ...baseUserSettings, snoozed: true });
6868

69-
expect(setUserStatusMock).not.toBeCalled();
70-
expect(setUserPresenceMock).not.toBeCalled();
71-
expect(upsertCurrentEventMock).not.toBeCalled();
72-
expect(postMessageMock).not.toBeCalled();
69+
expect(setUserStatusMock).not.toHaveBeenCalled();
70+
expect(setUserPresenceMock).not.toHaveBeenCalled();
71+
expect(upsertCurrentEventMock).not.toHaveBeenCalled();
72+
expect(postMessageMock).not.toHaveBeenCalled();
7373
});
7474

7575
describe('updating Slack status', () => {
@@ -82,25 +82,25 @@ describe('updateOne', () => {
8282
test('does not update Slack status', async () => {
8383
await updateOne(baseUserSettings);
8484

85-
expect(setUserStatusMock).not.toBeCalled();
86-
expect(setUserPresenceMock).not.toBeCalled();
85+
expect(setUserStatusMock).not.toHaveBeenCalled();
86+
expect(setUserPresenceMock).not.toHaveBeenCalled();
8787
});
8888
test('does not update DynamoDB', async () => {
8989
await updateOne(baseUserSettings);
9090

91-
expect(upsertCurrentEventMock).not.toBeCalled();
92-
expect(removeCurrentEventMock).not.toBeCalled();
91+
expect(upsertCurrentEventMock).not.toHaveBeenCalled();
92+
expect(removeCurrentEventMock).not.toHaveBeenCalled();
9393
});
9494
});
9595
describe('and a current event', () => {
9696
test('clears Slack status', async () => {
9797
await updateOne(userWithCurrentEvent);
9898

99-
expect(setUserStatusMock).toBeCalledWith(userWithCurrentEvent.email, userWithCurrentEvent.slackToken, {
99+
expect(setUserStatusMock).toHaveBeenCalledWith(userWithCurrentEvent.email, userWithCurrentEvent.slackToken, {
100100
text: '',
101101
emoji: '',
102102
});
103-
expect(setUserPresenceMock).toBeCalledWith(
103+
expect(setUserPresenceMock).toHaveBeenCalledWith(
104104
userWithCurrentEvent.email,
105105
userWithCurrentEvent.slackToken,
106106
'auto',
@@ -109,7 +109,7 @@ describe('updateOne', () => {
109109
test('removes event in DynamoDB', async () => {
110110
await updateOne(userWithCurrentEvent);
111111

112-
expect(removeCurrentEventMock).toBeCalledWith(userWithCurrentEvent.email);
112+
expect(removeCurrentEventMock).toHaveBeenCalledWith(userWithCurrentEvent.email);
113113
});
114114
});
115115
});
@@ -122,14 +122,14 @@ describe('updateOne', () => {
122122
test('does not update Slack status', async () => {
123123
await updateOne(userWithCurrentEvent);
124124

125-
expect(setUserStatusMock).not.toBeCalled();
126-
expect(setUserPresenceMock).not.toBeCalled();
125+
expect(setUserStatusMock).not.toHaveBeenCalled();
126+
expect(setUserPresenceMock).not.toHaveBeenCalled();
127127
});
128128
test('does not update DynamoDB', async () => {
129129
await updateOne(userWithCurrentEvent);
130130

131-
expect(upsertCurrentEventMock).not.toBeCalled();
132-
expect(removeCurrentEventMock).not.toBeCalled();
131+
expect(upsertCurrentEventMock).not.toHaveBeenCalled();
132+
expect(removeCurrentEventMock).not.toHaveBeenCalled();
133133
});
134134
});
135135
describe('that does not match the current event', () => {
@@ -140,11 +140,11 @@ describe('updateOne', () => {
140140
test('updates Slack status to OOO', async () => {
141141
await updateOne(userWithCurrentEvent);
142142

143-
expect(setUserStatusMock).toBeCalledWith(userWithCurrentEvent.email, userWithCurrentEvent.slackToken, {
143+
expect(setUserStatusMock).toHaveBeenCalledWith(userWithCurrentEvent.email, userWithCurrentEvent.slackToken, {
144144
text: 'OOO until Saturday, January 4',
145145
emoji: ':ooo:',
146146
});
147-
expect(setUserPresenceMock).toBeCalledWith(
147+
expect(setUserPresenceMock).toHaveBeenCalledWith(
148148
userWithCurrentEvent.email,
149149
userWithCurrentEvent.slackToken,
150150
'away',
@@ -153,7 +153,7 @@ describe('updateOne', () => {
153153
test('sets the current event to the new event DynamoDB', async () => {
154154
await updateOne(userWithCurrentEvent);
155155

156-
expect(upsertCurrentEventMock).toBeCalledWith(userWithCurrentEvent.email, oooEvent);
156+
expect(upsertCurrentEventMock).toHaveBeenCalledWith(userWithCurrentEvent.email, oooEvent);
157157
});
158158
});
159159
});
@@ -176,14 +176,14 @@ describe('updateOne', () => {
176176
test('does not update Slack status', async () => {
177177
await updateOne(userWithCurrentEvent);
178178

179-
expect(setUserStatusMock).not.toBeCalled();
180-
expect(setUserPresenceMock).not.toBeCalled();
179+
expect(setUserStatusMock).not.toHaveBeenCalled();
180+
expect(setUserPresenceMock).not.toHaveBeenCalled();
181181
});
182182
test('does not update DynamoDB', async () => {
183183
await updateOne(userWithCurrentEvent);
184184

185-
expect(upsertCurrentEventMock).not.toBeCalled();
186-
expect(removeCurrentEventMock).not.toBeCalled();
185+
expect(upsertCurrentEventMock).not.toHaveBeenCalled();
186+
expect(removeCurrentEventMock).not.toHaveBeenCalled();
187187
});
188188
});
189189

@@ -195,11 +195,11 @@ describe('updateOne', () => {
195195
test('updates Slack status to event with highest-priority ShowAs', async () => {
196196
await updateOne(userWithCurrentEvent);
197197

198-
expect(setUserStatusMock).toBeCalledWith(userWithCurrentEvent.email, userWithCurrentEvent.slackToken, {
198+
expect(setUserStatusMock).toHaveBeenCalledWith(userWithCurrentEvent.email, userWithCurrentEvent.slackToken, {
199199
text: 'OOO until Saturday, January 4',
200200
emoji: ':ooo:',
201201
});
202-
expect(setUserPresenceMock).toBeCalledWith(
202+
expect(setUserPresenceMock).toHaveBeenCalledWith(
203203
userWithCurrentEvent.email,
204204
userWithCurrentEvent.slackToken,
205205
'away',
@@ -208,7 +208,7 @@ describe('updateOne', () => {
208208
test('sets the current event to event with highest-priority ShowAs in DynamoDB', async () => {
209209
await updateOne(userWithCurrentEvent);
210210

211-
expect(upsertCurrentEventMock).toBeCalledWith(userWithCurrentEvent.email, oooEvent);
211+
expect(upsertCurrentEventMock).toHaveBeenCalledWith(userWithCurrentEvent.email, oooEvent);
212212
});
213213
});
214214

@@ -228,11 +228,11 @@ describe('updateOne', () => {
228228
test('updates Slack status to event with latest start time', async () => {
229229
await updateOne(userWithCurrentEvent);
230230

231-
expect(setUserStatusMock).toBeCalledWith(userWithCurrentEvent.email, userWithCurrentEvent.slackToken, {
231+
expect(setUserStatusMock).toHaveBeenCalledWith(userWithCurrentEvent.email, userWithCurrentEvent.slackToken, {
232232
text: 'Away',
233233
emoji: ':spiral_calendar_pad:',
234234
});
235-
expect(setUserPresenceMock).toBeCalledWith(
235+
expect(setUserPresenceMock).toHaveBeenCalledWith(
236236
userWithCurrentEvent.email,
237237
userWithCurrentEvent.slackToken,
238238
'away',
@@ -241,7 +241,7 @@ describe('updateOne', () => {
241241
test('sets the current event to event with latest start time in DynamoDB', async () => {
242242
await updateOne(userWithCurrentEvent);
243243

244-
expect(upsertCurrentEventMock).toBeCalledWith(userWithCurrentEvent.email, busyEvent);
244+
expect(upsertCurrentEventMock).toHaveBeenCalledWith(userWithCurrentEvent.email, busyEvent);
245245
});
246246
});
247247
});
@@ -256,27 +256,27 @@ describe('updateOne', () => {
256256
test('sends a Slack reminder', async () => {
257257
await updateOne(userWithCurrentEvent);
258258

259-
expect(postMessageMock).toBeCalledWith(botToken, {
259+
expect(postMessageMock).toHaveBeenCalledWith(botToken, {
260260
text: 'You have an upcoming meeting: *meetings* at https://my.test.url',
261261
channel: slackUser.id,
262262
});
263263
});
264264
test('updates the last reminder event ID in DynamoDB', async () => {
265265
await updateOne(userWithCurrentEvent);
266266

267-
expect(setLastReminderEventIdMock).toBeCalledWith(userWithCurrentEvent.email, oooEvent.id);
267+
expect(setLastReminderEventIdMock).toHaveBeenCalledWith(userWithCurrentEvent.email, oooEvent.id);
268268
});
269269
});
270270
describe('and the user has been sent a reminder', () => {
271271
test('does not send a Slack reminder', async () => {
272272
await updateOne({ ...userWithCurrentEvent, lastReminderEventId: oooEvent.id });
273273

274-
expect(postMessageMock).not.toBeCalled();
274+
expect(postMessageMock).not.toHaveBeenCalled();
275275
});
276276
test('does not update the last reminder event ID in DynamoDB', async () => {
277277
await updateOne({ ...userWithCurrentEvent, lastReminderEventId: oooEvent.id });
278278

279-
expect(setLastReminderEventIdMock).not.toBeCalled();
279+
expect(setLastReminderEventIdMock).not.toHaveBeenCalled();
280280
});
281281
});
282282
});
@@ -287,12 +287,12 @@ describe('updateOne', () => {
287287
test('does not send a Slack reminder', async () => {
288288
await updateOne(userWithCurrentEvent);
289289

290-
expect(postMessageMock).not.toBeCalled();
290+
expect(postMessageMock).not.toHaveBeenCalled();
291291
});
292292
test('does not update the last reminder event ID in DynamoDB', async () => {
293293
await updateOne(userWithCurrentEvent);
294294

295-
expect(setLastReminderEventIdMock).not.toBeCalled();
295+
expect(setLastReminderEventIdMock).not.toHaveBeenCalled();
296296
});
297297
});
298298
describe('and no upcoming meeting', () => {
@@ -302,12 +302,12 @@ describe('updateOne', () => {
302302
test('does not send a Slack reminder', async () => {
303303
await updateOne(userWithCurrentEvent);
304304

305-
expect(postMessageMock).not.toBeCalled();
305+
expect(postMessageMock).not.toHaveBeenCalled();
306306
});
307307
test('does not update the last reminder event ID in DynamoDB', async () => {
308308
await updateOne(userWithCurrentEvent);
309309

310-
expect(setLastReminderEventIdMock).not.toBeCalled();
310+
expect(setLastReminderEventIdMock).not.toHaveBeenCalled();
311311
});
312312
});
313313
});
@@ -322,27 +322,27 @@ describe('updateOne', () => {
322322
test('sends a Slack reminder', async () => {
323323
await updateOne(overrideUser);
324324

325-
expect(postMessageMock).toBeCalledWith(botToken, {
325+
expect(postMessageMock).toHaveBeenCalledWith(botToken, {
326326
text: 'You have an upcoming meeting: *anotha one* at https://my.test.url/2',
327327
channel: slackUser.id,
328328
});
329329
});
330330
test('updates the last reminder event ID in DynamoDB', async () => {
331331
await updateOne(overrideUser);
332332

333-
expect(setLastReminderEventIdMock).toBeCalledWith(userWithCurrentEvent.email, busyEvent.id);
333+
expect(setLastReminderEventIdMock).toHaveBeenCalledWith(userWithCurrentEvent.email, busyEvent.id);
334334
});
335335
});
336336
describe('and the user has been sent a reminder', () => {
337337
test('does not send a Slack reminder', async () => {
338338
await updateOne({ ...overrideUser, lastReminderEventId: busyEvent.id });
339339

340-
expect(postMessageMock).not.toBeCalled();
340+
expect(postMessageMock).not.toHaveBeenCalled();
341341
});
342342
test('does not update the last reminder event ID in DynamoDB', async () => {
343343
await updateOne({ ...overrideUser, lastReminderEventId: busyEvent.id });
344344

345-
expect(setLastReminderEventIdMock).not.toBeCalled();
345+
expect(setLastReminderEventIdMock).not.toHaveBeenCalled();
346346
});
347347
});
348348
});
@@ -354,12 +354,12 @@ describe('updateOne', () => {
354354
test('does not send a Slack reminder', async () => {
355355
await updateOne(overrideUser);
356356

357-
expect(postMessageMock).not.toBeCalled();
357+
expect(postMessageMock).not.toHaveBeenCalled();
358358
});
359359
test('does not update the last reminder event ID in DynamoDB', async () => {
360360
await updateOne(overrideUser);
361361

362-
expect(setLastReminderEventIdMock).not.toBeCalled();
362+
expect(setLastReminderEventIdMock).not.toHaveBeenCalled();
363363
});
364364
});
365365
describe('and no upcoming meeting', () => {
@@ -370,12 +370,12 @@ describe('updateOne', () => {
370370
test('does not send a Slack reminder', async () => {
371371
await updateOne(overrideUser);
372372

373-
expect(postMessageMock).not.toBeCalled();
373+
expect(postMessageMock).not.toHaveBeenCalled();
374374
});
375375
test('does not update the last reminder event ID in DynamoDB', async () => {
376376
await updateOne(overrideUser);
377377

378-
expect(setLastReminderEventIdMock).not.toBeCalled();
378+
expect(setLastReminderEventIdMock).not.toHaveBeenCalled();
379379
});
380380
});
381381
});
@@ -384,7 +384,7 @@ describe('updateOne', () => {
384384
getEventsForUserMock.mockResolvedValueOnce([oooEvent]);
385385
await updateOne({ ...userWithCurrentEvent, meetingReminderTimingOverride: 1 });
386386

387-
expect(getEventsForUserMock).toBeCalledTimes(1);
387+
expect(getEventsForUserMock).toHaveBeenCalledTimes(1);
388388
});
389389
});
390390
});

‎src/services/calendar/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export const getEventsForUser = async (
7272
const outlookEvents = await getAuthenticatedClient(email, storedToken)
7373
.api(`/users/${email}/calendarView?startDateTime=${startTime.toISOString()}&endDateTime=${endTime.toISOString()}`)
7474
.select('start,end,subject,body,showAs,location,sensitivity')
75+
.filter('isCancelled eq false')
7576
.get();
7677

7778
return outlookEvents.value.map((e: any) => {

0 commit comments

Comments
 (0)
Please sign in to comment.