[prev in list] [next in list] [prev in thread] [next in thread] 

List:       james-dev
Subject:    [1/6] james-project git commit: JAMES-1947 Add testing for applicable flag on MessageMapper
From:       btellier () apache ! org
Date:       2017-02-28 3:38:12
Message-ID: 554b6ef0cb364638a67fe6d4b9af7d5c () git ! apache ! org
[Download RAW message or body]

Repository: james-project
Updated Branches:
  refs/heads/master 44728d3fc -> 2d7b78a05


JAMES-1947 Add testing for applicable flag on MessageMapper


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

Branch: refs/heads/master
Commit: c7f3e371db3fba28c292a8d011e59835895dabf2
Parents: f7321c9
Author: Quynh Nguyen <qnguyen@linagora.com>
Authored: Thu Feb 23 16:01:35 2017 +0700
Committer: benwa <btellier@linagora.com>
Committed: Tue Feb 28 10:37:10 2017 +0700

----------------------------------------------------------------------
 .../store/mail/model/MapperProvider.java        |   3 +-
 .../store/mail/model/MessageMapperTest.java     | 176 +++++++++++++++++++
 2 files changed, 178 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c7f3e371/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
                
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java \
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
 index e8fb38d..d33d4f8 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
                
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
 @@ -39,7 +39,8 @@ public interface MapperProvider {
         ANNOTATION,
         MOVE,
         UNIQUE_MESSAGE_ID,
-        THREAD_SAFE_FLAGS_UPDATE
+        THREAD_SAFE_FLAGS_UPDATE,
+        INCREMENTAL_APPLICABLE_FLAGS
     }
 
     List<Capabilities> getSupportedCapabilities();

http://git-wip-us.apache.org/repos/asf/james-project/blob/c7f3e371/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
                
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java \
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
 index 61d1d5d..8e8e494 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
                
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
 @@ -31,6 +31,7 @@ import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import javax.mail.Flags;
+import javax.mail.Flags.Flag;
 import javax.mail.util.SharedByteArrayInputStream;
 
 import org.apache.james.mailbox.FlagsBuilder;
