Skip to content

Commit 30c5d60

Browse files
committed
Fixed issue where reminders were not being updated correctly when updating an event
1 parent 1aba5c8 commit 30c5d60

File tree

3 files changed

+71
-17
lines changed

3 files changed

+71
-17
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
### Unreleased
44
* Added pagination support for folders
5+
* Fixed issue where reminders were not being updated correctly when updating an event
56

67
### [2.5.2] - Released 2024-12-02
78
* Added support for `skypeForConsumer` as conferencing provider

src/main/kotlin/com/nylas/models/UpdateEventRequest.kt

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -495,23 +495,6 @@ data class UpdateEventRequest(
495495
}
496496
}
497497

498-
/**
499-
* Class representing the reminders field of an event.
500-
*/
501-
data class Reminders(
502-
/**
503-
* Whether to use the default reminders for the calendar.
504-
* When true, uses the default reminder settings for the calendar
505-
*/
506-
@Json(name = "use_default")
507-
val useDefault: Boolean? = null,
508-
/**
509-
* A list of reminders for the event if useDefault is set to false.
510-
*/
511-
@Json(name = "override")
512-
val override: List<ReminderOverride>? = null,
513-
)
514-
515498
/**
516499
* Builder for [UpdateEventRequest].
517500
*/

src/test/kotlin/com/nylas/resources/EventsTests.kt

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,76 @@ class EventsTests {
345345
assertEquals(adapter.toJson(updateEventRequest), requestBodyCaptor.firstValue)
346346
}
347347

348+
@Test
349+
fun `updating event reminders calls requests with the correct params`() {
350+
val eventId = "event-123"
351+
val updateEventRequest =
352+
UpdateEventRequest(
353+
reminders = Reminders(
354+
useDefault = false,
355+
overrides = listOf(
356+
ReminderOverride(
357+
reminderMinutes = 15,
358+
reminderMethod = ReminderMethod.EMAIL,
359+
),
360+
ReminderOverride(
361+
reminderMinutes = 30,
362+
reminderMethod = ReminderMethod.POPUP,
363+
),
364+
),
365+
),
366+
)
367+
val updateEventQueryParams =
368+
UpdateEventQueryParams(
369+
calendarId = "calendar-id",
370+
notifyParticipants = true,
371+
)
372+
373+
events.update(grantId, eventId, updateEventRequest, updateEventQueryParams)
374+
val pathCaptor = argumentCaptor<String>()
375+
val typeCaptor = argumentCaptor<Type>()
376+
val requestBodyCaptor = argumentCaptor<String>()
377+
val queryParamCaptor = argumentCaptor<UpdateEventQueryParams>()
378+
val overrideParamCaptor = argumentCaptor<RequestOverrides>()
379+
verify(mockNylasClient).executePut<ListResponse<Event>>(
380+
pathCaptor.capture(),
381+
typeCaptor.capture(),
382+
requestBodyCaptor.capture(),
383+
queryParamCaptor.capture(),
384+
overrideParamCaptor.capture(),
385+
)
386+
387+
assertEquals("v3/grants/$grantId/events/$eventId", pathCaptor.firstValue)
388+
assertEquals(Types.newParameterizedType(Response::class.java, Event::class.java), typeCaptor.firstValue)
389+
390+
// Parse both expected and actual JSON into Maps to compare structure while preserving field names
391+
val jsonAdapter = JsonHelper.moshi().adapter(Map::class.java)
392+
val actualJson = jsonAdapter.fromJson(requestBodyCaptor.firstValue)!!
393+
394+
val expectedJson = mapOf(
395+
"reminders" to mapOf(
396+
"use_default" to false,
397+
"overrides" to listOf(
398+
mapOf(
399+
"reminder_minutes" to 15.0,
400+
"reminder_method" to "email",
401+
),
402+
mapOf(
403+
"reminder_minutes" to 30.0,
404+
"reminder_method" to "popup",
405+
),
406+
),
407+
),
408+
)
409+
410+
assertEquals(expectedJson, actualJson)
411+
412+
// Also verify that the request can be correctly deserialized
413+
val adapter = JsonHelper.moshi().adapter(UpdateEventRequest::class.java)
414+
val actualRequest = adapter.fromJson(requestBodyCaptor.firstValue)
415+
assertEquals(updateEventRequest, actualRequest)
416+
}
417+
348418
@Test
349419
fun `destroying a event calls requests with the correct params`() {
350420
val eventId = "event-123"

0 commit comments

Comments
 (0)