/*
* Copyright 2015 herd contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.finra.herd.service;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.activiti.engine.HistoryService;
import org.activiti.engine.ManagementService;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.history.HistoricActivityInstance;
import org.activiti.engine.history.HistoricActivityInstanceQuery;
import org.activiti.engine.history.HistoricProcessInstance;
import org.activiti.engine.history.HistoricProcessInstanceQuery;
import org.activiti.engine.repository.ProcessDefinition;
import org.activiti.engine.repository.ProcessDefinitionQuery;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ExecutionQuery;
import org.activiti.engine.runtime.Job;
import org.activiti.engine.runtime.JobQuery;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.runtime.ProcessInstanceQuery;
import org.joda.time.DateTime;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InOrder;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.finra.herd.core.helper.ConfigurationHelper;
import org.finra.herd.model.api.xml.JobStatusEnum;
import org.finra.herd.model.dto.ConfigurationValue;
import org.finra.herd.service.impl.ActivitiServiceImpl;
public class ActivitiServiceTest
{
@InjectMocks
private ActivitiServiceImpl activitiService;
@Mock
private HistoryService activitiHistoryService;
@Mock
private ManagementService activitiManagementService;
@Mock
private RepositoryService activitiRepositoryService;
@Mock
private RuntimeService activitiRuntimeService;
@Mock
private ConfigurationHelper configurationHelper;
@Before
public void before()
{
initMocks(this);
}
@Test
public void testGetProcessDefinitionById()
{
String processDefinitionId = "processDefinitionId";
ProcessDefinitionQuery processDefinitionQuery = mock(ProcessDefinitionQuery.class);
when(activitiRepositoryService.createProcessDefinitionQuery()).thenReturn(processDefinitionQuery);
when(processDefinitionQuery.processDefinitionId(processDefinitionId)).thenReturn(processDefinitionQuery);
ProcessDefinition expectedProcessDefinition = mock(ProcessDefinition.class);
when(processDefinitionQuery.singleResult()).thenReturn(expectedProcessDefinition);
ProcessDefinition actualProcessDefinition = activitiService.getProcessDefinitionById(processDefinitionId);
assertSame(expectedProcessDefinition, actualProcessDefinition);
InOrder inOrder = inOrder(processDefinitionQuery);
inOrder.verify(processDefinitionQuery).processDefinitionId(processDefinitionId);
inOrder.verify(processDefinitionQuery).singleResult();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testStartProcessInstanceByProcessDefinitionId()
{
String processDefinitionId = "processDefinitionId";
Map<String, Object> variables = new HashMap<>();
ProcessInstance expectedProcessInstance = mock(ProcessInstance.class);
when(configurationHelper.getProperty(ConfigurationValue.HERD_ENVIRONMENT)).thenReturn("DEV");
when(activitiRuntimeService.startProcessInstanceById(processDefinitionId, variables)).thenReturn(expectedProcessInstance);
ProcessInstance actualProcessInstance = activitiService.startProcessInstanceByProcessDefinitionId(processDefinitionId, variables);
assertSame(expectedProcessInstance, actualProcessInstance);
verify(activitiRuntimeService).startProcessInstanceById(processDefinitionId, variables);
verifyNoMoreInteractions(activitiRuntimeService);
}
@Test
public void testGetProcessInstanceById()
{
String processInstanceId = "processInstanceId";
ProcessInstanceQuery processInstanceQuery = mock(ProcessInstanceQuery.class);
when(activitiRuntimeService.createProcessInstanceQuery()).thenReturn(processInstanceQuery);
when(processInstanceQuery.processInstanceId(processInstanceId)).thenReturn(processInstanceQuery);
when(processInstanceQuery.includeProcessVariables()).thenReturn(processInstanceQuery);
ProcessInstance expectedProcessInstance = mock(ProcessInstance.class);
when(processInstanceQuery.singleResult()).thenReturn(expectedProcessInstance);
ProcessInstance actualProcessInstance = activitiService.getProcessInstanceById(processInstanceId);
assertSame(expectedProcessInstance, actualProcessInstance);
InOrder inOrder = inOrder(processInstanceQuery);
inOrder.verify(processInstanceQuery).processInstanceId(processInstanceId);
inOrder.verify(processInstanceQuery).includeProcessVariables();
inOrder.verify(processInstanceQuery).singleResult();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testGetHistoricProcessInstanceByProcessInstanceId()
{
String processInstanceId = "processInstanceId";
HistoricProcessInstanceQuery historicProcessInstanceQuery = mock(HistoricProcessInstanceQuery.class);
when(activitiHistoryService.createHistoricProcessInstanceQuery()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.processInstanceId(processInstanceId)).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.includeProcessVariables()).thenReturn(historicProcessInstanceQuery);
HistoricProcessInstance expectedHistoricProcessInstance = mock(HistoricProcessInstance.class);
when(historicProcessInstanceQuery.singleResult()).thenReturn(expectedHistoricProcessInstance);
HistoricProcessInstance actualHistoricProcessInstance = activitiService.getHistoricProcessInstanceByProcessInstanceId(processInstanceId);
assertSame(expectedHistoricProcessInstance, actualHistoricProcessInstance);
InOrder inOrder = inOrder(historicProcessInstanceQuery);
inOrder.verify(historicProcessInstanceQuery).processInstanceId(processInstanceId);
inOrder.verify(historicProcessInstanceQuery).includeProcessVariables();
inOrder.verify(historicProcessInstanceQuery).singleResult();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testGetHistoricActivityInstancesByProcessInstanceId()
{
String processInstanceId = "processInstanceId";
HistoricActivityInstanceQuery historicActivityInstanceQuery = mock(HistoricActivityInstanceQuery.class);
when(activitiHistoryService.createHistoricActivityInstanceQuery()).thenReturn(historicActivityInstanceQuery);
when(historicActivityInstanceQuery.processInstanceId(processInstanceId)).thenReturn(historicActivityInstanceQuery);
when(historicActivityInstanceQuery.orderByHistoricActivityInstanceStartTime()).thenReturn(historicActivityInstanceQuery);
when(historicActivityInstanceQuery.asc()).thenReturn(historicActivityInstanceQuery);
when(historicActivityInstanceQuery.orderByHistoricActivityInstanceEndTime()).thenReturn(historicActivityInstanceQuery);
when(historicActivityInstanceQuery.asc()).thenReturn(historicActivityInstanceQuery);
List<HistoricActivityInstance> expectedHistoricActivityInstances = new ArrayList<>();
when(historicActivityInstanceQuery.list()).thenReturn(expectedHistoricActivityInstances);
List<HistoricActivityInstance> actualHistoricActivityInstances = activitiService.getHistoricActivityInstancesByProcessInstanceId(processInstanceId);
assertSame(expectedHistoricActivityInstances, actualHistoricActivityInstances);
InOrder inOrder = inOrder(historicActivityInstanceQuery);
inOrder.verify(historicActivityInstanceQuery).processInstanceId(processInstanceId);
inOrder.verify(historicActivityInstanceQuery).orderByHistoricActivityInstanceStartTime();
inOrder.verify(historicActivityInstanceQuery).asc();
inOrder.verify(historicActivityInstanceQuery).orderByHistoricActivityInstanceEndTime();
inOrder.verify(historicActivityInstanceQuery).asc();
inOrder.verify(historicActivityInstanceQuery).list();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testGetJobsWithExceptionByProcessInstanceId()
{
String processInstanceId = "processInstanceId";
JobQuery jobQuery = mock(JobQuery.class);
when(activitiManagementService.createJobQuery()).thenReturn(jobQuery);
when(jobQuery.withException()).thenReturn(jobQuery);
when(jobQuery.processInstanceId(processInstanceId)).thenReturn(jobQuery);
List<Job> expectedJobs = new ArrayList<>();
when(jobQuery.list()).thenReturn(expectedJobs);
List<Job> actualJobs = activitiService.getJobsWithExceptionByProcessInstanceId(processInstanceId);
assertSame(expectedJobs, actualJobs);
InOrder inOrder = inOrder(jobQuery);
inOrder.verify(jobQuery).withException();
inOrder.verify(jobQuery).processInstanceId(processInstanceId);
inOrder.verify(jobQuery).list();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testGetJobExceptionStacktrace()
{
String jobId = "jobId";
String expectedResult = "expectedResult";
when(activitiManagementService.getJobExceptionStacktrace(jobId)).thenReturn(expectedResult);
String actualResult = activitiService.getJobExceptionStacktrace(jobId);
assertSame(expectedResult, actualResult);
verify(activitiManagementService).getJobExceptionStacktrace(jobId);
verifyNoMoreInteractions(activitiManagementService);
}
@Test
public void testGetProcessDefinitionsByIds()
{
Set<String> processDefinitionIds = new HashSet<>();
ProcessDefinitionQuery processDefinitionQuery = mock(ProcessDefinitionQuery.class);
when(activitiRepositoryService.createProcessDefinitionQuery()).thenReturn(processDefinitionQuery);
when(processDefinitionQuery.processDefinitionIds(processDefinitionIds)).thenReturn(processDefinitionQuery);
List<ProcessDefinition> expectedProcessDefinitions = new ArrayList<>();
when(processDefinitionQuery.list()).thenReturn(expectedProcessDefinitions);
List<ProcessDefinition> actualProcessDefinitions = activitiService.getProcessDefinitionsByIds(processDefinitionIds);
assertSame(expectedProcessDefinitions, actualProcessDefinitions);
InOrder inOrder = inOrder(processDefinitionQuery);
inOrder.verify(processDefinitionQuery).processDefinitionIds(processDefinitionIds);
inOrder.verify(processDefinitionQuery).list();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testGetJobsWithExceptionCountByProcessInstanceId()
{
String processInstanceId = "processInstanceId";
JobQuery jobQuery = mock(JobQuery.class);
when(activitiManagementService.createJobQuery()).thenReturn(jobQuery);
when(jobQuery.withException()).thenReturn(jobQuery);
when(jobQuery.processInstanceId(processInstanceId)).thenReturn(jobQuery);
long expectedResult = 1234l;
when(jobQuery.count()).thenReturn(expectedResult);
long actualResult = activitiService.getJobsWithExceptionCountByProcessInstanceId(processInstanceId);
assertEquals(expectedResult, actualResult);
InOrder inOrder = inOrder(jobQuery);
inOrder.verify(jobQuery).withException();
inOrder.verify(jobQuery).processInstanceId(processInstanceId);
inOrder.verify(jobQuery).count();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testGetHistoricProcessInstancesByStatusAndProcessDefinitionKeys()
{
JobStatusEnum jobStatus = JobStatusEnum.RUNNING;
Collection<String> processDefinitionKeys = new ArrayList<>();
DateTime startTime = new DateTime();
DateTime endTime = new DateTime();
HistoricProcessInstanceQuery historicProcessInstanceQuery = mock(HistoricProcessInstanceQuery.class);
when(activitiHistoryService.createHistoricProcessInstanceQuery()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys))).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.unfinished()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.startedAfter(startTime.toDate())).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.finishedBefore(endTime.toDate())).thenReturn(historicProcessInstanceQuery);
List<HistoricProcessInstance> expectedHistoricProcessInstances = new ArrayList<>();
when(historicProcessInstanceQuery.list()).thenReturn(expectedHistoricProcessInstances);
List<HistoricProcessInstance> actualHistoricProcessInstance =
activitiService.getHistoricProcessInstancesByStatusAndProcessDefinitionKeys(jobStatus, processDefinitionKeys, startTime, endTime);
assertSame(expectedHistoricProcessInstances, actualHistoricProcessInstance);
InOrder inOrder = inOrder(historicProcessInstanceQuery);
inOrder.verify(historicProcessInstanceQuery).processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys));
inOrder.verify(historicProcessInstanceQuery).unfinished();
inOrder.verify(historicProcessInstanceQuery).startedAfter(startTime.toDate());
inOrder.verify(historicProcessInstanceQuery).finishedBefore(endTime.toDate());
inOrder.verify(historicProcessInstanceQuery).list();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testGetHistoricProcessInstancesByStatusAndProcessDefinitionKeysWhenStatusCompleted()
{
JobStatusEnum jobStatus = JobStatusEnum.COMPLETED;
Collection<String> processDefinitionKeys = new ArrayList<>();
DateTime startTime = new DateTime();
DateTime endTime = new DateTime();
HistoricProcessInstanceQuery historicProcessInstanceQuery = mock(HistoricProcessInstanceQuery.class);
when(activitiHistoryService.createHistoricProcessInstanceQuery()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys))).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.unfinished()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.startedAfter(startTime.toDate())).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.finishedBefore(endTime.toDate())).thenReturn(historicProcessInstanceQuery);
List<HistoricProcessInstance> expectedHistoricProcessInstances = new ArrayList<>();
when(historicProcessInstanceQuery.list()).thenReturn(expectedHistoricProcessInstances);
List<HistoricProcessInstance> actualHistoricProcessInstance =
activitiService.getHistoricProcessInstancesByStatusAndProcessDefinitionKeys(jobStatus, processDefinitionKeys, startTime, endTime);
assertSame(expectedHistoricProcessInstances, actualHistoricProcessInstance);
InOrder inOrder = inOrder(historicProcessInstanceQuery);
inOrder.verify(historicProcessInstanceQuery).processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys));
inOrder.verify(historicProcessInstanceQuery).finished();
inOrder.verify(historicProcessInstanceQuery).startedAfter(startTime.toDate());
inOrder.verify(historicProcessInstanceQuery).finishedBefore(endTime.toDate());
inOrder.verify(historicProcessInstanceQuery).list();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testGetHistoricProcessInstancesByStatusAndProcessDefinitionKeysWhenStatusNotSpecified()
{
JobStatusEnum jobStatus = null;
Collection<String> processDefinitionKeys = new ArrayList<>();
DateTime startTime = new DateTime();
DateTime endTime = new DateTime();
HistoricProcessInstanceQuery historicProcessInstanceQuery = mock(HistoricProcessInstanceQuery.class);
when(activitiHistoryService.createHistoricProcessInstanceQuery()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys))).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.unfinished()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.startedAfter(startTime.toDate())).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.finishedBefore(endTime.toDate())).thenReturn(historicProcessInstanceQuery);
List<HistoricProcessInstance> expectedHistoricProcessInstances = new ArrayList<>();
when(historicProcessInstanceQuery.list()).thenReturn(expectedHistoricProcessInstances);
List<HistoricProcessInstance> actualHistoricProcessInstance =
activitiService.getHistoricProcessInstancesByStatusAndProcessDefinitionKeys(jobStatus, processDefinitionKeys, startTime, endTime);
assertSame(expectedHistoricProcessInstances, actualHistoricProcessInstance);
InOrder inOrder = inOrder(historicProcessInstanceQuery);
inOrder.verify(historicProcessInstanceQuery).processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys));
inOrder.verify(historicProcessInstanceQuery).startedAfter(startTime.toDate());
inOrder.verify(historicProcessInstanceQuery).finishedBefore(endTime.toDate());
inOrder.verify(historicProcessInstanceQuery).list();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testGetHistoricProcessInstancesByStatusAndProcessDefinitionKeysWhenStartTimeNotSpecified()
{
JobStatusEnum jobStatus = JobStatusEnum.RUNNING;
Collection<String> processDefinitionKeys = new ArrayList<>();
DateTime startTime = null;
DateTime endTime = new DateTime();
HistoricProcessInstanceQuery historicProcessInstanceQuery = mock(HistoricProcessInstanceQuery.class);
when(activitiHistoryService.createHistoricProcessInstanceQuery()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys))).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.unfinished()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.finishedBefore(endTime.toDate())).thenReturn(historicProcessInstanceQuery);
List<HistoricProcessInstance> expectedHistoricProcessInstances = new ArrayList<>();
when(historicProcessInstanceQuery.list()).thenReturn(expectedHistoricProcessInstances);
List<HistoricProcessInstance> actualHistoricProcessInstance =
activitiService.getHistoricProcessInstancesByStatusAndProcessDefinitionKeys(jobStatus, processDefinitionKeys, startTime, endTime);
assertSame(expectedHistoricProcessInstances, actualHistoricProcessInstance);
InOrder inOrder = inOrder(historicProcessInstanceQuery);
inOrder.verify(historicProcessInstanceQuery).processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys));
inOrder.verify(historicProcessInstanceQuery).unfinished();
inOrder.verify(historicProcessInstanceQuery).finishedBefore(endTime.toDate());
inOrder.verify(historicProcessInstanceQuery).list();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testGetHistoricProcessInstancesByStatusAndProcessDefinitionKeysWhenEndTimeNotSpecified()
{
JobStatusEnum jobStatus = JobStatusEnum.RUNNING;
Collection<String> processDefinitionKeys = new ArrayList<>();
DateTime startTime = new DateTime();
DateTime endTime = null;
HistoricProcessInstanceQuery historicProcessInstanceQuery = mock(HistoricProcessInstanceQuery.class);
when(activitiHistoryService.createHistoricProcessInstanceQuery()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys))).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.unfinished()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.startedAfter(startTime.toDate())).thenReturn(historicProcessInstanceQuery);
List<HistoricProcessInstance> expectedHistoricProcessInstances = new ArrayList<>();
when(historicProcessInstanceQuery.list()).thenReturn(expectedHistoricProcessInstances);
List<HistoricProcessInstance> actualHistoricProcessInstance =
activitiService.getHistoricProcessInstancesByStatusAndProcessDefinitionKeys(jobStatus, processDefinitionKeys, startTime, endTime);
assertSame(expectedHistoricProcessInstances, actualHistoricProcessInstance);
InOrder inOrder = inOrder(historicProcessInstanceQuery);
inOrder.verify(historicProcessInstanceQuery).processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys));
inOrder.verify(historicProcessInstanceQuery).unfinished();
inOrder.verify(historicProcessInstanceQuery).startedAfter(startTime.toDate());
inOrder.verify(historicProcessInstanceQuery).list();
inOrder.verifyNoMoreInteractions();
}
@Test
public void getHistoricProcessInstancesCountByStatusAndProcessDefinitionKeys()
{
JobStatusEnum jobStatus = JobStatusEnum.RUNNING;
Collection<String> processDefinitionKeys = new ArrayList<>();
DateTime startTime = new DateTime();
DateTime endTime = new DateTime();
HistoricProcessInstanceQuery historicProcessInstanceQuery = mock(HistoricProcessInstanceQuery.class);
when(activitiHistoryService.createHistoricProcessInstanceQuery()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys))).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.unfinished()).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.startedAfter(startTime.toDate())).thenReturn(historicProcessInstanceQuery);
when(historicProcessInstanceQuery.finishedBefore(endTime.toDate())).thenReturn(historicProcessInstanceQuery);
long expectedResult = 1234l;
when(historicProcessInstanceQuery.count()).thenReturn(expectedResult);
long actualResult =
activitiService.getHistoricProcessInstancesCountByStatusAndProcessDefinitionKeys(jobStatus, processDefinitionKeys, startTime, endTime);
assertEquals(expectedResult, actualResult);
InOrder inOrder = inOrder(historicProcessInstanceQuery);
inOrder.verify(historicProcessInstanceQuery).processDefinitionKeyIn(new ArrayList<>(processDefinitionKeys));
inOrder.verify(historicProcessInstanceQuery).unfinished();
inOrder.verify(historicProcessInstanceQuery).startedAfter(startTime.toDate());
inOrder.verify(historicProcessInstanceQuery).finishedBefore(endTime.toDate());
inOrder.verify(historicProcessInstanceQuery).count();
inOrder.verifyNoMoreInteractions();
}
@Test
public void getExecutionByProcessInstanceIdAndActivitiId()
{
String processInstanceId = "processInstanceId";
String activitiId = "activitiId";
ExecutionQuery executionQuery = mock(ExecutionQuery.class);
when(activitiRuntimeService.createExecutionQuery()).thenReturn(executionQuery);
when(executionQuery.processInstanceId(processInstanceId)).thenReturn(executionQuery);
when(executionQuery.activityId(activitiId)).thenReturn(executionQuery);
Execution expectedExecution = mock(Execution.class);
when(executionQuery.singleResult()).thenReturn(expectedExecution);
Execution actualExecution = activitiService.getExecutionByProcessInstanceIdAndActivitiId(processInstanceId, activitiId);
assertSame(expectedExecution, actualExecution);
InOrder inOrder = inOrder(executionQuery);
inOrder.verify(executionQuery).processInstanceId(processInstanceId);
inOrder.verify(executionQuery).activityId(activitiId);
inOrder.verify(executionQuery).singleResult();
inOrder.verifyNoMoreInteractions();
}
@Test
public void testSignal()
{
String executionId = "executionId";
Map<String, Object> processVariables = new HashMap<>();
activitiService.signal(executionId, processVariables);
verify(activitiRuntimeService).signal(executionId, processVariables);
verifyNoMoreInteractions(activitiRuntimeService);
}
@Test
public void getProcessModel()
{
String processDefinitionId = "processDefinitionId";
String expectedResult = "expectedResult";
InputStream inputStream = new ByteArrayInputStream(expectedResult.getBytes());
when(activitiRepositoryService.getProcessModel(processDefinitionId)).thenReturn(inputStream);
String actualResult = activitiService.getProcessModel(processDefinitionId);
assertEquals(expectedResult, actualResult);
verify(activitiRepositoryService).getProcessModel(processDefinitionId);
verifyNoMoreInteractions(activitiRepositoryService);
}
@Test
public void getProcessModelWhenIOExceptionThrown() throws Exception
{
String processDefinitionId = "processDefinitionId";
InputStream inputStream = mock(InputStream.class);
when(inputStream.read()).thenThrow(new IOException());
when(activitiRepositoryService.getProcessModel(processDefinitionId)).thenReturn(inputStream);
try
{
activitiService.getProcessModel(processDefinitionId);
fail();
}
catch (IllegalArgumentException illegalArgumentException)
{
assertSame(IOException.class, illegalArgumentException.getCause().getClass());
}
}
@Test
public void testDeleteProcessInstance()
{
String processInstanceId = "processInstanceId";
String deleteReason = "deleteReason";
activitiService.deleteProcessInstance(processInstanceId, deleteReason);
verify(activitiRuntimeService).deleteProcessInstance(processInstanceId, deleteReason);
}
}