package cn.iocoder.yudao.module.mes.service.wm.returnsales; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesDO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.returnsales.MesWmReturnSalesLineDO; import cn.iocoder.yudao.module.mes.dal.mysql.wm.returnsales.MesWmReturnSalesMapper; import cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum; import cn.iocoder.yudao.module.mes.enums.wm.MesWmReturnSalesStatusEnum; import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService; import org.junit.jupiter.api.Test; import org.springframework.test.util.ReflectionTestUtils; import java.util.List; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.*; class ReturnSalesQualityGateTest { @Test void unqualifiedReturnDoesNotCreateInventoryTransaction() { var service = new MesWmReturnSalesServiceImpl(); var mapper = mock(MesWmReturnSalesMapper.class); var lines = mock(MesWmReturnSalesLineService.class); var details = mock(MesWmReturnSalesDetailService.class); var transactions = mock(MesWmTransactionService.class); ReflectionTestUtils.setField(service, "returnSalesMapper", mapper); ReflectionTestUtils.setField(service, "returnSalesLineService", lines); ReflectionTestUtils.setField(service, "returnSalesDetailService", details); ReflectionTestUtils.setField(service, "wmTransactionService", transactions); when(mapper.selectById(1L)).thenReturn(new MesWmReturnSalesDO().setId(1L).setStatus(MesWmReturnSalesStatusEnum.APPROVED.getStatus())); when(lines.getReturnSalesLineListByReturnId(1L)).thenReturn(List.of(new MesWmReturnSalesLineDO().setId(2L).setQualityStatus(MesWmQualityStatusEnum.FAIL.getStatus()))); when(details.getReturnSalesDetailListByReturnId(1L)).thenReturn(List.of()); assertThrows(RuntimeException.class, () -> service.stockReturnSales(1L)); verifyNoInteractions(transactions); } }