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]
