1 package de.todesbaum.jsite.main;
3 import static de.todesbaum.jsite.main.ConfigurationLocator.ConfigurationLocation.CUSTOM;
4 import static de.todesbaum.jsite.main.ConfigurationLocator.ConfigurationLocation.HOME_DIRECTORY;
5 import static de.todesbaum.jsite.main.ConfigurationLocator.ConfigurationLocation.NEXT_TO_JAR_FILE;
6 import static java.util.Optional.empty;
7 import static java.util.Optional.of;
8 import static org.hamcrest.MatcherAssert.assertThat;
9 import static org.hamcrest.Matchers.endsWith;
10 import static org.hamcrest.Matchers.is;
11 import static org.mockito.Mockito.mock;
12 import static org.mockito.Mockito.when;
16 import org.junit.Rule;
17 import org.junit.Test;
18 import org.junit.rules.TemporaryFolder;
21 * Unit test for {@link ConfigurationLocator}.
23 public class ConfigurationLocatorTest {
26 public final TemporaryFolder temporaryFolder = new TemporaryFolder();
29 public void configurationLocatorPrefersHomeDirectoryIfJarFileCanNotBeFound() {
30 JarFileLocator jarFileLocator = mock(JarFileLocator.class);
31 when(jarFileLocator.locateJarFile()).thenReturn(empty());
32 ConfigurationLocator locator = new ConfigurationLocator(jarFileLocator);
33 assertThat(locator.findPreferredLocation(), is(HOME_DIRECTORY));
34 assertThat(locator.getFile(HOME_DIRECTORY), endsWith("/config7"));
35 assertThat(locator.isValidLocation(HOME_DIRECTORY), is(true));
39 public void configurationLocatorUsesFileNextToJarFileIfJarFileIsFound() throws Exception {
40 File jarFile = temporaryFolder.newFile("test.jar");
41 temporaryFolder.newFile("jSite.conf");
42 JarFileLocator jarFileLocator = mock(JarFileLocator.class);
43 when(jarFileLocator.locateJarFile()).thenReturn(of(jarFile));
44 ConfigurationLocator locator = new ConfigurationLocator(jarFileLocator);
45 assertThat(locator.findPreferredLocation(), is(NEXT_TO_JAR_FILE));
46 assertThat(locator.getFile(NEXT_TO_JAR_FILE), endsWith("/jSite.conf"));
47 assertThat(locator.isValidLocation(NEXT_TO_JAR_FILE), is(true));
51 public void customLocationCanBeSet() throws Exception {
52 File configFile = temporaryFolder.newFile("jSite.conf");
53 JarFileLocator jarFileLocator = mock(JarFileLocator.class);
54 when(jarFileLocator.locateJarFile()).thenReturn(empty());
55 ConfigurationLocator locator = new ConfigurationLocator(jarFileLocator);
56 locator.setCustomLocation(configFile.getPath());
57 assertThat(locator.findPreferredLocation(), is(CUSTOM));
58 assertThat(locator.getFile(CUSTOM), is(configFile.getPath()));
59 assertThat(locator.isValidLocation(CUSTOM), is(true));