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 <[email protected]>
Authored: Wed Jan 17 10:35:19 2018 +0700
Committer: Matthieu Baechler <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to