Author: matthieu
Date: Wed Dec 16 15:30:35 2015
New Revision: 1720371

URL: http://svn.apache.org/viewvc?rev=1720371&view=rev
Log:
JAMES-1646 cover Role with tests and change from() to return Optional<Role>

Added:
    
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/RoleTest.java
      - copied, changed from r1720167, 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Role.java
Modified:
    
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Mailbox.java
    
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Role.java
    
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxTest.java

Modified: 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Mailbox.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Mailbox.java?rev=1720371&r1=1720370&r2=1720371&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Mailbox.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Mailbox.java
 Wed Dec 16 15:30:35 2015
@@ -43,7 +43,7 @@ public class Mailbox {
         private String id;
         private String name;
         private String parentId;
-        private Role role;
+        private Optional<Role> role;
         private int sortOrder;
         private boolean mustBeOnlyMailbox;
         private boolean mayReadItems;
@@ -77,7 +77,7 @@ public class Mailbox {
             return this;
         }
 
-        public Builder role(Role role) {
+        public Builder role(Optional<Role> role) {
             this.role = role;
             return this;
         }
@@ -148,7 +148,7 @@ public class Mailbox {
             Preconditions.checkState(sortOrder >= 0, "'sortOrder' must be 
positive");
             Preconditions.checkState(sortOrder < MAX_SORT_ORDER, "'sortOrder' 
must be lesser than " + MAX_SORT_ORDER);
 
-            return new Mailbox(id, name, Optional.ofNullable(parentId), 
Optional.ofNullable(role), sortOrder, mustBeOnlyMailbox, mayReadItems, 
mayAddItems, mayRemoveItems, mayCreateChild, mayRename, mayDelete,
+            return new Mailbox(id, name, Optional.ofNullable(parentId), role, 
sortOrder, mustBeOnlyMailbox, mayReadItems, mayAddItems, mayRemoveItems, 
mayCreateChild, mayRename, mayDelete,
                     totalMessages, unreadMessages, totalThreads, 
unreadThreads);
         }
     }

Modified: 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Role.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Role.java?rev=1720371&r1=1720370&r2=1720371&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Role.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Role.java
 Wed Dec 16 15:30:35 2015
@@ -18,6 +18,9 @@
  ****************************************************************/
 package org.apache.james.jmap.model;
 
+import java.util.Locale;
+import java.util.Optional;
+
 public enum Role {
 
     INBOX("inbox"),
@@ -28,20 +31,20 @@ public enum Role {
     TRASH("trash"),
     SPAM("spam"),
     TEMPLATES("templates");
-    
+
     private String name;
 
-    private Role(String name) {
+    Role(String name) {
         this.name = name;
     }
 
-    public static Role from(String name) {
+    public static Optional<Role> from(String name) {
         for (Role role : values()) {
-            if (role.serialize().equals(name.toLowerCase())) {
-                return role;
+            if (role.serialize().equals(name.toLowerCase(Locale.ENGLISH))) {
+                return Optional.of(role);
             }
         }
-        return null;
+        return Optional.empty();
     }
 
     public String serialize() {

Modified: 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxTest.java?rev=1720371&r1=1720370&r2=1720371&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxTest.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxTest.java
 Wed Dec 16 15:30:35 2015
@@ -93,7 +93,7 @@ public class MailboxTest {
             .id("id")
             .name("name")
             .parentId("parentId")
-            .role(Role.DRAFTS)
+            .role(Optional.of(Role.DRAFTS))
             .sortOrder(123)
             .mustBeOnlyMailbox(true)
             .mayReadItems(true)

Copied: 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/RoleTest.java
 (from r1720167, 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Role.java)
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/RoleTest.java?p2=james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/RoleTest.java&p1=james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Role.java&r1=1720167&r2=1720371&rev=1720371&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Role.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/RoleTest.java
 Wed Dec 16 15:30:35 2015
@@ -1,3 +1,4 @@
+package org.apache.james.jmap.model;
 /****************************************************************
  * Licensed to the Apache Software Foundation (ASF) under one   *
  * or more contributor license agreements.  See the NOTICE file *
@@ -16,35 +17,40 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.jmap.model;
 
-public enum Role {
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Test;
 
-    INBOX("inbox"),
-    ARCHIVE("archive"),
-    DRAFTS("drafts"),
-    OUTBOX("outbox"),
-    SENT("sent"),
-    TRASH("trash"),
-    SPAM("spam"),
-    TEMPLATES("templates");
-    
-    private String name;
+import java.util.Locale;
+import java.util.Optional;
 
-    private Role(String name) {
-        this.name = name;
+public class RoleTest {
+
+    @Test
+    public void fromShouldReturnInbox() {
+        assertThat(Role.from("inbox")).isEqualTo(Optional.of(Role.INBOX));
     }
 
-    public static Role from(String name) {
-        for (Role role : values()) {
-            if (role.serialize().equals(name.toLowerCase())) {
-                return role;
-            }
-        }
-        return null;
+    @Test
+    public void fromShouldReturnEmptyWhenUnknownValue() {
+        assertThat(Role.from("jjjj")).isEqualTo(Optional.empty());
     }
 
-    public String serialize() {
-        return name;
+    @Test
+    public void fromShouldReturnInboxWhenContainsUppercaseValue() {
+        assertThat(Role.from("InBox")).isEqualTo(Optional.of(Role.INBOX));
     }
-}
+
+    @Test
+    public void fromShouldReturnInboxWhenContainsUppercaseValueInTurkish() {
+        Locale previousLocale = Locale.getDefault();
+        Locale.setDefault(Locale.forLanguageTag("tr"));
+        try {
+            assertThat(Role.from("InBox")).isEqualTo(Optional.of(Role.INBOX));
+        } finally {
+            Locale.setDefault(previousLocale);
+        }
+    }
+
+}
\ No newline at end of file



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

Reply via email to