JAMES-2046 Add a test for SentDent ordering for MessageSearchIndexes

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5af0d27a
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5af0d27a
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5af0d27a

Branch: refs/heads/master
Commit: 5af0d27aad7f210a8b6245e84915f683937b51b8
Parents: df4d1d8
Author: benwa <[email protected]>
Authored: Thu Aug 24 14:07:03 2017 +0700
Committer: benwa <[email protected]>
Committed: Fri Aug 25 15:31:47 2017 +0700

----------------------------------------------------------------------
 .../search/AbstractMessageSearchIndexTest.java  | 55 ++++++++++++++++++++
 1 file changed, 55 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/5af0d27a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
index 5dbfe9a..fd9d173 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java
@@ -21,6 +21,8 @@ package org.apache.james.mailbox.store.search;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.io.ByteArrayInputStream;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 
@@ -29,6 +31,7 @@ import javax.mail.Flags;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
+import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxConstants;
@@ -1143,4 +1146,56 @@ public abstract class AbstractMessageSearchIndexTest {
 
         assertThat(messageSearchIndex.search(otherSession, mailbox, 
searchQuery)).isEmpty();
     }
+
+    @Test
+    public void 
searchShouldOrderByInternalDateWhenSortOnSentDateAndNoCorrespondingHeader() 
throws Exception {
+        MailboxPath mailboxPath = new 
MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, "sentDate");
+        storeMailboxManager.createMailbox(mailboxPath, session);
+
+        MessageManager messageManager = 
storeMailboxManager.getMailbox(mailboxPath, session);
+        boolean isRecent = false;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        Date date1 = simpleDateFormat.parse("2017-08-24");
+        Date date2 = simpleDateFormat.parse("2017-08-23");
+        Date date3 = simpleDateFormat.parse("2017-08-25");
+        ComposedMessageId message1 = messageManager.appendMessage(new 
ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), date1, 
session, isRecent, new Flags());
+        ComposedMessageId message2 = messageManager.appendMessage(new 
ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), date2, 
session, isRecent, new Flags());
+        ComposedMessageId message3 = messageManager.appendMessage(new 
ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), date3, 
session, isRecent, new Flags());
+
+        await();
+
+        SearchQuery searchQuery = new SearchQuery();
+        searchQuery.setSorts(ImmutableList.of(new Sort(SortClause.SentDate)));
+
+        assertThat(messageManager.search(searchQuery, session))
+            .containsExactly(message2.getUid(),
+                message1.getUid(),
+                message3.getUid());
+    }
+
+    @Test
+    public void 
searchShouldOrderBySentDateThenInternalDateWhenSortOnSentDateAndNonHomogeneousCorrespondingHeader()
 throws Exception {
+        MailboxPath mailboxPath = new 
MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, "sentDate");
+        storeMailboxManager.createMailbox(mailboxPath, session);
+
+        MessageManager messageManager = 
storeMailboxManager.getMailbox(mailboxPath, session);
+        boolean isRecent = false;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        Date date1 = simpleDateFormat.parse("2017-08-24");
+        Date date2 = simpleDateFormat.parse("2017-08-26");
+        Date date3 = simpleDateFormat.parse("2017-08-25");
+        ComposedMessageId message1 = messageManager.appendMessage(new 
ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), date1, 
session, isRecent, new Flags());
+        ComposedMessageId message2 = messageManager.appendMessage(new 
ByteArrayInputStream("Date: Wed, 23 Aug 2017 00:00:00 +0200\r\nSubject: 
test\r\n\r\ntestmail".getBytes()), date2, session, isRecent, new Flags());
+        ComposedMessageId message3 = messageManager.appendMessage(new 
ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), date3, 
session, isRecent, new Flags());
+
+        await();
+
+        SearchQuery searchQuery = new SearchQuery();
+        searchQuery.setSorts(ImmutableList.of(new Sort(SortClause.SentDate)));
+
+        assertThat(messageManager.search(searchQuery, session))
+            .containsExactly(message2.getUid(),
+                message1.getUid(),
+                message3.getUid());
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to