@@ -46,6 +47,7 @@ import org.apache.james.mailbox.store.FlagsUpdateCalculator;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
+import org.apache.james.mailbox.store.mail.model.MapperProvider.Capabilities;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
@@ -70,6 +72,8 @@ public class MessageMapperTest<T extends MapperProvider> {
     public static final int UID_VALIDITY = 42;
     public static final String USER_FLAG = "userFlag";
 
+    public static final String CUSTOMS_USER_FLAGS_VALUE = "CustomsFlags";
+
     private IProducer<T> producer;
     private MapperProvider mapperProvider;
     private MessageMapper messageMapper;
@@ -820,6 +824,178 @@ public class MessageMapperTest<T extends MapperProvider> {
         assertThat(retrieveMessageFromStorage(message)).hasFlags(new \
Flags(USER_FLAG));  }
 
+    @ContractTest
+    public void getApplicableFlagShouldUnionAllMessageFlags() throws Exception {
+        message1.setFlags(new Flags(Flag.ANSWERED));
+        message2.setFlags(new Flags(Flag.DELETED));
+
+        saveMessages();
+
+        assertThat(messageMapper.getApplicableFlag(benwaInboxMailbox))
+            .isEqualTo(new FlagsBuilder()
+                .add(Flag.ANSWERED, Flag.DELETED)
+                .build());
+    }
+
+    @ContractTest
+    public void getApplicableFlagShouldUnionAllMessageFlagsExceptRecentAndUser() \
throws Exception { +        message1.setFlags(new Flags(Flag.ANSWERED));
+        message2.setFlags(new Flags(Flag.DELETED));
+
+        Flags recentAndUser = new Flags(Flag.RECENT);
+        recentAndUser.add(Flag.USER);
+        recentAndUser.add(CUSTOMS_USER_FLAGS_VALUE);
+        message3.setFlags(recentAndUser);
+
+        saveMessages();
+
+        assertThat(messageMapper.getApplicableFlag(benwaInboxMailbox))
+            .isEqualTo(new FlagsBuilder()
+                .add(Flag.ANSWERED, Flag.DELETED)
+                .add(CUSTOMS_USER_FLAGS_VALUE)
+                .build());
+    }
+
+    @ContractTest
+    public void getApplicableFlagShouldHaveEffectWhenUpdateFlagsByAddingThenComputingApplicableFlagsFromCurrentMailboxState() \
throws Exception { +        message1.setFlags(new Flags(Flag.ANSWERED));
+        message2.setFlags(new Flags(Flag.DELETED));
+        FlagsUpdateCalculator newFlags = new FlagsUpdateCalculator(new \
Flags(Flags.Flag.SEEN), FlagsUpdateMode.ADD); +
+        saveMessages();
+        messageMapper.updateFlags(benwaInboxMailbox, newFlags, \
message1.getUid().toRange()); +
+        assertThat(messageMapper.getApplicableFlag(benwaInboxMailbox))
+            .isEqualTo(new FlagsBuilder()
+                .add(Flag.ANSWERED, Flag.DELETED, Flag.SEEN)
+                .build());
+    }
+
+    @ContractTest
+    public void getApplicableFlagShouldHaveNotEffectWhenUpdateFlagsByReplaceThenIncrementalApplicableFlags() \
throws Exception { +        \
Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(Capabilities.INCREMENTAL_APPLICABLE_FLAGS));
 +        message1.setFlags(new Flags(Flag.ANSWERED));
+        message2.setFlags(new Flags(Flag.DELETED));
+        FlagsUpdateCalculator newFlags = new FlagsUpdateCalculator(new \
Flags(Flags.Flag.SEEN), FlagsUpdateMode.REPLACE); +
+        saveMessages();
+        messageMapper.updateFlags(benwaInboxMailbox, newFlags, \
message1.getUid().toRange()); +
+        assertThat(messageMapper.getApplicableFlag(benwaInboxMailbox))
+            .isEqualTo(new FlagsBuilder()
+                .add(Flag.ANSWERED, Flag.DELETED, Flag.SEEN)
+                .build());
+    }
+
+    @ContractTest
+    public void getApplicableFlagShouldHaveEffectWhenUpdateFlagsByReplaceThenComputingApplicableFlagsFromCurrentMailboxState() \
throws Exception { +        \
Assume.assumeFalse(mapperProvider.getSupportedCapabilities().contains(Capabilities.INCREMENTAL_APPLICABLE_FLAGS));
 +        message1.setFlags(new Flags(Flag.ANSWERED));
+        message2.setFlags(new Flags(Flag.DELETED));
+        FlagsUpdateCalculator newFlags = new FlagsUpdateCalculator(new \
Flags(Flags.Flag.SEEN), FlagsUpdateMode.REPLACE); +
+        saveMessages();
+        messageMapper.updateFlags(benwaInboxMailbox, newFlags, \
message1.getUid().toRange()); +
+        assertThat(messageMapper.getApplicableFlag(benwaInboxMailbox))
+            .isEqualTo(new FlagsBuilder()
+                .add(Flag.DELETED, Flag.SEEN)
+                .build());
+    }
+
+    @ContractTest
+    public void getApplicableFlagShouldHaveNotEffectWhenUpdateFlagsByRemoveThenIncrementalApplicableFlags() \
throws Exception { +        \
Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(Capabilities.INCREMENTAL_APPLICABLE_FLAGS));
 +        message1.setFlags(new FlagsBuilder().add(Flag.ANSWERED, \
Flag.SEEN).build()); +        message2.setFlags(new Flags(Flag.DELETED));
+        FlagsUpdateCalculator newFlags = new FlagsUpdateCalculator(new \
Flags(Flags.Flag.SEEN), FlagsUpdateMode.REMOVE); +
+        saveMessages();
+        messageMapper.updateFlags(benwaInboxMailbox, newFlags, \
message1.getUid().toRange()); +
+        assertThat(messageMapper.getApplicableFlag(benwaInboxMailbox))
+            .isEqualTo(new FlagsBuilder()
+                .add(Flag.ANSWERED, Flag.DELETED, Flag.SEEN)
+                .build());
+    }
+
+    @ContractTest
+    public void getApplicableFlagShouldHaveEffectWhenUpdateFlagsByRemoveThenComputingApplicableFlagsFromCurrentMailboxState() \
throws Exception { +        \
Assume.assumeFalse(mapperProvider.getSupportedCapabilities().contains(Capabilities.INCREMENTAL_APPLICABLE_FLAGS));
 +        message1.setFlags(new FlagsBuilder().add(Flag.ANSWERED, \
Flag.SEEN).build()); +        message2.setFlags(new Flags(Flag.DELETED));
+        FlagsUpdateCalculator newFlags = new FlagsUpdateCalculator(new \
Flags(Flags.Flag.SEEN), FlagsUpdateMode.REMOVE); +
+        saveMessages();
+        messageMapper.updateFlags(benwaInboxMailbox, newFlags, \
message1.getUid().toRange()); +
+        assertThat(messageMapper.getApplicableFlag(benwaInboxMailbox))
+            .isEqualTo(new FlagsBuilder()
+                .add(Flag.ANSWERED, Flag.DELETED)
+                .build());
+    }
+
+    @ContractTest
+    public void getApplicableFlagShouldHaveEffectWhenUnsetMessageFlagThenComputingApplicableFlagsFromCurrentMailboxState() \
throws Exception { +        \
Assume.assumeFalse(mapperProvider.getSupportedCapabilities().contains(Capabilities.INCREMENTAL_APPLICABLE_FLAGS));
 +        message1.setFlags(new FlagsBuilder().add(Flag.ANSWERED, \
Flag.SEEN).build()); +        message2.setFlags(new Flags(Flag.DELETED));
+        FlagsUpdateCalculator newFlags = new FlagsUpdateCalculator(new Flags(), \
FlagsUpdateMode.REPLACE); +
+        saveMessages();
+        messageMapper.updateFlags(benwaInboxMailbox, newFlags, \
message1.getUid().toRange()); +
+        assertThat(messageMapper.getApplicableFlag(benwaInboxMailbox))
+            .isEqualTo(new FlagsBuilder()
+                .add(Flag.DELETED)
+                .build());
+    }
+
+    @ContractTest
+    public void getApplicableFlagShouldHaveNotEffectWhenUnsetMessageFlagThenIncrementalApplicableFlags() \
throws Exception { +        \
Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(MapperProvider.Capabilities.THREAD_SAFE_FLAGS_UPDATE));
 +        message1.setFlags(new Flags(Flag.ANSWERED));
