package org.jtwig.parser.parboiled.node;
import org.jtwig.model.expression.VariableExpression;
import org.jtwig.model.tree.EmbedNode;
import org.jtwig.parser.parboiled.AbstractParserTest;
import org.junit.Test;
import org.parboiled.support.ParsingResult;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsInstanceOf.instanceOf;
public class EmbedNodeParserTest extends AbstractParserTest {
private EmbedNodeParser underTest = context.parser(EmbedNodeParser.class);
@Test
public void embedNode() throws Exception {
ParsingResult<EmbedNode> result = parse(underTest.NodeRule(), "{% embed 'one' %}{% endembed %}");
assertThat(result.matched, is(true));
EmbedNode embedNode = result.valueStack.pop();
assertThat(embedNode.isIgnoreMissing(), is(false));
assertThat(embedNode.isInheritModel(), is(true));
}
@Test
public void embedNodeIgnoreMissing() throws Exception {
ParsingResult<EmbedNode> result = parse(underTest.NodeRule(), "{% embed 'one' ignore missing %}{% endembed %}");
assertThat(result.matched, is(true));
EmbedNode embedNode = result.valueStack.pop();
assertThat(embedNode.isIgnoreMissing(), is(true));
assertThat(embedNode.isInheritModel(), is(true));
}
@Test
public void embedNodeIgnoreMissingDoNotExtend() throws Exception {
ParsingResult<EmbedNode> result = parse(underTest.NodeRule(), "{% embed 'one' ignore missing only %}{% endembed %}");
assertThat(result.matched, is(true));
EmbedNode embedNode = result.valueStack.pop();
assertThat(embedNode.isIgnoreMissing(), is(true));
assertThat(embedNode.isInheritModel(), is(false));
}
@Test
public void embedNodeIgnoreMissingDoNotExtendWith() throws Exception {
ParsingResult<EmbedNode> result = parse(underTest.NodeRule(), "{% embed 'one' ignore missing with three only %}{% endembed %}");
assertThat(result.matched, is(true));
EmbedNode embedNode = result.valueStack.pop();
assertThat(embedNode.isIgnoreMissing(), is(true));
assertThat(embedNode.isInheritModel(), is(false));
assertThat(embedNode.getMapExpression(), instanceOf(VariableExpression.class));
}
@Test
public void embedNodeIgnoreMissingDoNotExtendWithWithContent() throws Exception {
ParsingResult<EmbedNode> result = parse(underTest.NodeRule(), "{% embed 'one' ignore missing with three only %}{% block one %}{% endblock %}{% endembed %}");
assertThat(result.matched, is(true));
EmbedNode embedNode = result.valueStack.pop();
assertThat(embedNode.isIgnoreMissing(), is(true));
assertThat(embedNode.isInheritModel(), is(false));
assertThat(embedNode.getMapExpression(), instanceOf(VariableExpression.class));
assertThat(embedNode.getNodes().size(), is(1));
}
}