package org.trimou.engine.locator;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.Set;
import org.junit.Test;
import org.trimou.engine.MustacheEngineBuilder;
import org.trimou.engine.config.EngineConfigurationKey;
/**
*
* @author Martin Kouba
*/
public class ClassPathTemplateLocatorTest extends PathTemplateLocatorTest {
@Test
public void testLocator() throws IOException {
TemplateLocator locator = new ClassPathTemplateLocator(1,
"locator/file", "foo");
// Just to init the locator
MustacheEngineBuilder.newBuilder().addTemplateLocator(locator).build();
Set<String> ids = locator.getAllIdentifiers();
assertEquals(5, ids.size());
assertTrue(ids.contains("index"));
assertTrue(ids.contains("home"));
assertTrue(ids.contains("foo"));
assertTrue(ids.contains("sub/bar"));
assertTrue(ids.contains("sub/subsub/qux"));
assertEquals("{{foo}}", read(locator.locate("index")));
assertEquals("bar", read(locator.locate("home")));
assertEquals("foo", read(locator.locate("foo")));
assertEquals("{{foo}}", read(locator.locate("sub/bar")));
assertEquals("{{bar}}", read(locator.locate("sub/subsub/qux")));
}
@Test
public void testLocatorNoSuffix() throws IOException {
TemplateLocator locator = new ClassPathTemplateLocator(1,
"locator/file");
// Just to init the locator
MustacheEngineBuilder.newBuilder().addTemplateLocator(locator).build();
Set<String> ids = locator.getAllIdentifiers();
assertEquals(7, ids.size());
assertTrue(ids.contains("index.foo"));
assertTrue(ids.contains("home.foo"));
assertTrue(ids.contains("foo.foo"));
assertTrue(ids.contains("detail.html"));
assertTrue(ids.contains("encoding.html"));
assertTrue(ids.contains("sub/bar.foo"));
assertTrue(ids.contains("sub/subsub/qux.foo"));
assertEquals("{{foo}}", read(locator.locate("index.foo")));
assertEquals("bar", read(locator.locate("home.foo")));
assertEquals("foo", read(locator.locate("foo.foo")));
assertEquals("<html/>", read(locator.locate("detail.html")));
assertEquals("{{foo}}", read(locator.locate("sub/bar.foo")));
assertEquals("{{bar}}", read(locator.locate("sub/subsub/qux.foo")));
}
@Test
public void testEncoding() throws IOException {
TemplateLocator locator = new ClassPathTemplateLocator(1,
"locator/file", "html");
// Just to init the locator
MustacheEngineBuilder
.newBuilder()
.setProperty(EngineConfigurationKey.DEFAULT_FILE_ENCODING,
"windows-1250").addTemplateLocator(locator).build();
assertEquals("Hurá ěščřřžžýá!", read(locator.locate("encoding")));
}
@Test
public void testLocatorClasspathNoRootPath() throws IOException {
TemplateLocator locator = ClassPathTemplateLocator.builder(1)
.setSuffix("foo").build();
// Just to init the locator
MustacheEngineBuilder.newBuilder().addTemplateLocator(locator).build();
Set<String> ids = locator.getAllIdentifiers();
// No templates available
assertEquals(0, ids.size());
assertEquals("{{foo}}", read(locator.locate("locator/file/index")));
assertEquals("bar", read(locator.locate("locator/file/home")));
assertEquals("foo", read(locator.locate("locator/file/foo")));
assertEquals("{{foo}}", read(locator.locate("locator/file/sub/bar")));
assertEquals("{{bar}}", read(locator.locate("locator/file/sub/subsub/qux")));
assertEquals("root", read(locator.locate("/oof")));
}
}