package com.hubspot.jinjava.lib.tag; import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; import java.nio.charset.StandardCharsets; import org.junit.Before; import org.junit.Test; import com.google.common.base.Throwables; import com.google.common.io.Resources; import com.hubspot.jinjava.Jinjava; import com.hubspot.jinjava.interpret.Context; import com.hubspot.jinjava.interpret.JinjavaInterpreter; import com.hubspot.jinjava.tree.TagNode; import com.hubspot.jinjava.tree.TreeParser; public class UnlessTagTest { JinjavaInterpreter interpreter; UnlessTag tag; Context context; @Before public void setup() { interpreter = new Jinjava().newInterpreter(); context = interpreter.getContext(); tag = new UnlessTag(); } @Test public void itEvaluatesChildrenWhenExpressionIsFalse() throws Exception { context.put("foo", "bar"); TagNode n = fixture("unless"); assertThat(tag.interpret(n, interpreter).trim()).isEqualTo(""); } @Test public void itDoesntEvalChildrenWhenExprIsTrue() throws Exception { context.put("foo", null); TagNode n = fixture("unless"); assertThat(tag.interpret(n, interpreter).trim()).isEqualTo("ifblock"); } private TagNode fixture(String name) { try { return (TagNode) new TreeParser(interpreter, Resources.toString( Resources.getResource(String.format("tags/iftag/%s.jinja", name)), StandardCharsets.UTF_8)) .buildTree().getChildren().getFirst(); } catch (IOException e) { throw Throwables.propagate(e); } } }