package cn.iocoder.yudao.module.mes.service.wm.productsales; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.productsales.MesWmProductSalesDetailDO; import org.junit.jupiter.api.Test; import java.math.BigDecimal; import java.util.List; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; class BagBusinessOutboundTest { @Test void businessCodeResolvesCanonicalBagForRepeatPick() { var f=new SalesPickingSelectionTest();f.setup(); when(f.bags.selectByScanCodeForUpdate("BUS-31")).thenReturn(f.b1); when(f.details.selectPickingByBatchCodeForUpdate("PRO-100")).thenReturn(List.of(new MesWmProductSalesDetailDO().setId(77L).setSalesId(11L).setBagCodeId(31L))); f.req.setScanType("BAG");f.req.setScanContent("BUS-31");f.req.setBagIds(null);f.req.setQuantity(BigDecimal.ONE); var result=f.service.scanProductSales(f.req);assertEquals(31L,result.getCodeId());assertTrue(result.getAlreadyScanned());assertEquals(77L,result.getDetailId());f.noInsert(); } @Test void palletPreviewCountsSelectableEffectiveBags() { var f=new SalesPickingSelectionTest();f.setup();f.b3.setStatus(30); var result=f.service.previewScan("SOURCE");assertEquals("PALLET",result.getScanType());assertEquals(BigDecimal.valueOf(2),result.getScanQuantity());assertEquals(2,result.getBags().size());f.noInsert(); } }