package cn.iocoder.yudao.module.srm.service.inquiry;
|
|
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
|
import cn.iocoder.yudao.module.srm.controller.admin.inquiry.vo.SrmInquiryConfirmReqVO;
|
import cn.iocoder.yudao.module.srm.dal.dataobject.SrmInquiryDO;
|
import cn.iocoder.yudao.module.srm.dal.mysql.SrmInquiryMapper;
|
import cn.iocoder.yudao.module.srm.enums.InquiryStatusEnum;
|
import org.junit.jupiter.api.Test;
|
import org.mockito.InjectMocks;
|
import org.mockito.Mock;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.mockito.ArgumentMatchers.*;
|
import static org.mockito.Mockito.*;
|
|
class SrmInquiryApprovalTest extends BaseMockitoUnitTest {
|
@InjectMocks private SrmInquiryServiceImpl service;
|
@Mock private SrmInquiryMapper mapper;
|
|
@Test void cannotConvertBeforeApproval() {
|
when(mapper.selectByIdForUpdate(1L)).thenReturn(new SrmInquiryDO().setId(1L).setStatus(InquiryStatusEnum.DRAFT.getStatus()));
|
SrmInquiryConfirmReqVO req = new SrmInquiryConfirmReqVO().setId(1L);
|
assertThrows(ServiceException.class, () -> service.confirmInquiry(req));
|
}
|
|
@Test void ignoresOldProcessAndAcceptsCurrentApproval() {
|
when(mapper.selectByIdForUpdate(1L)).thenReturn(new SrmInquiryDO().setId(1L)
|
.setStatus(InquiryStatusEnum.APPROVING.getStatus()).setProcessInstanceId("current"));
|
service.updateApprovalStatus(1L, "old", BpmProcessInstanceStatusEnum.APPROVE.getStatus());
|
verify(mapper, never()).updateById(any(SrmInquiryDO.class));
|
service.updateApprovalStatus(1L, "current", BpmProcessInstanceStatusEnum.APPROVE.getStatus());
|
verify(mapper).updateById(argThat((SrmInquiryDO update) -> InquiryStatusEnum.APPROVED.getStatus().equals(update.getStatus())));
|
}
|
}
|