package brainslug.spring; import brainslug.flow.builder.FlowBuilder; import brainslug.flow.context.BrainslugContext; import brainslug.flow.expression.Property; import brainslug.flow.node.task.CallDefinition; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import static brainslug.flow.execution.property.ExecutionProperties.newProperties; import static brainslug.util.IdUtil.id; import static org.mockito.Mockito.verify; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {SpringBrainslugConfiguration.class, SpringBrainslugTestConfiguration.class}) public class SpringBrainslugProxyTest { @Autowired BrainslugContext brainslugContext; @Autowired ApplicationContext applicationContext; @Autowired TestServiceClass testServiceClass; @Test public void shouldInvokeServiceMethodForClass() { BrainslugContext context = new SpringBrainslugContextBuilder() .withApplicationContext(applicationContext) .build(); final Property param = FlowBuilder.property(id("param")); context.addFlowDefinition(new FlowBuilder() { @Override public void define() { flowId(id("inlineFlow")); CallDefinition beanMethod = method(service(TestServiceClass.class).classFoo(value(param, String.class))); start(event(id("start"))) .execute(task(id("callSpringBean")).call(beanMethod)); } }.getDefinition()); context.startFlow(id("inlineFlow"), id("start"), newProperties().with(param, "foo")); verify(testServiceClass).classFoo("foo"); } }