Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/main/java/com/resend/services/batch/Batch.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ public Batch(final String apiKey) {
/**
* Sends up to 100 batch emails.
*
* <p>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.
Expand All @@ -54,6 +56,8 @@ public CreateBatchEmailsResponse send(List<CreateEmailOptions> emails) throws Re
/**
* Sends up to 100 batch emails.
*
* <p>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.
Expand Down
16 changes: 16 additions & 0 deletions src/test/java/com/resend/services/batch/BatchTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -50,6 +51,21 @@ public void tearDown() throws Exception {
mocks.close();
}

@Test
public void testCreateBatchEmails_SerializesTags() throws ResendException {
List<CreateEmailOptions> batchEmailsRequest = EmailsUtil.createBatchEmailOptions();
ArgumentCaptor<String> payloadCaptor = ArgumentCaptor.forClass(String.class);
AbstractHttpResponse<String> 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\"}]"));
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
}

@Test
public void testCreateBatchEmails_Success() throws ResendException {
List<CreateEmailOptions> batchEmailsRequest = EmailsUtil.createBatchEmailOptions();
Expand Down
15 changes: 14 additions & 1 deletion src/test/java/com/resend/services/util/EmailsUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,21 @@ public static CancelEmailResponse cancelEmailResponse() {
return new CancelEmailResponse("123", "emails");
}

public static CreateEmailOptions createBatchEmailOption() {
return CreateEmailOptions.builder()
.from("Acme <onboarding@resend.dev>")
.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<CreateEmailOptions> createBatchEmailOptions() {
return Arrays.asList(createEmailOptions(), createEmailOptions());
return Arrays.asList(createBatchEmailOption(), createBatchEmailOption());
}

public static CreateBatchEmailsResponse createBatchEmailsResponse() {
Expand Down
Loading