package org.jbpm.services.task.query;
import static org.jbpm.query.QueryBuilderCoverageTestUtil.hackTheDatabaseMetadataLoggerBecauseTheresALogbackXmlInTheClasspath;
import static org.jbpm.query.QueryBuilderCoverageTestUtil.queryBuilderCoverageTest;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.jbpm.query.QueryBuilderCoverageTestUtil.ModuleSpecificInputFiller;
import org.jbpm.services.task.HumanTaskServiceFactory;
import org.jbpm.services.task.HumanTaskServicesBaseTest;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.kie.api.task.model.Status;
import org.kie.internal.task.api.InternalTaskService;
import org.kie.internal.task.api.model.SubTasksStrategy;
import org.kie.internal.task.api.model.TaskEvent.TaskEventType;
import org.kie.internal.task.query.TaskSummaryQueryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import bitronix.tm.resource.jdbc.PoolingDataSource;
public class TaskSummaryQueryBuilderCoverageTest extends HumanTaskServicesBaseTest {
private static final Logger logger = LoggerFactory.getLogger(TaskSummaryQueryBuilderCoverageTest.class);
private static PoolingDataSource pds;
private static EntityManagerFactory emf;
private InternalTaskService taskService;
@BeforeClass
public static void configure() {
pds = setupPoolingDataSource();
emf = Persistence.createEntityManagerFactory( "org.jbpm.services.task" );
hackTheDatabaseMetadataLoggerBecauseTheresALogbackXmlInTheClasspath();
}
@Before
public void setup() {
this.taskService = (InternalTaskService) HumanTaskServiceFactory.newTaskServiceConfigurator()
.entityManagerFactory(emf)
.getTaskService();
}
@AfterClass
public static void reset() {
if( emf != null ) {
emf.close();
emf = null;
}
if( pds != null ) {
pds.close();
pds = null;
}
}
private static ModuleSpecificInputFiller inputFiller = new ModuleSpecificInputFiller() {
private int taskQueryOrderBy = 0;
@Override
public Object fillInput( Class type ) {
if( type.equals(TaskSummaryQueryBuilder.OrderBy.class) ) {
int typeCase = taskQueryOrderBy++ % 6;
switch(typeCase) {
case 0:
return TaskSummaryQueryBuilder.OrderBy.createdBy;
case 1:
return TaskSummaryQueryBuilder.OrderBy.createdOn;
case 2:
return TaskSummaryQueryBuilder.OrderBy.processInstanceId;
case 3:
return TaskSummaryQueryBuilder.OrderBy.taskId;
case 4:
return TaskSummaryQueryBuilder.OrderBy.taskName;
case 5:
return TaskSummaryQueryBuilder.OrderBy.taskStatus;
}
} else if( type.isArray() ) {
Class elemType = type.getComponentType();
if( elemType.equals(TaskEventType.class) ) {
TaskEventType [] typeArr = {
TaskEventType.ACTIVATED,
TaskEventType.ADDED,
TaskEventType.CLAIMED
};
return typeArr;
} else if( elemType.equals(Status.class) ) {
Status [] statusArr = { Status.Completed, Status.Suspended };
return statusArr;
} else if( elemType.equals(SubTasksStrategy.class) ) {
SubTasksStrategy [] strategyArr = { SubTasksStrategy.EndParentOnAllSubTasksEnd, SubTasksStrategy.NoAction };
return strategyArr;
}
}
return null;
}
};
@Test
public void taskQueryBuilderCoverageTest() {
TaskSummaryQueryBuilder queryBuilder = taskService.taskSummaryQuery("userId");
Class builderClass = TaskSummaryQueryBuilder.class;
queryBuilderCoverageTest(queryBuilder, builderClass, inputFiller, "variableName", "variableValue" );
}
}