Skip to content

Commit 1a64fc8

Browse files
committed
Include test using the new fields
1 parent a6ca51b commit 1a64fc8

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

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

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)