package cn.iocoder.yudao.module.ums.service.application;
|
|
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
import cn.iocoder.yudao.module.ums.dal.dataobject.application.UmsApplicationDO;
|
import cn.iocoder.yudao.module.ums.dal.mysql.application.UmsApplicationMapper;
|
import org.flowable.engine.runtime.ProcessInstance;
|
import org.flowable.task.api.Task;
|
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 UmsApplicationApprovalValidatorTest extends BaseMockitoUnitTest {
|
@InjectMocks private UmsApplicationApprovalValidator validator;
|
@Mock private UmsApplicationMapper mapper;
|
@Mock private ProcessInstance instance;
|
@Mock private Task task;
|
|
@Test void requiresConfirmedFeeBeforeApproval() {
|
when(instance.getProcessDefinitionKey()).thenReturn("ums_membership_approve");
|
when(instance.getBusinessKey()).thenReturn("12");
|
when(mapper.selectById(12L)).thenReturn(new UmsApplicationDO());
|
assertThrows(RuntimeException.class, () -> validator.validate(1L, task, instance));
|
}
|
|
@Test void permitsExplicitUnpaid() {
|
when(instance.getProcessDefinitionKey()).thenReturn("ums_membership_approve");
|
when(instance.getBusinessKey()).thenReturn("12");
|
when(mapper.selectById(12L)).thenReturn(new UmsApplicationDO().setFeePaid(false));
|
assertDoesNotThrow(() -> validator.validate(1L, task, instance));
|
}
|
|
@Test void ignoresOtherProcesses() {
|
when(instance.getProcessDefinitionKey()).thenReturn("other");
|
validator.validate(1L, task, instance);
|
verifyNoInteractions(mapper);
|
}
|
|
@Test void permitsAutomaticSubmissionOfStarterNode() {
|
when(instance.getProcessDefinitionKey()).thenReturn("ums_membership_approve");
|
when(task.getTaskDefinitionKey()).thenReturn("StartUserNode");
|
validator.validate(1L, task, instance);
|
verifyNoInteractions(mapper);
|
}
|
}
|