package org.jtwig.render.node.renderer; import org.jtwig.model.expression.Expression; import org.jtwig.model.tree.IfNode; import org.jtwig.model.tree.Node; import org.jtwig.render.RenderRequest; import org.jtwig.renderable.Renderable; import org.jtwig.value.convert.Converter; import org.junit.Test; import static java.util.Arrays.asList; import static org.junit.Assert.assertSame; import static org.mockito.Mockito.*; public class IfNodeRenderTest { private IfNodeRender underTest = new IfNodeRender(); @Test public void render() throws Exception { Object conditionValue1 = new Object(); Object conditionValue2 = new Object(); RenderRequest request = mock(RenderRequest.class, RETURNS_DEEP_STUBS); IfNode ifNode = mock(IfNode.class); Node node = mock(Node.class); Renderable renderable = mock(Renderable.class); IfNode.IfConditionNode ifConditionNode1 = mock(IfNode.IfConditionNode.class); IfNode.IfConditionNode ifConditionNode2 = mock(IfNode.IfConditionNode.class); Expression condition1 = mock(Expression.class); Expression condition2 = mock(Expression.class); when(ifNode.getConditionNodes()).thenReturn(asList(ifConditionNode1, ifConditionNode2)); when(ifConditionNode1.getCondition()).thenReturn(condition1); when(ifConditionNode2.getCondition()).thenReturn(condition2); when(ifConditionNode2.getContent()).thenReturn(node); when(request.getEnvironment().getRenderEnvironment().getCalculateExpressionService().calculate(request, condition1)).thenReturn(conditionValue1); when(request.getEnvironment().getRenderEnvironment().getCalculateExpressionService().calculate(request, condition2)).thenReturn(conditionValue2); when(request.getEnvironment().getValueEnvironment().getBooleanConverter().convert(conditionValue1)).thenReturn(Converter.Result.defined(false)); when(request.getEnvironment().getValueEnvironment().getBooleanConverter().convert(conditionValue2)).thenReturn(Converter.Result.defined(true)); when(request.getEnvironment().getRenderEnvironment().getRenderNodeService().render(request, node)).thenReturn(renderable); Renderable result = underTest.render(request, ifNode); assertSame(renderable, result); } }