package cn.iocoder.yudao.module.wms.service.md.warehouse; import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; import cn.iocoder.yudao.module.wms.controller.admin.md.warehouse.vo.WmsWarehouseSaveReqVO; import cn.iocoder.yudao.module.wms.dal.dataobject.md.warehouse.WmsWarehouseDO; import cn.iocoder.yudao.module.wms.dal.mysql.md.warehouse.WmsWarehouseMapper; import cn.iocoder.yudao.module.wms.service.inventory.WmsInventoryService; import cn.iocoder.yudao.module.wms.service.order.check.WmsCheckOrderService; import cn.iocoder.yudao.module.wms.service.order.movement.WmsMovementOrderService; import cn.iocoder.yudao.module.wms.service.order.receipt.WmsReceiptOrderService; import cn.iocoder.yudao.module.wms.service.order.shipment.WmsShipmentOrderService; import jakarta.annotation.Resource; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Import; import org.springframework.test.context.bean.override.mockito.MockitoBean; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.WAREHOUSE_CODE_DUPLICATE; import static cn.iocoder.yudao.module.wms.enums.ErrorCodeConstants.WAREHOUSE_HAS_INVENTORY; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.mockito.Mockito.when; @Import(WmsWarehouseServiceImpl.class) public class WmsWarehouseServiceImplTest extends BaseDbUnitTest { @Resource private WmsWarehouseServiceImpl warehouseService; @Resource private WmsWarehouseMapper warehouseMapper; @MockitoBean private WmsInventoryService inventoryService; @MockitoBean private WmsReceiptOrderService receiptOrderService; @MockitoBean private WmsShipmentOrderService shipmentOrderService; @MockitoBean private WmsMovementOrderService movementOrderService; @MockitoBean private WmsCheckOrderService checkOrderService; @Test public void testCreateWarehouse_codeDuplicate() { // mock 数据 WmsWarehouseDO warehouse = createWarehouse("WH001", "成品仓"); warehouseMapper.insert(warehouse); // 调用,并断言 WmsWarehouseSaveReqVO reqVO = createWarehouseSaveReqVO(); assertServiceException(() -> warehouseService.createWarehouse(reqVO), WAREHOUSE_CODE_DUPLICATE); } @Test public void testUpdateWarehouse_codeDuplicate() { // mock 数据 WmsWarehouseDO warehouse = createWarehouse("WH001", "成品仓"); warehouseMapper.insert(warehouse); WmsWarehouseDO updateWarehouse = createWarehouse("WH002", "原料仓"); warehouseMapper.insert(updateWarehouse); // 调用,并断言 WmsWarehouseSaveReqVO reqVO = createWarehouseSaveReqVO(); reqVO.setId(updateWarehouse.getId()); assertServiceException(() -> warehouseService.updateWarehouse(reqVO), WAREHOUSE_CODE_DUPLICATE); } @Test public void testDeleteWarehouse_hasInventory() { // mock 数据 WmsWarehouseDO warehouse = createWarehouse(); warehouseMapper.insert(warehouse); when(inventoryService.getInventoryCountByWarehouseId(warehouse.getId())).thenReturn(1L); // 调用,并断言 assertServiceException(() -> warehouseService.deleteWarehouse(warehouse.getId()), WAREHOUSE_HAS_INVENTORY); assertNotNull(warehouseMapper.selectById(warehouse.getId())); } private static WmsWarehouseDO createWarehouse() { return createWarehouse("WH001", "成品仓"); } private static WmsWarehouseDO createWarehouse(String code, String name) { return WmsWarehouseDO.builder() .code(code) .name(name) .sort(1) .build(); } private static WmsWarehouseSaveReqVO createWarehouseSaveReqVO() { WmsWarehouseSaveReqVO reqVO = new WmsWarehouseSaveReqVO(); reqVO.setCode("WH001"); reqVO.setName("半成品仓"); reqVO.setSort(1); return reqVO; } }