package cn.iocoder.yudao.module.mes.service.md.autocode.strategy.impl;
|
|
import cn.iocoder.yudao.framework.test.core.ut.BaseRedisUnitTest;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.md.autocode.MesMdAutoCodePartDO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.md.autocode.MesMdAutoCodeRuleDO;
|
import cn.iocoder.yudao.module.mes.dal.redis.md.autocode.MesMdAutoCodeRedisDAO;
|
import cn.iocoder.yudao.module.mes.enums.md.autocode.MesMdAutoCodeCycleMethodEnum;
|
import cn.iocoder.yudao.module.mes.service.md.autocode.strategy.MesMdAutoCodeContext;
|
import jakarta.annotation.Resource;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.context.annotation.Import;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
/**
|
* {@link MesMdAutoCodeSerialNumberPartStrategy} 的单元测试
|
*
|
* @author 芋道源码
|
*/
|
@Import({MesMdAutoCodeSerialNumberPartStrategy.class, MesMdAutoCodeRedisDAO.class})
|
public class MesMdAutoCodeSerialNumberPartStrategyTest extends BaseRedisUnitTest {
|
|
@Resource
|
private MesMdAutoCodeSerialNumberPartStrategy strategy;
|
|
@Test
|
public void testGenerate_noCycle() {
|
// 准备参数
|
MesMdAutoCodePartDO part = new MesMdAutoCodePartDO().setLength(4).setSerialStartNo(1).setSerialStep(1).setCycleFlag(false);
|
MesMdAutoCodeRuleDO rule = new MesMdAutoCodeRuleDO().setId(1L);
|
MesMdAutoCodeContext context = new MesMdAutoCodeContext().setRule(rule);
|
|
// 调用
|
String result = strategy.generate(part, context);
|
// 断言
|
assertEquals("0001", result);
|
assertEquals(1, context.getSerialNo());
|
}
|
|
@Test
|
public void testGenerate_withCycleByDay() {
|
// 准备参数
|
MesMdAutoCodePartDO part = new MesMdAutoCodePartDO().setLength(4).setSerialStartNo(1).setSerialStep(1)
|
.setCycleFlag(true).setCycleMethod(MesMdAutoCodeCycleMethodEnum.DAY.getMethod());
|
MesMdAutoCodeRuleDO rule = new MesMdAutoCodeRuleDO().setId(2L);
|
MesMdAutoCodeContext context = new MesMdAutoCodeContext().setRule(rule);
|
|
// 调用
|
String result = strategy.generate(part, context);
|
// 断言
|
assertEquals("0001", result);
|
assertEquals(1, context.getSerialNo());
|
}
|
|
@Test
|
public void testGenerate_withCycleByInputChar() {
|
// 准备参数
|
MesMdAutoCodePartDO part = new MesMdAutoCodePartDO().setLength(4).setSerialStartNo(1).setSerialStep(1)
|
.setCycleFlag(true).setCycleMethod(MesMdAutoCodeCycleMethodEnum.INPUT_CHAR.getMethod());
|
MesMdAutoCodeRuleDO rule = new MesMdAutoCodeRuleDO().setId(3L);
|
MesMdAutoCodeContext context = new MesMdAutoCodeContext().setRule(rule).setInputChar("A");
|
|
// 调用
|
String result = strategy.generate(part, context);
|
// 断言
|
assertEquals("0001", result);
|
assertEquals(1, context.getSerialNo());
|
}
|
|
@Test
|
public void testGenerate_withStep() {
|
// 准备参数
|
MesMdAutoCodePartDO part = new MesMdAutoCodePartDO().setLength(4).setSerialStartNo(1).setSerialStep(5).setCycleFlag(false);
|
MesMdAutoCodeRuleDO rule = new MesMdAutoCodeRuleDO().setId(4L);
|
MesMdAutoCodeContext context1 = new MesMdAutoCodeContext().setRule(rule);
|
MesMdAutoCodeContext context2 = new MesMdAutoCodeContext().setRule(rule);
|
|
// 调用
|
String result1 = strategy.generate(part, context1);
|
String result2 = strategy.generate(part, context2);
|
// 断言
|
assertEquals("0001", result1);
|
assertEquals(1, context1.getSerialNo());
|
assertEquals("0006", result2);
|
assertEquals(6, context2.getSerialNo());
|
}
|
|
@Test
|
public void testGenerate_multipleCallsIncrement() {
|
// 准备参数
|
MesMdAutoCodePartDO part = new MesMdAutoCodePartDO().setLength(4).setSerialStartNo(1).setSerialStep(1).setCycleFlag(false);
|
MesMdAutoCodeRuleDO rule = new MesMdAutoCodeRuleDO().setId(5L);
|
MesMdAutoCodeContext context1 = new MesMdAutoCodeContext().setRule(rule);
|
MesMdAutoCodeContext context2 = new MesMdAutoCodeContext().setRule(rule);
|
|
// 调用
|
String result1 = strategy.generate(part, context1);
|
String result2 = strategy.generate(part, context2);
|
// 断言
|
assertEquals("0001", result1);
|
assertEquals("0002", result2);
|
}
|
|
}
|