package jnpf.dmsController; import jnpf.dmsEntity.wenjianbianhao.DmsFlowEventType; import jnpf.dmsEntity.wenjianbianhao.form.DmsFlowEventForm; import jnpf.dmsService.DmsWenjianBanbenService; import jnpf.exception.DataException; import jnpf.flowable.WorkFlowApi; import jnpf.flowable.entity.TaskEntity; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; class DmsWenjianBanbenControllerTest { private final DmsWenjianBanbenService service = mock(DmsWenjianBanbenService.class); private final WorkFlowApi workFlowApi = mock(WorkFlowApi.class); private final DmsWenjianBanbenController controller = new DmsWenjianBanbenController(service, workFlowApi); @Test void revisionEventUsesServerSideWorkflowState() throws DataException { DmsFlowEventForm form = form(DmsFlowEventType.END); TaskEntity task = new TaskEntity(); task.setId("task-1"); task.setStatus(2); when(workFlowApi.getInfoSubmit("task-1")).thenReturn(task); controller.syncRevisionAuditFlowEvent(form); verify(service).syncRevisionAuditFlow( "flow-1", "task-1", 2, DmsFlowEventType.END); } @Test void newAuditRejectsMismatchedTask() { DmsFlowEventForm form = form(DmsFlowEventType.START); TaskEntity task = new TaskEntity(); task.setId("another-task"); task.setStatus(1); when(workFlowApi.getInfoSubmit("task-1")).thenReturn(task); assertThrows(DataException.class, () -> controller.syncNewAuditFlowEvent(form)); } private DmsFlowEventForm form(DmsFlowEventType eventType) { DmsFlowEventForm form = new DmsFlowEventForm(); form.setFlowId("flow-1"); form.setTaskId("task-1"); form.setEventType(eventType); return form; } }