gaoluyang
3 天以前 8c65f898ed6e5b0c7a94c792c4562f6ec831dccd
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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;
    }
}