package org.trimou.handlebars; import static org.junit.Assert.assertEquals; import org.junit.Test; import org.trimou.AbstractTest; import org.trimou.engine.MustacheEngine; import org.trimou.engine.MustacheEngineBuilder; import org.trimou.engine.locator.MapTemplateLocator; import org.trimou.util.ImmutableMap; /** * @author Minkyu Cho */ public class EmbedHelperTest extends AbstractTest { @Test public void testEmbeddedHelper() { MustacheEngine engine = MustacheEngineBuilder .newBuilder() .registerHelpers(HelpersBuilder.empty().addEmbed().build()) .addTemplateLocator( new MapTemplateLocator(ImmutableMap.of("template", "Hello!"))).build(); assertEquals( "<script id=\"template\" type=\"text/template\">\nHello!\n</script>", engine.compileMustache("embed_helper01", "{{embed this}}") .render("template")); assertEquals( "<script id=\"template\" type=\"text/template\">\nHello!\n</script>", engine.compileMustache("embed_helper01", "{{embed 'temp' this}}") .render("late")); } @Test public void testCustomSourceProcessor() { MustacheEngine engine = MustacheEngineBuilder .newBuilder() .registerHelpers( HelpersBuilder.empty() .addEmbed((mustacheName, mustacheSource) -> new StringBuilder() .append("<source>") .append(mustacheSource) .append("</source>") .toString()) .build()) .addTemplateLocator( new MapTemplateLocator(ImmutableMap.of("template", "{{foo}}"))).build(); assertEquals( "<source>{{foo}}</source>", engine.compileMustache("embed_helper02", "{{embed 'template'}}") .render(null)); } }