Hi,

You will find as an attachement a patch containing failing test ( issue
spotted in MAILBOX-207 ).

I will provide an other patch solving the issue as soon as possible.

Sincerly yours,

Benoit Tellier
diff -uNr james-mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java james-mailbox-new/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
--- james-mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java	2014-12-16 17:49:32.163262333 +0100
+++ james-mailbox-new/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java	2014-12-19 18:04:08.105500594 +0100
@@ -19,9 +19,12 @@
 package org.apache.james.mailbox.cassandra.mail;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Random;
 import java.util.UUID;
@@ -32,8 +35,11 @@
 
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.cassandra.CassandraClusterSingleton;
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
@@ -48,7 +54,7 @@
 
 /**
  * Unit tests for CassandraMessageMapper.
- * 
+ *
  */
 public class CassandraMessageMapperTest {
 
@@ -124,7 +130,7 @@
 
     /**
      * Test an ordered scenario with count, find, add... methods.
-     * 
+     *
      * @throws Exception
      */
     @Test
@@ -136,6 +142,69 @@
         testAdd();
         testGetLastUid();
         testGetHighestModSeq();
+        testMessageUpdateReplace();
+        testMessageUpdateAddition();
+    }
+
+    /**
+     * Test message flag replacement
+     */
+    private void testMessageUpdateReplace() throws MailboxException {
+        LOG.info("message update : replace flags");
+        Flags flags = new Flags();
+        flags.add(Flags.Flag.ANSWERED);
+        flags.add(Flags.Flag.DRAFT);
+        messageMapper.updateFlags(MBOXES.get(1), flags, true, true, MessageRange.all());
+        Iterator<Message<UUID>> messageIterator = messageMapper.findInMailbox(MBOXES.get(1), MessageRange.all(), MessageMapper.FetchType.Full, 100);
+        while(messageIterator.hasNext()) {
+            Message<UUID> message = messageIterator.next();
+            assertTrue(message.isAnswered());
+            assertTrue(message.isDraft());
+            assertFalse(message.isDeleted());
+            assertFalse(message.isRecent());
+            assertFalse(message.isSeen());
+            assertFalse(message.isFlagged());
+        }
+    }
+
+    /**
+     * Test message flag set to true
+     */
+    private void testMessageUpdateAddition() throws MailboxException {
+        LOG.info("message update : flag addition");
+        Flags flags = new Flags();
+        flags.add(Flags.Flag.FLAGGED);
+        messageMapper.updateFlags(MBOXES.get(1), flags, true, false, MessageRange.all());
+        Iterator<Message<UUID>> messageIterator = messageMapper.findInMailbox(MBOXES.get(1), MessageRange.all(), MessageMapper.FetchType.Full, 100);
+        while(messageIterator.hasNext()) {
+            Message<UUID> message = messageIterator.next();
+            assertTrue(message.isAnswered());
+            assertTrue(message.isDraft());
+            assertFalse(message.isDeleted());
+            assertFalse(message.isRecent());
+            assertFalse(message.isSeen());
+            assertTrue(message.isFlagged());
+        }
+    }
+
+    /**
+     * Test message flag removal
+     */
+    private void testMessageUpdateRemove() throws MailboxException {
+        LOG.info("message update : flag removal");
+        Flags flags = new Flags();
+        flags.add(Flags.Flag.ANSWERED);
+        messageMapper.updateFlags(MBOXES.get(1), flags, false, false, MessageRange.all());
+        Iterator<Message<UUID>> messageIterator = messageMapper.findInMailbox(MBOXES.get(1), MessageRange.all(), MessageMapper.FetchType.Full, 100);
+        while(messageIterator.hasNext()) {
+            Message<UUID> message = messageIterator.next();
+            assertFalse(message.isAnswered());
+            assertTrue(message.isDraft());
+            assertFalse(message.isDeleted());
+            assertFalse(message.isRecent());
+            assertFalse(message.isSeen());
+            assertTrue(message.isFlagged());
+        }
     }
 
     /**

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

Reply via email to