package jnpf.fileStorage.dms; import jnpf.base.ActionResult; import jnpf.base.ActionResultCode; import jnpf.dms.DmsResourceApi; import jnpf.dmsEntity.print.form.DmsWorkflowPrintAuthorizeForm; import jnpf.dmsEntity.print.vo.DmsWorkflowPrintAuthorizationVO; import jnpf.exception.DataException; import jnpf.flowable.WorkFlowApi; import jnpf.flowable.entity.TaskEntity; import jnpf.flowable.enums.TaskStatusEnum; import org.junit.Test; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertThrows; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; public class DmsWorkflowPrintAuthorizeServiceTest { private final WorkFlowApi workFlowApi = mock(WorkFlowApi.class); private final DmsResourceApi dmsResourceApi = mock(DmsResourceApi.class); private final DmsWorkflowPrintAuthorizeService service = new DmsWorkflowPrintAuthorizeService(workFlowApi, dmsResourceApi); @Test public void delegatesApprovedRequestToDms() { DmsWorkflowPrintAuthorizeForm form = form(); when(workFlowApi.getInfoSubmit("task-1")).thenReturn(task(TaskStatusEnum.PASSED.getCode())); DmsWorkflowPrintAuthorizationVO authorization = new DmsWorkflowPrintAuthorizationVO(); authorization.setCompleted(Boolean.TRUE); ActionResult response = new ActionResult<>(); response.setCode(ActionResultCode.SUCCESS.getCode()); response.setData(authorization); when(dmsResourceApi.authorizeWorkflowPrint("jnpf-file", "audit-1", form)) .thenReturn(response); assertSame(authorization, service.authorize(form, "audit-1")); } @Test public void rejectsUnapprovedTaskBeforeCallingDms() { DmsWorkflowPrintAuthorizeForm form = form(); when(workFlowApi.getInfoSubmit("task-1")).thenReturn(task(TaskStatusEnum.RUNNING.getCode())); assertThrows(DataException.class, () -> service.authorize(form, null)); verify(dmsResourceApi, never()).authorizeWorkflowPrint( org.mockito.ArgumentMatchers.any(), org.mockito.ArgumentMatchers.any(), org.mockito.ArgumentMatchers.any()); } private DmsWorkflowPrintAuthorizeForm form() { DmsWorkflowPrintAuthorizeForm form = new DmsWorkflowPrintAuthorizeForm(); form.setSourceId("flow-1"); form.setTaskId("task-1"); return form; } private TaskEntity task(Integer status) { TaskEntity task = new TaskEntity(); task.setId("task-1"); task.setFlowId("flow-1"); task.setStatus(status); return task; } }