云
4 天以前 ccdebc5369c108e6616550bfbe1cd47ec1e05813
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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())));
    }
}