package org.camunda.bpm.camel.component.producer; import org.apache.camel.Endpoint; import org.apache.camel.Producer; import org.camunda.bpm.camel.BaseCamelTest; import org.camunda.bpm.camel.component.CamundaBpmEndpoint; import org.camunda.bpm.engine.runtime.ProcessInstance; import org.junit.Test; import static org.camunda.bpm.camel.component.CamundaBpmConstants.*; import static org.fest.assertions.api.Assertions.assertThat; import static org.mockito.Matchers.anyMap; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class SignalProcessProducerTest extends BaseCamelTest { @Test public void getSignalProcessProducerFromUri() throws Exception { CamundaBpmEndpoint endpoint = (CamundaBpmEndpoint) camelContext.getEndpoint( camundaBpmUri("signal?" + PROCESS_DEFINITION_KEY_PARAMETER + "=" + "aProcessDefinitionKey" + "&" + ACTIVITY_ID_PARAMETER + "=" + "anActivityId")); Producer producer = endpoint.createProducer(); assertThat(producer).isInstanceOf(MessageProducer.class); } // No longer valid - The process definition key may be past at execution of // the route // @Test(expected = IllegalArgumentException.class) // public void noProcessDefinitionKeyParameterShouldThrowException() throws // Exception { // Endpoint endpoint = camelContext.getEndpoint(camundaBpmUri("signal")); // endpoint.createProducer(); // } @Test(expected = IllegalArgumentException.class) public void noActivityIdParameterShouldThrowException() throws Exception { Endpoint endpoint = camelContext.getEndpoint( camundaBpmUri("signal?" + PROCESS_DEFINITION_KEY_PARAMETER + "=" + "aProcessDefinitionKey")); endpoint.createProducer(); } @SuppressWarnings("unchecked") @Test public void signalShouldBeCalled() throws Exception { ProcessInstance processInstance = mock(ProcessInstance.class); when(processInstance.getProcessInstanceId()).thenReturn("theProcessInstanceId"); when(processInstance.getProcessDefinitionId()).thenReturn("theProcessDefinitionId"); when(runtimeService.startProcessInstanceByKey(eq("aProcessDefinitionKey"), anyMap())).thenReturn( processInstance); CamundaBpmEndpoint endpoint = (CamundaBpmEndpoint) camelContext.getEndpoint( camundaBpmUri("signal?" + PROCESS_DEFINITION_KEY_PARAMETER + "=" + "aProcessDefinitionKey" + "&" + ACTIVITY_ID_PARAMETER + "=" + "anActivityId")); Producer producer = endpoint.createProducer(); assertThat(producer).isInstanceOf(MessageProducer.class); } @SuppressWarnings("unchecked") @Test public void signalWithBusinessKeyShouldBeCalled() throws Exception { ProcessInstance processInstance = mock(ProcessInstance.class); when(processInstance.getProcessInstanceId()).thenReturn("theProcessInstanceId"); when(processInstance.getProcessDefinitionId()).thenReturn("theProcessDefinitionId"); when(runtimeService.startProcessInstanceByKey(eq("aProcessDefinitionKey"), anyMap())).thenReturn( processInstance); CamundaBpmEndpoint endpoint = (CamundaBpmEndpoint) camelContext.getEndpoint( camundaBpmUri("signal?" + PROCESS_DEFINITION_KEY_PARAMETER + "=" + "aProcessDefinitionKey" + "&" + ACTIVITY_ID_PARAMETER + "=" + "anActivityId")); Producer producer = endpoint.createProducer(); assertThat(producer).isInstanceOf(MessageProducer.class); } }