package org.jtwig.functions; import org.jtwig.exceptions.CalculationException; import org.jtwig.model.expression.Expression; import org.jtwig.model.position.Position; import org.jtwig.render.RenderRequest; import org.junit.Test; import java.util.Collections; import java.util.List; import static org.hamcrest.Matchers.containsString; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class FunctionRequestTest { public static final String FUNCTION_NAME = "functionName"; private final FunctionArguments functionArguments = mock(FunctionArguments.class); private FunctionRequest underTest = new FunctionRequest(mock(RenderRequest.class), mock(Position.class), FUNCTION_NAME, functionArguments); @Test public void exceptionWithArgument() throws Exception { RuntimeException exception = new RuntimeException(); String message = "asd"; CalculationException result = underTest.exception(message, exception); assertSame(result.getCause(), exception); assertThat(result.getMessage(), containsString(message)); } @Test public void getExpressionTest() throws Exception { Expression expression = mock(Expression.class); when(functionArguments.getExpression(0)).thenReturn(expression); Expression result = underTest.getExpression(0); assertSame(expression, result); } @Test public void getExpressionsTest() throws Exception { Expression expression = mock(Expression.class); List<Expression> expressions = Collections.singletonList(expression); when(functionArguments.getExpressions()).thenReturn(expressions); List<Expression> result = underTest.getExpressionArguments(); assertSame(expressions, result); } }