package org.trimou.handlebars;
import static org.junit.Assert.assertEquals;
import java.math.BigDecimal;
import org.junit.Test;
import org.trimou.AbstractTest;
import org.trimou.MustacheExceptionAssert;
import org.trimou.engine.MustacheEngine;
import org.trimou.engine.MustacheEngineBuilder;
import org.trimou.exception.MustacheProblem;
import org.trimou.util.ImmutableMap;
/**
*
* @author Martin Kouba
*/
public class SetHelperTest extends AbstractTest {
@Test
public void testSetHelper() {
MustacheEngine engine = MustacheEngineBuilder.newBuilder()
.registerHelpers(HelpersBuilder.empty().addSet().build())
.build();
assertEquals("hellohello",
engine.compileMustache("set_helper01",
"{{foo}}{{bar}}{{#set foo=\"hello\"}}{{foo}}{{bar}}{{#set bar=foo}}{{bar}}{{/set}}{{/set}}{{foo}}{{bar}}")
.render(null));
assertEquals("helloping1",
engine.compileMustache("set_helper02",
"{{#set foo=\"hello\" bar=\"ping\" qux=one}}{{foo}}{{bar}}{{qux}}{{/set}}")
.render(ImmutableMap.of("one", BigDecimal.ONE)));
}
@Test
public void testSetHelperValidation() {
final MustacheEngine engine = MustacheEngineBuilder.newBuilder()
.registerHelpers(HelpersBuilder.empty().addSet().build())
.build();
MustacheExceptionAssert
.expect(MustacheProblem.COMPILE_HELPER_VALIDATION_FAILURE)
.check(() -> engine.compileMustache("set_helper_validation01",
"{{#set}}{{/set}}"))
.check(() -> engine.compileMustache("set_helper_validation02",
"{{#set \"foo\"}}{{/set}}"));
}
}