package cn.iocoder.yudao.module.ums.service.application; import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; import cn.iocoder.yudao.module.bpm.service.task.BpmTaskService; import cn.iocoder.yudao.module.ums.dal.dataobject.application.UmsApplicationDO; import cn.iocoder.yudao.module.ums.dal.mysql.application.UmsApplicationMapper; import cn.iocoder.yudao.module.ums.enums.UmsApplicationStatusEnum; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; class UmsApplicationFeeConfirmationTest extends BaseMockitoUnitTest { @InjectMocks private UmsApplicationServiceImpl service; @Mock private UmsApplicationMapper mapper; @Mock private BpmTaskService taskService; @Test void nonAssigneeCannotConfirm() { when(mapper.selectById(1L)).thenReturn(new UmsApplicationDO() .setStatus(UmsApplicationStatusEnum.APPROVING.getStatus()).setProcessInstanceId("p1")); when(taskService.getTodoTask(9L, null, "p1")).thenReturn(null); assertThrows(RuntimeException.class, () -> service.confirmFee(1L, 9L, true)); verify(mapper, never()).update(any(), any()); } @Test void completedApplicationCannotBeChanged() { when(mapper.selectById(1L)).thenReturn(new UmsApplicationDO() .setStatus(UmsApplicationStatusEnum.APPROVED.getStatus()).setProcessInstanceId("p1")); assertFalse(service.canConfirmFee(1L, 9L)); verifyNoInteractions(taskService); } }