package cn.iocoder.yudao.module.mes.service.wm.returnvendor;
|
|
import cn.iocoder.yudao.module.mes.controller.admin.wm.returnvendor.vo.detail.MesWmReturnVendorDetailSaveReqVO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorDetailDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnvendor.MesWmReturnVendorLineDO;
|
import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnvendor.MesWmReturnVendorDetailMapper;
|
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.mockito.Mock;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
import org.springframework.test.util.ReflectionTestUtils;
|
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
|
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
|
import static org.mockito.Mockito.*;
|
|
@ExtendWith(MockitoExtension.class)
|
class MesWmReturnVendorDetailStateTest {
|
|
private final MesWmReturnVendorDetailServiceImpl service = new MesWmReturnVendorDetailServiceImpl();
|
@Mock private MesWmReturnVendorDetailMapper mapper;
|
@Mock private MesWmReturnVendorLineService lineService;
|
@Mock private MesWmReturnVendorService returnVendorService;
|
|
@BeforeEach
|
void setUp() {
|
ReflectionTestUtils.setField(service, "returnVendorDetailMapper", mapper);
|
ReflectionTestUtils.setField(service, "returnVendorLineService", lineService);
|
ReflectionTestUtils.setField(service, "returnVendorService", returnVendorService);
|
}
|
|
@Test
|
void runningApprovalCannotEditDetail() {
|
when(lineService.validateReturnVendorLineExists(10L))
|
.thenReturn(new MesWmReturnVendorLineDO().setId(10L).setReturnId(8L));
|
when(returnVendorService.validateReturnVendorExists(8L))
|
.thenReturn(new MesWmReturnVendorDO().setId(8L).setCode("TEST-8").setStatus(1));
|
assertServiceException(() -> service.createReturnVendorDetail(req()),
|
WM_RETURN_VENDOR_DETAIL_STATUS_INVALID, "TEST-8");
|
verify(mapper, never()).insert(any(MesWmReturnVendorDetailDO.class));
|
}
|
|
@Test
|
void finishedDetailCannotBeDeleted() {
|
when(mapper.selectById(4L)).thenReturn(new MesWmReturnVendorDetailDO().setId(4L).setReturnId(8L));
|
when(returnVendorService.validateReturnVendorExists(8L))
|
.thenReturn(new MesWmReturnVendorDO().setId(8L).setCode("TEST-8").setStatus(4));
|
assertServiceException(() -> service.deleteReturnVendorDetail(4L),
|
WM_RETURN_VENDOR_DETAIL_STATUS_INVALID, "TEST-8");
|
verify(mapper, never()).deleteById(4L);
|
}
|
|
@Test
|
void pendingPickDetailCanBeDeleted() {
|
when(mapper.selectById(4L)).thenReturn(new MesWmReturnVendorDetailDO().setId(4L).setReturnId(8L));
|
when(returnVendorService.validateReturnVendorExists(8L))
|
.thenReturn(new MesWmReturnVendorDO().setId(8L).setStatus(2));
|
service.deleteReturnVendorDetail(4L);
|
verify(mapper).deleteById(4L);
|
}
|
|
@Test
|
void updateCannotMoveDetailToAnotherOrder() {
|
when(mapper.selectById(4L)).thenReturn(new MesWmReturnVendorDetailDO()
|
.setId(4L).setReturnId(8L).setLineId(10L));
|
MesWmReturnVendorDetailSaveReqVO req = req();
|
req.setId(4L);
|
req.setReturnId(9L);
|
assertServiceException(() -> service.updateReturnVendorDetail(req),
|
WM_RETURN_VENDOR_DETAIL_PARENT_IMMUTABLE);
|
verify(mapper, never()).updateById(any(MesWmReturnVendorDetailDO.class));
|
}
|
|
private MesWmReturnVendorDetailSaveReqVO req() {
|
MesWmReturnVendorDetailSaveReqVO req = new MesWmReturnVendorDetailSaveReqVO();
|
req.setReturnId(8L);
|
req.setLineId(10L);
|
return req;
|
}
|
}
|