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]
