package cn.iocoder.yudao.module.erp.api.purchase; import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderItemDO; import cn.iocoder.yudao.module.erp.dal.mysql.purchase.ErpPurchaseOrderItemMapper; 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 java.math.BigDecimal; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.PURCHASE_ORDER_ITEM_RETURN_FAIL_IN_EXCEED; import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) class ErpPurchaseOrderReturnCountTest { @Mock private ErpPurchaseOrderItemMapper itemMapper; @Test void cumulativeReturnCannotExceedReceived() { ErpPurchaseOrderApiImpl api = new ErpPurchaseOrderApiImpl(); ReflectionTestUtils.setField(api, "purchaseOrderItemMapper", itemMapper); when(itemMapper.selectById(1L)).thenReturn(new ErpPurchaseOrderItemDO() .setId(1L).setProductId(1996L).setInCount(BigDecimal.valueOf(2)) .setReturnCount(BigDecimal.ONE)); assertServiceException(() -> api.updateOrderItemReturnCount(1L, BigDecimal.valueOf(2)), PURCHASE_ORDER_ITEM_RETURN_FAIL_IN_EXCEED, "产品ID:1996", BigDecimal.valueOf(2)); verify(itemMapper, never()).updateById(any(ErpPurchaseOrderItemDO.class)); } }