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.mes.service.wm.itemreceipt;
 
import cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEvent;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemreceipt.MesWmItemReceiptDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.itemreceipt.MesWmItemReceiptMapper;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmItemReceiptStatusEnum;
import cn.iocoder.yudao.module.mes.service.wm.itemreceipt.listener.MesWmItemReceiptStatusListener;
import org.junit.jupiter.api.Test;
import org.springframework.test.util.ReflectionTestUtils;
import static org.mockito.Mockito.*;
 
class MesWmItemReceiptStatusListenerTest {
    @Test void ignoresAnotherProcessWithSameBusinessKey() {
        var listener = new MesWmItemReceiptStatusListener();
        var mapper = mock(MesWmItemReceiptMapper.class);
        var service = mock(MesWmItemReceiptService.class);
        ReflectionTestUtils.setField(listener, "itemReceiptMapper", mapper);
        ReflectionTestUtils.setField(listener, "itemReceiptService", service);
        var receipt = new MesWmItemReceiptDO().setId(12L).setProcessInstanceId("receipt-process").setStatus(MesWmItemReceiptStatusEnum.APPROVING.getStatus());
        when(mapper.selectById(12L)).thenReturn(receipt);
        var event = new BpmProcessInstanceStatusEvent(this).setBusinessKey("12").setId("unrelated-process").setStatus(2);
        listener.onApplicationEvent(event);
        verifyNoInteractions(service);
    }
    @Test void updatesMatchingProcess() {
        var listener = new MesWmItemReceiptStatusListener();
        var mapper = mock(MesWmItemReceiptMapper.class);
        var service = mock(MesWmItemReceiptService.class);
        ReflectionTestUtils.setField(listener, "itemReceiptMapper", mapper);
        ReflectionTestUtils.setField(listener, "itemReceiptService", service);
        when(mapper.selectById(12L)).thenReturn(new MesWmItemReceiptDO().setId(12L).setProcessInstanceId("receipt-process").setStatus(MesWmItemReceiptStatusEnum.APPROVING.getStatus()));
        listener.onApplicationEvent(new BpmProcessInstanceStatusEvent(this).setBusinessKey("12").setId("receipt-process").setStatus(2));
        verify(service).updateItemReceiptAuditStatus(12L, 2);
    }
}