package com.github.jknack.handlebars.helper; import java.io.IOException; import org.junit.Test; import com.github.jknack.handlebars.AbstractTest; import com.github.jknack.handlebars.Handlebars; public class IncludeTest extends AbstractTest { @Override protected void configure(final Handlebars handlebars) { handlebars.registerHelper(IncludeHelper.NAME, IncludeHelper.INSTANCE); } @Test public void include() throws IOException { String template = "{{#each dudes}}{{include \"dude\" greeting=\"Hi\"}} {{/each}}"; String partial = "{{greeting}}, {{name}}!"; String expected = "Hi, Yehuda! Hi, Alan! "; Hash dudes = $("dudes", new Object[]{ $("name", "Yehuda", "url", "http://yehuda"), $("name", "Alan", "url", "http://alan") }); shouldCompileToWithPartials(template, dudes, $("dude", partial), expected); } @Test public void accessToParentContext() throws IOException { String string = "{{#each hobbies}}{{../name}} has hobby {{hobbyname}} and lives in {{../town}} {{/each}}"; Object hash = $("name", "Dennis", "town", "berlin", "hobbies", new Object[]{$("hobbyname", "swimming"), $("hobbyname", "dancing"), $("hobbyname", "movies") }); shouldCompileTo(string, hash, "Dennis has hobby swimming and lives in berlin " + "Dennis has hobby dancing and lives in berlin " + "Dennis has hobby movies and lives in berlin "); } @Test public void accessToParentContextFromPartialUsingInclude() throws IOException { String string = "{{#each hobbies}}{{include \"hobby\" parentcontext=.. town=../town}} {{/each}}"; Object hash = $("name", "Dennis", "town", "berlin", "hobbies", new Object[]{$("hobbyname", "swimming"), $("hobbyname", "dancing"), $("hobbyname", "movies") }); Hash partials = $("hobby", "{{parentcontext.name}} has hobby {{hobbyname}} and lives in {{town}}"); shouldCompileToWithPartials(string, hash, partials, "Dennis has hobby swimming and lives in berlin " + "Dennis has hobby dancing and lives in berlin " + "Dennis has hobby movies and lives in berlin "); } @Test public void accessToParentContextFromPartialMustacheSpec() throws IOException { String string = "{{#each hobbies}}{{> hobby}} {{/each}}"; Object hash = $("name", "Dennis", "town", "berlin", "hobbies", new Object[]{$("hobbyname", "swimming"), $("hobbyname", "dancing"), $("hobbyname", "movies") }); Hash partials = $("hobby", "{{name}} has hobby {{hobbyname}} and lives in {{town}}"); shouldCompileToWithPartials(string, hash, partials, "Dennis has hobby swimming and lives in berlin " + "Dennis has hobby dancing and lives in berlin " + "Dennis has hobby movies and lives in berlin "); } @Test public void explicitAccessToParentContextFromPartialMustacheSpec() throws IOException { String string = "{{#each hobbies}}{{> hobby}} {{/each}}"; Object hash = $("name", "Dennis", "town", "berlin", "hobbies", new Object[]{$("hobbyname", "swimming"), $("hobbyname", "dancing"), $("hobbyname", "movies") }); Hash partials = $("hobby", "{{../name}} has hobby {{hobbyname}} and lives in {{../town}}"); shouldCompileToWithPartials(string, hash, partials, "Dennis has hobby swimming and lives in berlin " + "Dennis has hobby dancing and lives in berlin " + "Dennis has hobby movies and lives in berlin "); } }