Skip to content

Commit 0544f20

Browse files
committed
added more message creation tests and helper for setting up from address with full name
1 parent 7219a9e commit 0544f20

2 files changed

Lines changed: 61 additions & 5 deletions

File tree

src/main/java/com/wildbit/java/postmark/client/data/model/message/BaseMessage.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ public void setFrom(String from) {
7474
this.from = from;
7575
}
7676

77+
public void setFrom(String name, String address) {
78+
this.from = convertRecipient(name, address);
79+
}
80+
7781
public String getTo() {
7882
return to;
7983
}
@@ -336,28 +340,31 @@ private String readFileContentType(String path) {
336340
}
337341

338342
/**
339-
* This helper method allows setting list of recipients which will contain full name next to email address.
343+
* Converts list of recipients which contains full name next to email address to a string.
340344
* By passing something like Map of: key -> John Smith, value -> john@example.com
341345
* you would be able to send email to recipient John Smith ("John Smith" <john@example.com>)
342346
*
343347
* @param recipients recipient Map, with Full Name, Email address pairs.
344348
*/
345349
private String convertRecipients(Map<String,String> recipients) {
346-
347350
StringBuilder recipientsString = new StringBuilder();
348351

349352
Iterator<Map.Entry<String, String>> entries = recipients.entrySet().iterator();
350353
while (entries.hasNext()) {
351354
Map.Entry<String, String> entry = entries.next();
352-
recipientsString.append("\"").append(entry.getKey()).append("\"").append("<").append(entry.getValue()).append(">");
355+
recipientsString.append(convertRecipient(entry.getKey(), entry.getValue()));
353356
if (entries.hasNext()) { recipientsString.append(","); }
354357
}
355358

356359
return recipientsString.toString();
357360
}
358361

362+
/**
363+
* Converts list of recipients to string list like "john@example.com,smith@example.com".
364+
*
365+
* @param recipients recipient List.
366+
*/
359367
private String convertRecipients(List<String> recipients) {
360-
361368
StringBuilder recipientsString = new StringBuilder();
362369

363370
Iterator<String> entries = recipients.iterator();
@@ -370,4 +377,9 @@ private String convertRecipients(List<String> recipients) {
370377
return recipientsString.toString();
371378
}
372379

380+
private String convertRecipient(String name, String address) {
381+
StringBuilder recipientsString = new StringBuilder();
382+
return recipientsString.append("\"").append(name).append("\"")
383+
.append("<").append(address).append(">").toString();
384+
}
373385
}

src/test/java/unit/data/MessageTest.java

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,33 @@ void simpleMessageWithHeaders() throws IOException{
6565

6666
}
6767

68+
@Test
69+
void singleMessageFromRecipient() {
70+
Message message = new Message();
71+
72+
message.setFrom("igor@example.com");
73+
assertEquals(message.getFrom(), "igor@example.com");
74+
}
75+
76+
@Test
77+
void singleMessageFromRecipientFullName() {
78+
Message message = new Message();
79+
80+
message.setFrom("John Smith","igor@example.com");
81+
assertEquals(message.getFrom(), "\"John Smith\"<igor@example.com>");
82+
}
83+
84+
@Test
85+
void singleMessageToRecipient() {
86+
Message message = new Message();
87+
88+
ArrayList<String> recipients = new ArrayList<>();
89+
recipients.add("igor@example.com");
90+
91+
message.setTo(recipients);
92+
assertEquals(message.getTo(), "\"igor@example.com\"");
93+
}
94+
6895
@Test
6996
void simpleMessageToRecipients() throws IOException {
7097

@@ -167,14 +194,31 @@ void addAttachment() throws IOException {
167194
assertEquals(attachment.get("ContentType"), "application/pdf");
168195
assertEquals(attachment.get("Name"), new File(getDefaultFilePath()).getName());
169196
assertNotNull(attachment.get("Content"));
197+
assertEquals(attachment.get("ContentId"), null);
198+
}
199+
200+
@Test
201+
void addAttachmentWithContentId() throws IOException {
202+
String contentId = "test-id";
203+
Message message = new Message("from@example.com","to@example.com","Hello world", "Hello world");
204+
message.addAttachment(getDefaultFilePath(), contentId);
205+
206+
HashMap<String,String> attachment = (HashMap<String, String>) message.getAttachments().get(0);
207+
assertEquals(attachment.get("ContentType"), "application/pdf");
208+
assertEquals(attachment.get("Name"), new File(getDefaultFilePath()).getName());
209+
assertNotNull(attachment.get("Content"));
210+
assertEquals(attachment.get("ContentId"), contentId);
170211
}
171212

172213
@Test
173214
void addMultipleAttachments() throws IOException {
215+
String contentId = "test-id";
174216
Message message = new Message("from@example.com","to@example.com","Hello world", "Hello world");
175-
message.addAttachment(getDefaultFilePath());
217+
message.addAttachment(getDefaultFilePath(), contentId);
176218
message.addAttachment(getDefaultFilePath());
177219
assertEquals(message.getAttachments().size(), 2);
220+
assertEquals(message.getAttachments().get(0).get("ContentId"), contentId);
221+
assertEquals(message.getAttachments().get(1).get("ContentId"), null);
178222
}
179223

180224
}

0 commit comments

Comments
 (0)