@@ -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