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); } }