feat: add bit sample product metadata
parent
5987645a86
commit
fd654978e0
@ -0,0 +1,102 @@
|
||||
package cn.iocoder.yudao.module.erp.service.product;
|
||||
|
||||
import cn.iocoder.yudao.module.common.enums.CodeTypeEnum;
|
||||
import cn.iocoder.yudao.module.common.enums.QrcodeBizTypeEnum;
|
||||
import cn.iocoder.yudao.module.common.service.qrcordrecord.QrcodeRecordService;
|
||||
import cn.iocoder.yudao.module.erp.controller.admin.autocode.util.AutoCodeUtil;
|
||||
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductSaveReqVO;
|
||||
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
|
||||
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
|
||||
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
|
||||
import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductCategoryMapper;
|
||||
import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
/**
|
||||
* {@link ErpProductServiceImpl} 的单元测试类
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ErpProductServiceImplTest {
|
||||
|
||||
@InjectMocks
|
||||
private ErpProductServiceImpl productService;
|
||||
|
||||
@Mock
|
||||
private ErpProductMapper productMapper;
|
||||
@Mock
|
||||
private ErpProductCategoryMapper productCategoryMapper;
|
||||
@Mock
|
||||
private ErpProductUnitService productUnitService;
|
||||
@Mock
|
||||
private QrcodeRecordService qrcodeService;
|
||||
@Mock
|
||||
private AutoCodeUtil autoCodeUtil;
|
||||
|
||||
@Test
|
||||
void createProduct_whenBitSampleAndNoCode_generatesSampleCodeAndStoresMetadata() throws Exception {
|
||||
ProductSaveReqVO reqVO = new ProductSaveReqVO();
|
||||
reqVO.setName("BIT 样品");
|
||||
reqVO.setBarCode(null);
|
||||
reqVO.setIsSample(true);
|
||||
reqVO.setSampleCategory("CUSTOMER_SAMPLE");
|
||||
reqVO.setBizUnit("BIT");
|
||||
reqVO.setCustomerId(1001L);
|
||||
reqVO.setCustomerName("ACME HK");
|
||||
reqVO.setCategoryId(10L);
|
||||
reqVO.setUnitId(20L);
|
||||
reqVO.setStatus(0);
|
||||
reqVO.setStandard("STD-1");
|
||||
|
||||
ErpProductUnitDO unit = new ErpProductUnitDO();
|
||||
unit.setId(20L);
|
||||
unit.setName("PCS");
|
||||
when(productUnitService.getProductUnit(20L)).thenReturn(unit);
|
||||
|
||||
ErpProductCategoryDO category = new ErpProductCategoryDO();
|
||||
category.setId(10L);
|
||||
category.setName("测试分类");
|
||||
category.setCode("CAT");
|
||||
when(productCategoryMapper.selectById(10L)).thenReturn(category);
|
||||
|
||||
when(productMapper.selectProductExist(any(ErpProductDO.class))).thenReturn(false);
|
||||
when(autoCodeUtil.genSerialCode("BIT_SAMPLE_CODE", null)).thenReturn("SP202606220001");
|
||||
when(autoCodeUtil.queryCodeType("BIT_SAMPLE_CODE")).thenReturn(CodeTypeEnum.QR);
|
||||
when(productMapper.insert(any(ErpProductDO.class))).thenAnswer(invocation -> {
|
||||
ErpProductDO product = invocation.getArgument(0);
|
||||
product.setId(100L);
|
||||
return 1;
|
||||
});
|
||||
|
||||
Long id = productService.createProduct(reqVO);
|
||||
|
||||
assertEquals(100L, id);
|
||||
ArgumentCaptor<ErpProductDO> productCaptor = ArgumentCaptor.forClass(ErpProductDO.class);
|
||||
verify(productMapper).insert(productCaptor.capture());
|
||||
ErpProductDO product = productCaptor.getValue();
|
||||
assertTrue(product.getIsSample());
|
||||
assertEquals("CUSTOMER_SAMPLE", product.getSampleCategory());
|
||||
assertEquals("BIT", product.getBizUnit());
|
||||
assertEquals(1001L, product.getCustomerId());
|
||||
assertEquals("ACME HK", product.getCustomerName());
|
||||
assertEquals("SP202606220001", product.getBarCode());
|
||||
|
||||
verify(qrcodeService).generateOrRefresh(
|
||||
eq(QrcodeBizTypeEnum.PRODUCT),
|
||||
eq(100L),
|
||||
eq("SP202606220001"),
|
||||
eq("DETAIL"),
|
||||
eq(CodeTypeEnum.QR));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue