You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rc...@apache.org on 2019/11/29 02:00:29 UTC

[james-project] 03/06: JAMES-2989 Replace plain string by strong typing preview

This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 06fdadfbcdcb1ff59ab431637706aa4bf28919be
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Tue Nov 26 11:24:09 2019 +0700

    JAMES-2989 Replace plain string by strong typing preview
---
 .../cucumber/GetMessagesMethodStepdefs.java        |  6 +--
 .../jmap/draft/json/ParsingWritingObjects.java     |  3 +-
 .../jmap/draft/methods/GetMessagesMethodTest.java  |  4 +-
 .../jmap/draft/methods/MessageSenderTest.java      |  5 +--
 .../methods/SetMessagesCreationProcessorTest.java  |  5 +--
 .../jmap/draft/model/SetMessagesResponseTest.java  |  7 +++-
 .../model/message/view/MessageFullViewTest.java    | 43 ++++++++--------------
 7 files changed, 29 insertions(+), 44 deletions(-)

diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
index 5b3acc3..d694e3e 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/cucumber/GetMessagesMethodStepdefs.java
@@ -43,15 +43,14 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.text.StringEscapeUtils;
 import org.apache.james.core.Username;
 import org.apache.james.jmap.TestingConstants;
+import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.jmap.draft.methods.integration.cucumber.util.TableRow;
-import org.apache.james.jmap.draft.model.MessagePreviewGenerator;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.util.ClassLoaderUtils;
-import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.utils.SMTPMessageSender;
 import org.javatuples.Pair;
 