+        message2.setFlags(new Flags(Flag.DELETED));
+        FlagsUpdateCalculator newFlags = new FlagsUpdateCalculator(new Flags(), \
FlagsUpdateMode.REPLACE); +
+        saveMessages();
+        messageMapper.updateFlags(benwaInboxMailbox, newFlags, \
message1.getUid().toRange()); +
+        assertThat(messageMapper.getApplicableFlag(benwaInboxMailbox))
+            .isEqualTo(new FlagsBuilder()
+                .add(Flag.ANSWERED, Flag.DELETED)
+                .build());
+    }
+
+
+    @ContractTest
+    public void getApplicableFlagShouldHaveNotEffectWhenDeleteMessageThenIncrementalApplicableFlags() \
throws Exception { +        \
Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(Capabilities.INCREMENTAL_APPLICABLE_FLAGS));
 +        message1.setFlags(new Flags(Flag.ANSWERED));
+        message2.setFlags(new Flags(Flag.DELETED));
+
+        saveMessages();
+        messageMapper.delete(benwaInboxMailbox, message1);
+
+        assertThat(messageMapper.getApplicableFlag(benwaInboxMailbox))
+            .isEqualTo(new FlagsBuilder()
+                .add(Flag.ANSWERED, Flag.DELETED)
+                .build());
+    }
+
+    @ContractTest
+    public void getApplicableFlagShouldHaveEffectWhenDeleteMessageThenComputingApplicableFlagsFromCurrentMailboxState() \
throws Exception { +        \
Assume.assumeFalse(mapperProvider.getSupportedCapabilities().contains(Capabilities.INCREMENTAL_APPLICABLE_FLAGS));
 +        message1.setFlags(new Flags(Flag.ANSWERED));
+        message2.setFlags(new Flags(Flag.DELETED));
+
+        saveMessages();
+        messageMapper.delete(benwaInboxMailbox, message1);
+
+        assertThat(messageMapper.getApplicableFlag(benwaInboxMailbox))
+            .isEqualTo(new Flags(Flag.DELETED));
+    }
+
     private Map<MessageUid, MessageMetaData> markThenPerformExpunge(MessageRange \
range) throws MailboxException {  messageMapper.updateFlags(benwaInboxMailbox, new \
FlagsUpdateCalculator(new Flags(Flags.Flag.DELETED), FlagsUpdateMode.REPLACE), \
MessageRange.one(message1.getUid()));  messageMapper.updateFlags(benwaInboxMailbox, \
new FlagsUpdateCalculator(new Flags(Flags.Flag.DELETED), FlagsUpdateMode.REPLACE), \
MessageRange.one(message4.getUid()));


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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic