package org.jtwig.resource.loader; import com.google.common.base.Optional; import org.jtwig.resource.exceptions.ResourceNotFoundException; import org.junit.Test; import java.io.InputStream; import java.net.URL; import java.nio.charset.Charset; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class ClasspathResourceLoaderTest { private final ClassLoader classLoader = mock(ClassLoader.class); private ClasspathResourceLoader underTest = new ClasspathResourceLoader(classLoader); @Test public void existsWithoutRoot() throws Exception { URL value = new URL("file:/"); when(classLoader.getResource("path")).thenReturn(value); boolean result = underTest.exists("path"); assertThat(result, is(true)); } @Test public void existsPathWithRoot() throws Exception { URL value = new URL("file:/"); when(classLoader.getResource("path")).thenReturn(value); boolean result = underTest.exists("/path"); assertThat(result, is(true)); } @Test public void existsNotFound() throws Exception { when(classLoader.getResource("path")).thenReturn(null); boolean result = underTest.exists("/path"); assertThat(result, is(false)); } @Test public void loadWithoutRoot() throws Exception { InputStream inputStream = mock(InputStream.class); when(classLoader.getResourceAsStream("path")).thenReturn(inputStream); InputStream result = underTest.load("path"); assertThat(result, is(inputStream)); } @Test public void loadPathWithRoot() throws Exception { InputStream inputStream = mock(InputStream.class); when(classLoader.getResourceAsStream("path")).thenReturn(inputStream); InputStream result = underTest.load("/path"); assertThat(result, is(inputStream)); } @Test(expected = ResourceNotFoundException.class) public void loadPathNotFound() throws Exception { when(classLoader.getResourceAsStream("path")).thenReturn(null); underTest.load("/path"); } @Test public void charset() throws Exception { Optional<Charset> result = underTest.getCharset("path"); assertThat(result.isPresent(), is(false)); } @Test public void toUrl() throws Exception { when(classLoader.getResource("path")).thenReturn(null); Optional<URL> result = underTest.toUrl("path"); assertThat(result.isPresent(), is(false)); } @Test public void toUrlWithRootPath() throws Exception { when(classLoader.getResource("path")).thenReturn(null); Optional<URL> result = underTest.toUrl("/path"); assertThat(result.isPresent(), is(false)); } @Test public void toUrlFound() throws Exception { URL url = new URL("file:/"); when(classLoader.getResource("path")).thenReturn(url); Optional<URL> result = underTest.toUrl("/path"); assertThat(result.get(), is(url)); } }