package org.activiti.rest.api.task;
import java.util.List;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.test.Deployment;
import org.activiti.rest.BaseRestTestCase;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.node.ObjectNode;
import org.restlet.representation.Representation;
import org.restlet.resource.ClientResource;
public class TaskOperationResourceTest extends BaseRestTestCase {
@Deployment
public void testClaimTask() throws Exception {
runtimeService.startProcessInstanceByKey("simpleProcess");
Task task = taskService.createTaskQuery().singleResult();
assertNotNull(task);
assertEquals("WaitTask", task.getName());
assertNull(task.getAssignee());
ClientResource client = getAuthenticatedClient("task/" + task.getId() + "/claim");
Representation response = client.put(null);
JsonNode responseNode = objectMapper.readTree(response.getStream());
assertNotNull(responseNode);
assertTrue(responseNode.get("success").getBooleanValue());
task = taskService.createTaskQuery().singleResult();
assertEquals("kermit", task.getAssignee());
taskService.complete(task.getId());
List<ProcessInstance> instanceList = runtimeService.createProcessInstanceQuery().list();
assertEquals(0, instanceList.size());
}
@Deployment
public void testCompleteTask() throws Exception {
ProcessInstance instance = runtimeService.startProcessInstanceByKey("simpleProcess");
Task task = taskService.createTaskQuery().singleResult();
assertNotNull(task);
assertEquals("WaitTask", task.getName());
ClientResource client = getAuthenticatedClient("task/" + task.getId() + "/complete");
ObjectNode varNode = objectMapper.createObjectNode();
varNode.put("myVar", "test");
Representation response = client.put(varNode);
JsonNode responseNode = objectMapper.readTree(response.getStream());
assertNotNull(responseNode);
assertTrue(responseNode.get("success").getBooleanValue());
task = taskService.createTaskQuery().singleResult();
assertNotNull(task);
assertEquals("AnotherTask", task.getName());
Object varValue = runtimeService.getVariable(instance.getId(), "myVar");
assertNotNull(varValue);
assertEquals("test", varValue);
taskService.complete(task.getId());
List<ProcessInstance> instanceList = runtimeService.createProcessInstanceQuery().list();
assertEquals(0, instanceList.size());
}
}