X-Git-Url: https://git.pterodactylus.net/?p=jSite.git;a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Ftodesbaum%2Fjsite%2Fmain%2FConfigurationLocatorTest.java;fp=src%2Ftest%2Fjava%2Fde%2Ftodesbaum%2Fjsite%2Fmain%2FConfigurationLocatorTest.java;h=779fb0f1a0ec3cb780f24f83014e74392725e715;hp=0000000000000000000000000000000000000000;hb=364353eaf23d55c9302d4f736c685d6b9fa59dcb;hpb=fd3bd2c16b6d9d617bb70478c11ac756a726999f diff --git a/src/test/java/de/todesbaum/jsite/main/ConfigurationLocatorTest.java b/src/test/java/de/todesbaum/jsite/main/ConfigurationLocatorTest.java new file mode 100644 index 0000000..779fb0f --- /dev/null +++ b/src/test/java/de/todesbaum/jsite/main/ConfigurationLocatorTest.java @@ -0,0 +1,62 @@ +package de.todesbaum.jsite.main; + +import static de.todesbaum.jsite.main.ConfigurationLocator.ConfigurationLocation.CUSTOM; +import static de.todesbaum.jsite.main.ConfigurationLocator.ConfigurationLocation.HOME_DIRECTORY; +import static de.todesbaum.jsite.main.ConfigurationLocator.ConfigurationLocation.NEXT_TO_JAR_FILE; +import static java.util.Optional.empty; +import static java.util.Optional.of; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.endsWith; +import static org.hamcrest.Matchers.is; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.io.File; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.TemporaryFolder; + +/** + * Unit test for {@link ConfigurationLocator}. + */ +public class ConfigurationLocatorTest { + + @Rule + public final TemporaryFolder temporaryFolder = new TemporaryFolder(); + + @Test + public void configurationLocatorPrefersHomeDirectoryIfJarFileCanNotBeFound() { + JarFileLocator jarFileLocator = mock(JarFileLocator.class); + when(jarFileLocator.locateJarFile()).thenReturn(empty()); + ConfigurationLocator locator = new ConfigurationLocator(jarFileLocator); + assertThat(locator.findPreferredLocation(), is(HOME_DIRECTORY)); + assertThat(locator.getFile(HOME_DIRECTORY), endsWith("/config7")); + assertThat(locator.isValidLocation(HOME_DIRECTORY), is(true)); + } + + @Test + public void configurationLocatorUsesFileNextToJarFileIfJarFileIsFound() throws Exception { + File jarFile = temporaryFolder.newFile("test.jar"); + temporaryFolder.newFile("jSite.conf"); + JarFileLocator jarFileLocator = mock(JarFileLocator.class); + when(jarFileLocator.locateJarFile()).thenReturn(of(jarFile)); + ConfigurationLocator locator = new ConfigurationLocator(jarFileLocator); + assertThat(locator.findPreferredLocation(), is(NEXT_TO_JAR_FILE)); + assertThat(locator.getFile(NEXT_TO_JAR_FILE), endsWith("/jSite.conf")); + assertThat(locator.isValidLocation(NEXT_TO_JAR_FILE), is(true)); + } + + @Test + public void customLocationCanBeSet() throws Exception { + File configFile = temporaryFolder.newFile("jSite.conf"); + JarFileLocator jarFileLocator = mock(JarFileLocator.class); + when(jarFileLocator.locateJarFile()).thenReturn(empty()); + ConfigurationLocator locator = new ConfigurationLocator(jarFileLocator); + locator.setCustomLocation(configFile.getPath()); + assertThat(locator.findPreferredLocation(), is(CUSTOM)); + assertThat(locator.getFile(CUSTOM), is(configFile.getPath())); + assertThat(locator.isValidLocation(CUSTOM), is(true)); + } + +}