diff --git a/src/main/java/com/resend/services/batch/Batch.java b/src/main/java/com/resend/services/batch/Batch.java index cdcf2df..b2c1457 100644 --- a/src/main/java/com/resend/services/batch/Batch.java +++ b/src/main/java/com/resend/services/batch/Batch.java @@ -33,6 +33,8 @@ public Batch(final String apiKey) { /** * Sends up to 100 batch emails. * + *

Each email supports standard send options plus {@code tags}. + * * @param emails batch emails to send. * @return The emails ids. * @throws ResendException If an error occurs while sending batch emails. @@ -54,6 +56,8 @@ public CreateBatchEmailsResponse send(List emails) throws Re /** * Sends up to 100 batch emails. * + *

Each email supports standard send options plus {@code tags}. + * * @param emails batch emails to send. * @param requestOptions The options with additional headers. * @return The emails ids. diff --git a/src/test/java/com/resend/services/batch/BatchTest.java b/src/test/java/com/resend/services/batch/BatchTest.java index 0ae1c22..3b9c147 100644 --- a/src/test/java/com/resend/services/batch/BatchTest.java +++ b/src/test/java/com/resend/services/batch/BatchTest.java @@ -12,6 +12,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -50,6 +51,21 @@ public void tearDown() throws Exception { mocks.close(); } + @Test + public void testCreateBatchEmails_SerializesTags() throws ResendException { + List batchEmailsRequest = EmailsUtil.createBatchEmailOptions(); + ArgumentCaptor payloadCaptor = ArgumentCaptor.forClass(String.class); + AbstractHttpResponse httpResponse = new AbstractHttpResponse<>(200, BATCH_RESPONSE_JSON, true); + + when(httpClient.perform(eq("/emails/batch"), anyString(), eq(HttpMethod.POST), payloadCaptor.capture(), any(MediaType.class))) + .thenReturn(httpResponse); + + batch.send(batchEmailsRequest); + + String payload = payloadCaptor.getValue(); + assertTrue(payload.contains("\"tags\":[{\"name\":\"tagName\",\"value\":\"tagValue\"}]")); + } + @Test public void testCreateBatchEmails_Success() throws ResendException { List batchEmailsRequest = EmailsUtil.createBatchEmailOptions(); diff --git a/src/test/java/com/resend/services/util/EmailsUtil.java b/src/test/java/com/resend/services/util/EmailsUtil.java index efaadc1..9e8e432 100644 --- a/src/test/java/com/resend/services/util/EmailsUtil.java +++ b/src/test/java/com/resend/services/util/EmailsUtil.java @@ -99,8 +99,21 @@ public static CancelEmailResponse cancelEmailResponse() { return new CancelEmailResponse("123", "emails"); } + public static CreateEmailOptions createBatchEmailOption() { + return CreateEmailOptions.builder() + .from("Acme ") + .to(Arrays.asList("example@resend.dev")) + .cc(Arrays.asList("example@resend.dev")) + .bcc(Arrays.asList("example@resend.dev")) + .replyTo(Arrays.asList("example@resend.dev", "example@resend.dev")) + .text("Hello, this is a batch email.") + .subject("Test batch email with tags") + .tags(Arrays.asList(createTag())) + .build(); + } + public static List createBatchEmailOptions() { - return Arrays.asList(createEmailOptions(), createEmailOptions()); + return Arrays.asList(createBatchEmailOption(), createBatchEmailOption()); } public static CreateBatchEmailsResponse createBatchEmailsResponse() {