package brainslug.juel; import brainslug.flow.context.BrainslugExecutionContext; import brainslug.flow.context.Registry; import brainslug.flow.context.Trigger; import brainslug.flow.context.TriggerContext; import brainslug.flow.execution.expression.ExpressionEvaluator; import brainslug.flow.execution.instance.FlowInstance; import org.junit.Test; import java.util.ServiceLoader; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; public class JuelExpressionEvaluatorTest { JuelExpressionEvaluator evaluator = new JuelExpressionEvaluator(); @Test public void shouldBeRegisteredAsService() { ServiceLoader<ExpressionEvaluator> load = ServiceLoader.load(ExpressionEvaluator.class); assertThat(load.iterator().next()).isExactlyInstanceOf(JuelExpressionEvaluator.class); } @Test public void shouldEvaluateEqualsExpression() { JuelExpression fooEqualsFour = new JuelExpression("foo == 4"); BrainslugExecutionContext context = testContext(); context.setProperty("foo", 4); Boolean result = evaluator.evaluate(fooEqualsFour, context, Boolean.class); assertThat(result).isTrue(); } @Test public void shouldEvaluateContainsExpression() { JuelExpression fooEqualsFour = new JuelExpression("bar.contains('aTe')"); BrainslugExecutionContext context = testContext(); context.setProperty("bar", "aText"); Boolean result = evaluator.evaluate(fooEqualsFour, context, Boolean.class); assertThat(result).isTrue(); } private BrainslugExecutionContext testContext() { FlowInstance instance = mock(FlowInstance.class); TriggerContext trigger = new Trigger(); Registry registry = mock(Registry.class); return new BrainslugExecutionContext(instance, trigger, registry); } }