package com.norteksoft.wf.unit;
import java.util.Collection;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.unitils.database.annotations.Transactional;
import org.unitils.database.util.TransactionMode;
import org.unitils.spring.annotation.SpringApplicationContext;
import org.unitils.spring.annotation.SpringBeanByName;
import com.norteksoft.ems.entity.ExpenseReport;
import com.norteksoft.ems.service.ExpenseReportManager;
import com.norteksoft.mms.form.entity.FormControl;
import com.norteksoft.product.api.ApiFactory;
import com.norteksoft.product.api.entity.WorkflowDefinition;
import com.norteksoft.product.api.entity.WorkflowTask;
import com.norteksoft.product.util.ParameterUtils;
/**
* 表单和字段的api部署测试
* @author Administrator
*
*/
@Transactional(TransactionMode.ROLLBACK)
@SpringApplicationContext({"applicationContext-test.xml","applicationContext-memcache.xml"})
public class WorkflowFormServiceTest extends BaseWorkflowTestCase{
@SpringBeanByName
ExpenseReportManager expenseReportManager;
@Test
public void getFormIdByTask(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
// 提交第一环节任务
ApiFactory.getInstanceService().submitInstance("wf_test_8", dp);
WorkflowTask task=ApiFactory.getTaskService().getActiveTaskByLoginName(dp,"test2");
Assert.assertNotNull(task);
//根据task查询流程实例表单ID
Long formId=ApiFactory.getFormService().getFormIdByTask(task.getId());
Assert.assertNotNull(formId);
//根据formId查询所有表单字段
List<FormControl> file=ApiFactory.getFormService().getFormControls(formId);
Assert.assertNotNull(file);
}
@Test
public void getFormFlowableIdByTask(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
// 提交第一环节任务
ApiFactory.getInstanceService().submitInstance("wf_test_8", dp);
WorkflowTask task=ApiFactory.getTaskService().getActiveTaskByLoginName(dp,"test2");
Assert.assertNotNull(task);
//根据task查询业务实体的ID
Long formId=ApiFactory.getFormService().getFormFlowableIdByTask(task.getId());
Assert.assertNotNull(formId);
}
@Test
public void getFieldPermissionNotStartedOne(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
//流程还未启动时,根据流程编号查询第一环节的字段编辑权限,以JSON格式返回
String editRole=ApiFactory.getFormService().getFieldPermissionNotStarted("wf_test_8");
//名称必填,部门禁止编辑
Assert.assertNotNull(editRole);
}
@Test
public void getFieldPermissionNotStartedTwo(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
//流程还未启动时,根据流程编号和版本查询第一环节的字段编辑权限,以JSON格式返回
String editRole=ApiFactory.getFormService().getFieldPermissionNotStarted("wf_test_8",1);
//名称必填,部门禁止编辑
Assert.assertNotNull(editRole);
}
@Test
public void getNeedFillFieldsNotStartedOne(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
//流程还未启动时,根据流程编号查询第一环节的必填字段
Collection<String> editRole=ApiFactory.getFormService().getNeedFillFieldsNotStarted("wf_test_8");
//名称必填
Assert.assertNotNull(editRole);
}
@Test
public void getForbiddenFieldsNotStarted(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
//流程还未启动时,根据流程编号查询第一环节的禁止编辑的字段
Collection<String> editRole=ApiFactory.getFormService().getForbiddenFieldsNotStarted("wf_test_8");
//部门禁止编辑
Assert.assertNotNull(editRole);
}
@Test
public void getFieldPermissionNotStartedThree(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
WorkflowDefinition definition=ApiFactory.getDefinitionService().getEnabledHighestVersionWorkflowDefinition("wf_test_8");
Assert.assertNotNull(definition);
//流程还未启动时,根据流程的definitionId查询第一环节的字段编辑权限,以JSON格式返回
String editRole=ApiFactory.getFormService().getFieldPermissionNotStarted(definition.getId());
//名称必填,部门禁止编辑
Assert.assertNotNull(editRole);
}
@Test
public void getNeedFillFieldsNotStartedTwo(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
WorkflowDefinition definition=ApiFactory.getDefinitionService().getEnabledHighestVersionWorkflowDefinition("wf_test_8");
Assert.assertNotNull(definition);
//流程还未启动时,根据流程的definitionId查询第一环节的必填字段
Collection<String> editRole=ApiFactory.getFormService().getNeedFillFieldsNotStarted(definition.getId());
//名称必填
Assert.assertNotNull(editRole);
}
@Test
public void getForbiddenFieldsNotStartedTwo(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
WorkflowDefinition definition=ApiFactory.getDefinitionService().getEnabledHighestVersionWorkflowDefinition("wf_test_8");
Assert.assertNotNull(definition);
//流程还未启动时,根据流程的definitionId查询第一环节的禁止编辑的字段
Collection<String> editRole=ApiFactory.getFormService().getForbiddenFieldsNotStarted(definition.getId());
//部门禁止编辑
Assert.assertNotNull(editRole);
}
@Test
public void getFieldPermissionOne(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
// 提交第一环节任务
ApiFactory.getInstanceService().submitInstance("wf_test_8", dp);
WorkflowTask task=ApiFactory.getTaskService().getActiveTaskByLoginName(dp,"test2");
Assert.assertNotNull(task);
//查询流程中环节的字段编辑权限
String editRole=ApiFactory.getFormService().getFieldPermission(task.getId());
//名称必填,部门禁止编辑
Assert.assertNotNull(editRole);
}
@Test
public void getNeedFillFields(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
// 提交第一环节任务
ApiFactory.getInstanceService().submitInstance("wf_test_8", dp);
WorkflowTask task=ApiFactory.getTaskService().getActiveTaskByLoginName(dp,"test2");
Assert.assertNotNull(task);
//查询流程中环节的必填的字段
Collection<String> editRole=ApiFactory.getFormService().getNeedFillFields(task.getId());
//名称必填
Assert.assertNotNull(editRole);
}
@Test
public void getForbiddenFields(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
// 提交第一环节任务
ApiFactory.getInstanceService().submitInstance("wf_test_8", dp);
WorkflowTask task=ApiFactory.getTaskService().getActiveTaskByLoginName(dp,"test2");
Assert.assertNotNull(task);
//查询流程中环节的禁止编辑的字段
Collection<String> editRole=ApiFactory.getFormService().getForbiddenFields(task.getId());
//部门禁止编辑
Assert.assertNotNull(editRole);
}
@Test
public void getFieldPermissionTwo(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
// 提交第一环节任务
ApiFactory.getInstanceService().submitInstance("wf_test_8", dp);
WorkflowTask task=ApiFactory.getTaskService().getActiveTaskByLoginName(dp,"test2");
Assert.assertNotNull(task);
//所有字段可编辑状态信息查询
String editRole=ApiFactory.getFormService().getFieldPermission(false);
Assert.assertNotNull(editRole);
}
@Test
public void fillEntityByDefinitionOne(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
//标准表单 流程还未启动时,自动填写实体,在转向办理页面时,根据本环节定义的自动填写字段,来自动填充实体
ApiFactory.getFormService().fillEntityByDefinition(dp,"wf_test_8");
//在第一环节的自动填写字段中给name赋值“小明”
Assert.assertNotNull(dp.getName());
}
@Test
public void fillEntityByDefinitionTwo(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
//标准表单 流程还未启动时,自动填写实体,在转向办理页面时,根据本环节定义的自动填写字段,来自动填充实体
ApiFactory.getFormService().fillEntityByDefinition(dp,"wf_test_8",1);
//在第一环节的自动填写字段中给name赋值“小明”
Assert.assertNotNull(dp.getName());
}
@Test
public void fillEntityByTask(){
// 准备数据
deploy("wf_test_8.xml");
ParameterUtils.setParameters(getPrmt(1L, 65L, "test2", "test2"));
ExpenseReport dp = new ExpenseReport();
dp.setCompanyId(1L);
expenseReportManager.save(dp);
// 提交第一环节任务
ApiFactory.getInstanceService().submitInstance("wf_test_8", dp);
WorkflowTask task=ApiFactory.getTaskService().getActiveTaskByLoginName(dp,"test2");
Assert.assertNotNull(task);
//标准表单 自动填写实体,在转向办理页面时,根据本环节定义的自动填写字段,来自动填充实体
ApiFactory.getFormService().fillEntityByTask(dp,task.getId());
//在第一环节的自动填写字段中给name赋值“小明”
Assert.assertNotNull(dp.getDepartment());
}
}