@@ -450,5 +450,85 @@ class ConfigurationsTest {
450450 assertEquals(" v3/grants/$grantId /scheduling/configurations/$configId " , pathCaptor.firstValue)
451451 assertEquals(DeleteResponse ::class .java, typeCaptor.firstValue)
452452 }
453+
454+ @Test
455+ fun `creating a configuration with custom email template calls requests with the correct params` () {
456+ val adapter = JsonHelper .moshi().adapter(CreateConfigurationRequest ::class .java)
457+ val participantCalendarIds = ArrayList <String >()
458+ participantCalendarIds.add(" primary" )
459+
460+ val configurationAvailabilityParticipant = ConfigurationAvailabilityParticipant .Builder ().calendarIds(participantCalendarIds).build()
461+
462+ val configurationBookingParticipant = ConfigurationBookingParticipant .Builder ().calendarId(" primary" ).build()
463+
464+ val configurationParticipant = ConfigurationParticipant .Builder (" test@nylas.com" )
465+ .availability(configurationAvailabilityParticipant)
466+ .booking(configurationBookingParticipant)
467+ .name(" Test Participant" )
468+ .isOrganizer(true )
469+ .build()
470+
471+ val configurationAvailability = ConfigurationAvailability .Builder ().intervalMinutes(30 ).build()
472+
473+ val configurationEventBooking = ConfigurationEventBooking .Builder ().title(" Test Event Booking" ).build()
474+
475+ // Create EmailTemplate with new logo and showNylasBranding fields
476+ val emailTemplate = EmailTemplate .Builder ()
477+ .logo(" https://company.com/custom-logo.png" )
478+ .showNylasBranding(false )
479+ .bookingConfirmed(
480+ BookingConfirmedTemplate (
481+ title = " Your Meeting is Confirmed" ,
482+ body = " Thank you for booking! We look forward to meeting with you." ,
483+ ),
484+ )
485+ .build()
486+
487+ // Create scheduler settings with the email template
488+ val schedulerSettings = ConfigurationSchedulerSettings .Builder ()
489+ .emailTemplate(emailTemplate)
490+ .availableDaysInFuture(14 )
491+ .minBookingNotice(120 )
492+ .build()
493+
494+ val participants = ArrayList <ConfigurationParticipant >()
495+ participants.add(configurationParticipant)
496+
497+ val createConfigurationRequest = CreateConfigurationRequest .Builder (
498+ participants,
499+ configurationAvailability,
500+ configurationEventBooking,
501+ )
502+ .name(" Configuration with Custom Email Template" )
503+ .scheduler(schedulerSettings)
504+ .build()
505+
506+ configurations.create(grantId, createConfigurationRequest)
507+
508+ val pathCaptor = argumentCaptor<String >()
509+ val typeCaptor = argumentCaptor<Type >()
510+ val requestBodyCaptor = argumentCaptor<String >()
511+ val queryParamCaptor = argumentCaptor<ListConfigurationsQueryParams >()
512+ val overrideParamCaptor = argumentCaptor<RequestOverrides >()
513+ verify(mockNylasClient).executePost<Response <Configuration >>(
514+ pathCaptor.capture(),
515+ typeCaptor.capture(),
516+ requestBodyCaptor.capture(),
517+ queryParamCaptor.capture(),
518+ overrideParamCaptor.capture(),
519+ )
520+
521+ assertEquals(" v3/grants/$grantId /scheduling/configurations" , pathCaptor.firstValue)
522+ assertEquals(Types .newParameterizedType(Response ::class .java, Configuration ::class .java), typeCaptor.firstValue)
523+
524+ val serializedRequest = adapter.toJson(createConfigurationRequest)
525+ assertEquals(serializedRequest, requestBodyCaptor.firstValue)
526+
527+ // Verify that the JSON contains the new EmailTemplate fields
528+ assert (serializedRequest.contains(" \" logo\" :\" https://company.com/custom-logo.png\" " ))
529+ assert (serializedRequest.contains(" \" show_nylas_branding\" :false" ))
530+ assert (serializedRequest.contains(" \" booking_confirmed\" " ))
531+ assert (serializedRequest.contains(" Your Meeting is Confirmed" ))
532+ }
453533 }
454534}
0 commit comments