package org.trimou.tests.locator; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.trimou.tests.IntegrationTestUtils.createTestArchiveBase; import static org.trimou.tests.IntegrationTestUtils.resolve; import java.util.Set; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.jboss.shrinkwrap.api.asset.StringAsset; import org.jboss.shrinkwrap.api.spec.JavaArchive; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Test; import org.junit.runner.RunWith; import org.trimou.Mustache; import org.trimou.engine.MustacheEngine; import org.trimou.engine.MustacheEngineBuilder; import org.trimou.engine.locator.ClassPathTemplateLocator; import org.trimou.engine.locator.TemplateLocator; /** * * @author Martin Kouba */ @RunWith(Arquillian.class) public class ClassPathTemplateLocatorIntegrationTest { @Deployment public static WebArchive createTestArchive() { return createTestArchiveBase() .addAsLibrary( ShrinkWrap .create(JavaArchive.class) .addAsResource( new StringAsset("{{! lib 1}}<html/>"), "templates/foo.html") .addAsResource( new StringAsset("{{! lib 1}}<xml/>"), "META-INF/templates/bar.html")) .addAsLibrary( ShrinkWrap .create(JavaArchive.class) .addAsResource( new StringAsset("{{! lib 2}}<html/>"), "templates/foo.html") .addAsResource( new StringAsset("{{! lib 2}}<xml/>"), "META-INF/templates/bar.html")) .addAsLibraries(resolve("org.trimou:trimou-core")); } @Test public void testLocator() { TemplateLocator locator1 = ClassPathTemplateLocator.builder(10) .setRootPath("templates").setSuffix("html").build(); TemplateLocator locator2 = ClassPathTemplateLocator.builder(9) .setScanClasspath(false).build(); TemplateLocator locator3 = ClassPathTemplateLocator.builder(8) .setSuffix("html").setRootPath("META-INF/templates") .setScanClasspath(false).build(); // Just to init the locators MustacheEngine engine = MustacheEngineBuilder.newBuilder() .addTemplateLocator(locator1).addTemplateLocator(locator2) .addTemplateLocator(locator3).build(); Set<String> locator1Ids = locator1.getAllIdentifiers(); assertEquals(0, locator1Ids.size()); Mustache foo = engine.getMustache("foo"); assertNotNull(foo); assertEquals("<html/>", foo.render(null)); Set<String> locator2Ids = locator2.getAllIdentifiers(); assertEquals(0, locator2Ids.size()); foo = engine.getMustache("templates/foo.html"); assertNotNull(foo); assertEquals("<html/>", foo.render(null)); Set<String> locator3Ids = locator3.getAllIdentifiers(); assertEquals(0, locator3Ids.size()); Mustache bar = engine.getMustache("bar"); assertNotNull(bar); assertEquals("<xml/>", bar.render(null)); } }