@@ -76,6 +75,7 @@ public class GetMessagesMethodStepdefs {
     private static final String ATTACHMENTS = FIRST_MESSAGE + ".attachments";
     private static final String FIRST_ATTACHMENT = ATTACHMENTS + "[0]";
     private static final String SECOND_ATTACHMENT = ATTACHMENTS + "[1]";
+    private static final int PREVIEW_LENGTH = 256;
 
 
     private final MainStepdefs mainStepdefs;
@@ -659,7 +659,7 @@ public class GetMessagesMethodStepdefs {
     @Then("^the preview should not contain consecutive spaces or blank characters$")
     public void assertPreviewShouldBeNormalized() {
         String actual = httpClient.jsonPath.read(FIRST_MESSAGE + ".preview");
-        assertThat(actual).hasSize(MessagePreviewGenerator.MAX_PREVIEW_LENGTH)
+        assertThat(actual).hasSize(PREVIEW_LENGTH)
             .doesNotMatch("  ")
             .doesNotContain(StringUtils.CR)
             .doesNotContain(StringUtils.LF);
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/json/ParsingWritingObjects.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/json/ParsingWritingObjects.java
index 5baa6b4..0f355ff 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/json/ParsingWritingObjects.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/json/ParsingWritingObjects.java
@@ -24,6 +24,7 @@ import java.util.Optional;
 
 import javax.mail.Flags;
 
+import org.apache.james.jmap.api.preview.Preview;
 import org.apache.james.jmap.draft.model.BlobId;
 import org.apache.james.jmap.draft.model.Emailer;
 import org.apache.james.jmap.draft.model.Keyword;
@@ -66,7 +67,7 @@ public interface ParsingWritingObjects {
         String SUBJECT = "mySubject";
         Instant DATE = Instant.parse("2014-10-30T14:12:00Z");
         int SIZE = 1024;
-        String PREVIEW = "myPreview";
+        Preview PREVIEW = Preview.from("myPreview");
         Optional<String> TEXT_BODY = Optional.of("myTextBody");
         Optional<String> HTML_BODY = Optional.of("<h1>myHtmlBody</h1>");
     }
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
index 420761e..833c8ac 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
@@ -40,7 +40,6 @@ import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.core.Username;
 import org.apache.james.jmap.draft.model.GetMessagesRequest;
 import org.apache.james.jmap.draft.model.GetMessagesResponse;
-import org.apache.james.jmap.draft.model.MessagePreviewGenerator;
 import org.apache.james.jmap.draft.model.MessageProperties.MessageProperty;
 import org.apache.james.jmap.draft.model.MethodCallId;
 import org.apache.james.jmap.draft.model.message.view.MessageFullView;
@@ -107,13 +106,12 @@ public class GetMessagesMethodTest {
     public void setup() throws Exception {
         methodCallId = MethodCallId.of("#0");
         HtmlTextExtractor htmlTextExtractor = new JsoupHtmlTextExtractor();
-        MessagePreviewGenerator messagePreview = new MessagePreviewGenerator();
         MessageContentExtractor messageContentExtractor = new MessageContentExtractor();
         BlobManager blobManager = mock(BlobManager.class);
         when(blobManager.toBlobId(any(MessageId.class))).thenReturn(BlobId.fromString("fake"));
         messageMetadataViewFactory = spy(new MessageMetadataViewFactory(blobManager));
         MetaMessageViewFactory metaMessageViewFactory = new MetaMessageViewFactory(
-            new MessageFullViewFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor),
+            new MessageFullViewFactory(blobManager, messageContentExtractor, htmlTextExtractor),
             new MessageHeaderViewFactory(blobManager),
             messageMetadataViewFactory);
 
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java
index 4316a7f..fe2615d 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java
@@ -36,7 +36,6 @@ import org.apache.james.core.MaybeSender;
 import org.apache.james.jmap.draft.model.EnvelopeUtils;
 import org.apache.james.jmap.draft.model.Keyword;
 import org.apache.james.jmap.draft.model.Keywords;
-import org.apache.james.jmap.draft.model.MessagePreviewGenerator;
 import org.apache.james.jmap.draft.model.message.view.MessageFullView;
 import org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory;
 import org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory.MetaDataWithContent;
@@ -84,14 +83,12 @@ class MessageSenderTest {
             .messageId(TestMessageId.of(2))
             .build();
 
-        MessagePreviewGenerator messagePreview = mock(MessagePreviewGenerator.class);
         HtmlTextExtractor htmlTextExtractor = mock(HtmlTextExtractor.class);
-        when(messagePreview.compute(any())).thenReturn("text preview");
 
         MessageContentExtractor messageContentExtractor = new MessageContentExtractor();
         BlobManager blobManager = mock(BlobManager.class);
         when(blobManager.toBlobId(any(MessageId.class))).thenReturn(BlobId.fromString("fake"));
-        MessageFullViewFactory messageFullViewFactory = new MessageFullViewFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
+        MessageFullViewFactory messageFullViewFactory = new MessageFullViewFactory(blobManager, messageContentExtractor, htmlTextExtractor);
         jmapMessage = messageFullViewFactory.fromMetaDataWithContent(message);
         envelope = EnvelopeUtils.fromMessage(jmapMessage);
     }
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
index 7ffd423..4bf45dc 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
@@ -37,7 +37,6 @@ import org.apache.james.jmap.draft.exceptions.MailboxNotOwnedException;
 import org.apache.james.jmap.draft.model.CreationMessage;
 import org.apache.james.jmap.draft.model.CreationMessage.DraftEmailer;
 import org.apache.james.jmap.draft.model.CreationMessageId;
-import org.apache.james.jmap.draft.model.MessagePreviewGenerator;
 import org.apache.james.jmap.draft.model.SetMessagesRequest;
 import org.apache.james.jmap.draft.model.SetMessagesResponse;
 import org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory;
@@ -122,12 +121,10 @@ public class SetMessagesCreationProcessorTest {
     @Before
     public void setUp() throws MailboxException {
         HtmlTextExtractor htmlTextExtractor = mock(HtmlTextExtractor.class);
-        MessagePreviewGenerator messagePreview = mock(MessagePreviewGenerator.class);
         MessageContentExtractor messageContentExtractor = new MessageContentExtractor();
-        when(messagePreview.compute(any())).thenReturn("text preview");
         BlobManager blobManager = mock(BlobManager.class);
         when(blobManager.toBlobId(any(MessageId.class))).thenReturn(org.apache.james.mailbox.model.BlobId.fromString("fake"));
-        messageFullViewFactory = new MessageFullViewFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
+        messageFullViewFactory = new MessageFullViewFactory(blobManager, messageContentExtractor, htmlTextExtractor);
         mockedMailSpool = mock(MailSpool.class);
         mockedAttachmentManager = mock(AttachmentManager.class);
         mockedMailboxManager = mock(MailboxManager.class);
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/SetMessagesResponseTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/SetMessagesResponseTest.java
index 9b89f94..94c678b 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/SetMessagesResponseTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/SetMessagesResponseTest.java
@@ -25,6 +25,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import java.time.Instant;
 
 import org.apache.commons.lang3.NotImplementedException;
+import org.apache.james.jmap.api.preview.Preview;
 import org.apache.james.jmap.draft.model.message.view.MessageFullView;
 import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.model.MessageId;
@@ -36,6 +37,8 @@ import com.google.common.collect.ImmutableMap;
 
 public class SetMessagesResponseTest {
 
+    private static final Preview PREVIEW = Preview.from("preview");
+
     @Test
     public void builderShouldThrowWhenAccountIdIsGiven() {
         assertThatThrownBy(() -> SetMessagesResponse.builder().accountId(""))
@@ -67,7 +70,7 @@ public class SetMessagesResponseTest {
                 .subject("subject")
                 .size(123)
                 .date(currentDate)
-                .preview("preview")
+                .preview(PREVIEW)
                 .build());
         ImmutableList<MessageId> updated = ImmutableList.of(TestMessageId.of(2));
         ImmutableList<MessageId> destroyed = ImmutableList.of(TestMessageId.of(3));
@@ -121,7 +124,7 @@ public class SetMessagesResponseTest {
                 .subject("subject")
                 .size(0)
                 .date(Instant.now())
-                .preview("preview")
+                .preview(PREVIEW)
                 .build());
     }
 
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewTest.java
index 1b5b63b..ff503b6 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewTest.java
@@ -24,12 +24,14 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import java.time.Instant;
 import java.util.Optional;
 
+import org.apache.james.jmap.api.preview.Preview;
 import org.apache.james.jmap.draft.model.Attachment;
 import org.apache.james.jmap.draft.model.BlobId;
 import org.apache.james.jmap.draft.model.Emailer;
 import org.apache.james.jmap.draft.model.Keyword;
 import org.apache.james.jmap.draft.model.Keywords;
 import org.apache.james.jmap.draft.model.Number;
+import org.apache.james.jmap.draft.model.PreviewDTO;
 import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.model.TestMessageId;
 import org.junit.jupiter.api.Test;
@@ -39,6 +41,9 @@ import com.google.common.collect.ImmutableMap;
 
 class MessageFullViewTest {
 
+    private static final Preview PREVIEW = Preview.from("preview");
+    private static final PreviewDTO PREVIEW_DTO = PreviewDTO.from(PREVIEW);
+
     @Test
     void buildShouldThrowWhenIdIsNull() {
         assertThatThrownBy(() -> MessageFullView.builder().build())
@@ -153,22 +158,6 @@ class MessageFullViewTest {
     }
 
     @Test
-    void buildShouldThrowWhenPreviewIsEmpty() {
-        assertThatThrownBy(() -> MessageFullView.builder()
-                .id(TestMessageId.of(1))
-                .blobId(BlobId.of("blobId"))
-                .threadId("threadId")
-                .fluentMailboxIds()
-                .headers(ImmutableMap.of())
-                .subject("subject")
-                .size(123)
-                .date(Instant.now())
-                .preview("")
-                .build())
-            .isInstanceOf(IllegalStateException.class);
-    }
-
-    @Test
     void buildShouldWorkWhenMandatoryFieldsArePresent() {
         Instant currentDate = Instant.now();
         Number messageSize = Number.fromLong(123);
@@ -176,7 +165,7 @@ class MessageFullViewTest {
         MessageFullView expected = new MessageFullView(TestMessageId.of(1), BlobId.of("blobId"), "threadId",
             ImmutableList.of(InMemoryId.of(456)), Optional.empty(), false, ImmutableMap.of("key", "value"),
             Optional.empty(), ImmutableList.of(), ImmutableList.of(), ImmutableList.of(), ImmutableList.of(),
-            "subject", currentDate, messageSize, "preview", Optional.empty(), Optional.empty(),
+            "subject", currentDate, messageSize, PREVIEW_DTO, Optional.empty(), Optional.empty(),
             ImmutableList.of(), ImmutableMap.of(), Keywords.DEFAULT_VALUE);
 
         MessageFullView tested = MessageFullView.builder()
@@ -188,7 +177,7 @@ class MessageFullViewTest {
                 .subject("subject")
                 .size(123)
                 .date(currentDate)
-                .preview("preview")
+                .preview(PREVIEW)
                 .build();
         assertThat(tested).isEqualToComparingFieldByField(expected);
     }
@@ -215,7 +204,7 @@ class MessageFullViewTest {
                 .subject("subject")
                 .size(123)
                 .date(Instant.now())
-                .preview("preview")
+                .preview(PREVIEW)
                 .attachments(attachments)
                 .attachedMessages(attachedMessages)
                 .build())
@@ -261,7 +250,7 @@ class MessageFullViewTest {
             "subject",
             currentDate,
             messageSize,
-            "preview",
+            PREVIEW_DTO,
             Optional.of("textBody"),
             Optional.of("htmlBody"),
             attachments,
@@ -284,7 +273,7 @@ class MessageFullViewTest {
             .subject("subject")
             .date(currentDate)
             .size(123)
-            .preview("preview")
+            .preview(PREVIEW)
             .textBody(Optional.of("textBody"))
             .htmlBody(Optional.of("htmlBody"))
             .attachments(attachments)
@@ -305,7 +294,7 @@ class MessageFullViewTest {
                 .subject("subject")
                 .size(1)
                 .date(Instant.now())
-                .preview("preview")
+                .preview(PREVIEW)
                 .attachedMessages(ImmutableMap.of(BlobId.of("key"), SubMessage.builder()
                         .headers(ImmutableMap.of("key", "value"))
                         .subject("subject")
@@ -326,7 +315,7 @@ class MessageFullViewTest {
             .subject("subject")
             .size(1)
             .date(Instant.now())
-            .preview("preview")
+            .preview(PREVIEW)
             .attachments(ImmutableList.of(Attachment.builder()
                     .blobId(BlobId.of("key"))
                     .size(1)
@@ -351,7 +340,7 @@ class MessageFullViewTest {
             .subject("subject")
             .size(1)
             .date(Instant.now())
-            .preview("preview")
+            .preview(PREVIEW)
             .attachments(ImmutableList.of())
             .build();
 
@@ -369,7 +358,7 @@ class MessageFullViewTest {
             .subject("subject")
             .size(1)
             .date(Instant.now())
-            .preview("preview")
+            .preview(PREVIEW)
             .attachments(ImmutableList.of(
                     Attachment.builder()
                         .blobId(BlobId.of("key"))
@@ -401,7 +390,7 @@ class MessageFullViewTest {
             .subject("subject")
             .size(1)
             .date(Instant.now())
-            .preview("preview")
+            .preview(PREVIEW)
             .attachments(ImmutableList.of(
                     Attachment.builder()
                         .blobId(BlobId.of("key"))
@@ -439,7 +428,7 @@ class MessageFullViewTest {
             .subject("subject")
             .size(1)
             .date(Instant.now())
-            .preview("preview")
+            .preview(PREVIEW)
             .attachments(ImmutableList.of(
                     Attachment.builder()
                         .blobId(BlobId.of("key"))


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org