package jnpf.fileStorage.dms;
|
|
import jnpf.base.ActionResult;
|
import jnpf.base.ActionResultCode;
|
import jnpf.dms.DmsResourceApi;
|
import jnpf.dmsEntity.storage.enums.DmsWorkflowFileType;
|
import jnpf.dmsEntity.storage.form.DmsWorkflowFileActivateForm;
|
import jnpf.dmsEntity.storage.vo.DmsFileUploadVO;
|
import jnpf.dmsEntity.storage.vo.DmsWorkflowFileActivationVO;
|
import jnpf.exception.DataException;
|
import jnpf.flowable.WorkFlowApi;
|
import jnpf.flowable.entity.TaskEntity;
|
import jnpf.flowable.enums.TaskStatusEnum;
|
import org.junit.Before;
|
import org.junit.Test;
|
|
import java.util.UUID;
|
|
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertThrows;
|
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verifyNoInteractions;
|
import static org.mockito.Mockito.when;
|
|
public class DmsWorkflowFileActivateServiceTest {
|
private final WorkFlowApi workflowApi = mock(WorkFlowApi.class);
|
private final DmsResourceApi dmsResourceApi = mock(DmsResourceApi.class);
|
private final DmsWorkflowFileActivateService service =
|
new DmsWorkflowFileActivateService(workflowApi, dmsResourceApi);
|
private final DmsWorkflowFileActivateForm form = new DmsWorkflowFileActivateForm();
|
|
@Before
|
public void setUp() {
|
form.setSourceId("flow-1");
|
form.setTaskId("task-1");
|
form.setFileType(DmsWorkflowFileType.CREATE);
|
}
|
|
@Test
|
public void passedTaskActivatesAndReturnsResourceCenterFields() {
|
TaskEntity task = task(TaskStatusEnum.PASSED, "flow-1");
|
when(workflowApi.getInfoSubmit("task-1")).thenReturn(task);
|
UUID documentId = UUID.fromString("018f0000-0000-7000-8000-000000000901");
|
UUID versionId = UUID.fromString("018f0000-0000-7000-8000-000000000902");
|
DmsFileUploadVO file = new DmsFileUploadVO();
|
file.setDocumentId(documentId);
|
file.setFileVersionId(versionId);
|
file.setLifecycleStatus("EFFECTIVE");
|
when(dmsResourceApi.activateWorkflowFile("jnpf-file", form)).thenReturn(success(file));
|
|
DmsWorkflowFileActivationVO result = service.activate(form);
|
|
assertEquals(TaskStatusEnum.PASSED.getCode(), result.getFlowState());
|
assertEquals("已通过", result.getFlowStatus());
|
assertEquals(Boolean.TRUE, result.getCompleted());
|
assertEquals(documentId, result.getWenjianZhongxinWenjianId());
|
assertEquals(versionId, result.getWenjianZhongxinBanbenId());
|
assertEquals("flow-1", result.getFile().getSourceId());
|
verify(dmsResourceApi).activateWorkflowFile("jnpf-file", form);
|
}
|
|
@Test
|
public void runningTaskCannotCallDmsActivation() {
|
when(workflowApi.getInfoSubmit("task-1"))
|
.thenReturn(task(TaskStatusEnum.RUNNING, "flow-1"));
|
|
assertThrows(DataException.class, () -> service.activate(form));
|
|
verifyNoInteractions(dmsResourceApi);
|
}
|
|
@Test
|
public void taskMustBelongToSourceFlowId() {
|
when(workflowApi.getInfoSubmit("task-1"))
|
.thenReturn(task(TaskStatusEnum.PASSED, "other-flow"));
|
|
assertThrows(DataException.class, () -> service.activate(form));
|
|
verifyNoInteractions(dmsResourceApi);
|
}
|
|
@Test
|
public void failedDmsActivationDoesNotReturnCompletedResult() {
|
when(workflowApi.getInfoSubmit("task-1"))
|
.thenReturn(task(TaskStatusEnum.PASSED, "flow-1"));
|
ActionResult<DmsFileUploadVO> response = new ActionResult<>();
|
response.setCode(500);
|
response.setMsg("activation failed");
|
when(dmsResourceApi.activateWorkflowFile("jnpf-file", form)).thenReturn(response);
|
|
DataException exception = assertThrows(DataException.class, () -> service.activate(form));
|
|
assertFalse(exception.getMessage().isEmpty());
|
}
|
|
private TaskEntity task(TaskStatusEnum status, String flowId) {
|
TaskEntity task = new TaskEntity();
|
task.setId("task-1");
|
task.setFlowId(flowId);
|
task.setStatus(status.getCode());
|
return task;
|
}
|
|
private ActionResult<DmsFileUploadVO> success(DmsFileUploadVO file) {
|
ActionResult<DmsFileUploadVO> result = new ActionResult<>();
|
result.setCode(ActionResultCode.SUCCESS.getCode());
|
result.setData(file);
|
return result;
|
}
|
}
|