Created
March 24, 2012 13:41
-
-
Save henryyan/2182973 to your computer and use it in GitHub Desktop.
LeaveWorkflowTestUT
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 请假流程测试 | |
* | |
* @author HenryYan | |
* | |
*/ | |
public class LeaveWorkflowTestUT extends BaseWorkflowTest { | |
@Autowired | |
LeaveWorkflowService workflowService; | |
@Before | |
public void setUp() throws Exception { | |
PropertyFileUtil.init(); | |
String filePath = getProcessDefinitionXmlDir() + "oa/leave/leave.bpmn20.xml"; | |
deployprocessDefinition(filePath); | |
deleteFromTables("OA_LEAVE"); | |
} | |
@Test | |
public void verifyProcess() { | |
List<ProcessDefinition> list = repositoryService.createProcessDefinitionQuery().processDefinitionKey("leave").list(); | |
Assert.assertEquals(1, list.size()); | |
} | |
/** | |
* 通过审核流程|正常流程 | |
* @throws Exception | |
*/ | |
@Test | |
public void pass() throws Exception { | |
Leave entity = new Leave(); | |
setLeaveData(entity); | |
User user = UserUtil.getUserFromMemoryCache(4l, true); | |
Map<String, Object> startWorkflow = workflowService.startWorkflow(entity, user); | |
assertNotNull(startWorkflow); | |
workflowService.getEntityManager().flush(); | |
Assert.assertEquals(1, countRowsInTable("OA_LEAVE")); | |
// 验证是否启动成功 | |
String businessKey = entity.getId().toString(); | |
long runtimeCounter = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(businessKey).count(); | |
Assert.assertEquals(1, runtimeCounter); | |
// 领导审核 | |
Task task = taskService.createTaskQuery() | |
.processDefinitionKey(WorkflowUtils.getWorkflowProcessId(JoyingWorkflowConstants.MODULE_OA, workflowService.getProcessDefKey())) | |
.taskCandidateUser("3").singleResult(); | |
assertNotNull(task); | |
HashMap<String, Object> variables = new HashMap<String, Object>(); | |
variables.put("approved", "true"); | |
variables.put("applyer", entity.getUserId().toString()); | |
taskService.complete(task.getId(), variables); | |
// 销假 | |
task = taskService.createTaskQuery() | |
.processDefinitionKey(WorkflowUtils.getWorkflowProcessId(JoyingWorkflowConstants.MODULE_OA, workflowService.getProcessDefKey())) | |
.taskAssignee("4").singleResult(); | |
taskService.complete(task.getId(), new HashMap<String, Object>()); | |
// 验证是否已结束|runtime没有数据,history有已经结束的数据 | |
verifyEndProcess(businessKey); | |
} | |
/** | |
* 中间出现了领导拒绝然后再重新申请 | |
* @throws Exception | |
*/ | |
@Test | |
public void unpassAndReapply() throws Exception { | |
Leave entity = new Leave(); | |
setLeaveData(entity); | |
User user = UserUtil.getUserFromMemoryCache(4l, true); | |
Map<String, Object> startWorkflow = workflowService.startWorkflow(entity, user); | |
workflowService.getEntityManager().flush(); | |
Assert.assertEquals(1, countRowsInTable("OA_LEAVE")); | |
assertNotNull(startWorkflow); | |
// 领导审核 | |
String businessKey = entity.getId().toString(); | |
String workflowProcessId = WorkflowUtils.getWorkflowProcessId(JoyingWorkflowConstants.MODULE_OA, workflowService.getProcessDefKey()); | |
TaskQuery taskBillzheng = taskService.createTaskQuery().processDefinitionKey(workflowProcessId).taskCandidateUser("3"); | |
Assert.assertEquals(1, taskBillzheng.count()); | |
Task task = taskBillzheng.singleResult(); | |
assertNotNull(task); | |
HashMap<String, Object> variables = new HashMap<String, Object>(); | |
variables.put("approved", "false"); | |
variables.put("applyer", entity.getUserId().toString()); | |
workflowService.complete(task.getId(), user, variables); | |
Assert.assertEquals(0, taskBillzheng.count()); | |
// 重新申请 | |
task = taskService.createTaskQuery().processDefinitionKey(workflowProcessId).taskAssignee("4").singleResult(); | |
variables = new HashMap<String, Object>(); | |
variables.put("reApply", "true"); | |
workflowService.complete(task.getId(), user, variables); | |
// 领导审核 | |
taskBillzheng = taskService.createTaskQuery().processDefinitionKey(workflowProcessId).taskCandidateUser("3"); | |
Assert.assertEquals(1, taskBillzheng.count()); | |
task = taskBillzheng.singleResult(); | |
assertNotNull(task); | |
variables = new HashMap<String, Object>(); | |
variables.put("approved", "true"); | |
variables.put("applyer", entity.getUserId().toString()); | |
workflowService.complete(task.getId(), user, variables); | |
Assert.assertEquals(0, taskBillzheng.count()); | |
// 销假 | |
task = taskService.createTaskQuery() | |
.processDefinitionKey(WorkflowUtils.getWorkflowProcessId(JoyingWorkflowConstants.MODULE_OA, workflowService.getProcessDefKey())) | |
.taskAssignee("4").singleResult(); | |
taskService.complete(task.getId(), new HashMap<String, Object>()); | |
// 流程结束验证 | |
verifyEndProcess(businessKey); | |
} | |
/** | |
* 验证是否已结束|runtime没有数据,history有已经结束的数据 | |
*/ | |
protected void verifyEndProcess(String businessKey) { | |
long runtimeCounter = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(businessKey).count(); | |
Assert.assertEquals(0, runtimeCounter); | |
long historicCounter = historyService.createHistoricProcessInstanceQuery().finished().processInstanceBusinessKey(businessKey).count(); | |
Assert.assertEquals(1, historicCounter); | |
} | |
/** | |
* 删除流程 | |
* @throws Exception | |
*/ | |
@Test | |
public void deleteProcess() throws Exception { | |
Leave entity = new Leave(); | |
setLeaveData(entity); | |
User user = accountManager.getEntity(4l); | |
Map<String, Object> startWorkflow = workflowService.startWorkflow(entity, user); | |
workflowService.getEntityManager().flush(); | |
Assert.assertEquals(1, countRowsInTable("OA_LEAVE")); | |
assertNotNull(startWorkflow); | |
runtimeService.deleteProcessInstance(startWorkflow.get("pid").toString(), "测试"); | |
long count = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(entity.getId().toString()).count(); | |
Assert.assertEquals(0, count); | |
} | |
/** | |
* 设置测试数据 | |
* @param entity | |
*/ | |
private void setLeaveData(Leave entity) { | |
entity.setApplyTime(new Date()); | |
entity.setEndTime(new Date()); | |
entity.setStartTime(new Date()); | |
entity.setLeaveType("公休"); | |
entity.setReason("测试"); | |
entity.setUserId(4l); | |
entity.setUserName("Henry Yan"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment