package org.jtwig.functions.impl.java; import com.google.common.base.Optional; import org.jtwig.exceptions.CalculationException; import org.jtwig.functions.FunctionRequest; import org.jtwig.reflection.model.Value; import org.jtwig.reflection.model.java.JavaClass; import org.jtwig.reflection.model.java.JavaConstant; import org.jtwig.util.ClasspathFinder; import org.junit.Test; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.mock; public class ConstantFunctionTest { ClasspathFinder classpathFinder = mock(ClasspathFinder.class); ConstantFunction underTest = new ConstantFunction(classpathFinder); @Test(expected = CalculationException.class) public void valueNotRetrieved() throws Exception { Object argument = new Object(); String className = "nome"; String variableName = "test"; String argAsString = className + "." + variableName; FunctionRequest request = mock(FunctionRequest.class, RETURNS_DEEP_STUBS); JavaClass javaClass = mock(JavaClass.class); JavaConstant javaConstant = mock(JavaConstant.class); given(request.getNumberOfArguments()).willReturn(1); given(request.get(0)).willReturn(argument); given(request.getEnvironment().getValueEnvironment().getStringConverter().convert(argument)).willReturn(argAsString); given(classpathFinder.load(className)).willReturn(Optional.of(javaClass)); given(javaClass.constant(variableName)).willReturn(Optional.of(javaConstant)); given(javaConstant.value()).willReturn(Optional.<Value>absent()); given(request.exception(String.format("Unable to retrieve value of constant %s in class %s", className, variableName))).willReturn(new CalculationException("message")); underTest.execute(request); } }