You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2018/01/17 13:28:15 UTC

[9/9] james-project git commit: JAMES-2286 FileMailRepository should be tested against all configuration possibilities

JAMES-2286 FileMailRepository should be tested against all configuration possibilities


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

Branch: refs/heads/master
Commit: ce049056d474fff43df89431f67fda243fd836cf
Parents: 8d207d4
Author: benwa <bt...@linagora.com>
Authored: Wed Jan 17 10:35:19 2018 +0700
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Wed Jan 17 09:27:58 2018 +0100

----------------------------------------------------------------------
 .../mailrepository/FileMailRepositoryTest.java  | 95 +++++++++++++++-----
 1 file changed, 74 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/ce049056/server/data/data-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java b/server/data/data-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java
index cdcb07a..c9797d5 100644
--- a/server/data/data-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java
+++ b/server/data/data-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java
@@ -25,32 +25,85 @@ import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.mailrepository.file.FileMailRepository;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Nested;
 
-public class FileMailRepositoryTest implements MailRepositoryContract {
-
-    private FileMailRepository mailRepository;
-    private MockFileSystem filesystem;
-
-    @BeforeEach
-    void init() throws Exception {
-        filesystem = new MockFileSystem();
-        mailRepository = new FileMailRepository();
-        mailRepository.setFileSystem(filesystem);
-        DefaultConfigurationBuilder defaultConfiguration = new DefaultConfigurationBuilder();
-        defaultConfiguration.addProperty("[@destinationURL]", "file://target/var/mailRepository");
-        defaultConfiguration.addProperty("[@type]", "MAIL");
-        mailRepository.configure(defaultConfiguration);
-        mailRepository.init();
+public class FileMailRepositoryTest {
+
+    public abstract class GenericFileMailRepositoryTest implements MailRepositoryContract {
+        private FileMailRepository mailRepository;
+        private MockFileSystem filesystem;
+
+        @BeforeEach
+        void init() throws Exception {
+            filesystem = new MockFileSystem();
+            mailRepository = new FileMailRepository();
+            mailRepository.setFileSystem(filesystem);
+            mailRepository.configure(getConfiguration());
+            mailRepository.init();
+        }
+
+        protected DefaultConfigurationBuilder getConfiguration() {
+            DefaultConfigurationBuilder configuration = new DefaultConfigurationBuilder();
+            configuration.addProperty("[@destinationURL]", "file://target/var/mailRepository");
+            return withConfigurationOptions(configuration);
+        }
+
+        protected abstract DefaultConfigurationBuilder withConfigurationOptions(DefaultConfigurationBuilder configuration);
+
+        @AfterEach
+        void tearDown() {
+            filesystem.clear();
+        }
+
+        @Override
+        public MailRepository retrieveRepository() {
+            return mailRepository;
+        }
+    }
+
+    @Nested
+    @DisplayName("Default configuration")
+    public class DefaultFileMailRepositoryTest extends GenericFileMailRepositoryTest {
+
+        protected DefaultConfigurationBuilder withConfigurationOptions(DefaultConfigurationBuilder configuration) {
+            configuration.addProperty("[@FIFO]", "false");
+            configuration.addProperty("[@CACHEKEYS]", "true");
+            return configuration;
+        }
     }
 
-    @AfterEach
-    void tearDown() {
-        filesystem.clear();
+    @Nested
+    @DisplayName("No cache configuration")
+    public class NoCacheFileMailRepositoryTest extends GenericFileMailRepositoryTest {
+
+        protected DefaultConfigurationBuilder withConfigurationOptions(DefaultConfigurationBuilder configuration) {
+            configuration.addProperty("[@FIFO]", "false");
+            configuration.addProperty("[@CACHEKEYS]", "false");
+            return configuration;
+        }
     }
 
-    @Override
-    public MailRepository retrieveRepository() {
-        return mailRepository;
+    @Nested
+    @DisplayName("Fifo configuration")
+    public class FifoFileMailRepositoryTest extends GenericFileMailRepositoryTest {
+
+        protected DefaultConfigurationBuilder withConfigurationOptions(DefaultConfigurationBuilder configuration) {
+            configuration.addProperty("[@FIFO]", "true");
+            configuration.addProperty("[@CACHEKEYS]", "true");
+            return configuration;
+        }
+    }
+
+    @Nested
+    @DisplayName("Fifo no cache configuration")
+    public class FifoNoCacheFileMailRepositoryTest extends GenericFileMailRepositoryTest {
+
+        protected DefaultConfigurationBuilder withConfigurationOptions(DefaultConfigurationBuilder configuration) {
+            configuration.addProperty("[@FIFO]", "true");
+            configuration.addProperty("[@CACHEKEYS]", "false");
+            return configuration;
+        }
     }
 
 }


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