package cn.iocoder.yudao.module.promotion.service.seckillconfig; import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO; import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO; import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO; import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig.SeckillConfigMapper; import cn.iocoder.yudao.module.promotion.service.seckill.SeckillConfigServiceImpl; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Import; import tools.jackson.core.JacksonException; import tools.jackson.databind.ObjectMapper; import jakarta.annotation.Resource; import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.SECKILL_CONFIG_NOT_EXISTS; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; /** * {@link SeckillConfigServiceImpl} 的单元测试类 * * @author 芋道源码 */ @Import(SeckillConfigServiceImpl.class) @Disabled // TODO 芋艿:未来开启;后续要 review 下 public class SeckillConfigServiceImplTest extends BaseDbUnitTest { @Resource private SeckillConfigServiceImpl SeckillConfigService; @Resource private SeckillConfigMapper seckillConfigMapper; @Resource private ObjectMapper objectMapper; @Test public void testJacksonSerializ() { // 准备参数 SeckillConfigCreateReqVO reqVO = randomPojo(SeckillConfigCreateReqVO.class); // ObjectMapper objectMapper = new ObjectMapper(); try { String string = objectMapper.writeValueAsString(reqVO); System.out.println(string); } catch (JacksonException e) { e.printStackTrace(); } } @Test public void testCreateSeckillConfig_success() { // 准备参数 SeckillConfigCreateReqVO reqVO = randomPojo(SeckillConfigCreateReqVO.class); // 调用 Long SeckillConfigId = SeckillConfigService.createSeckillConfig(reqVO); // 断言 assertNotNull(SeckillConfigId); // 校验记录的属性是否正确 SeckillConfigDO SeckillConfig = seckillConfigMapper.selectById(SeckillConfigId); assertPojoEquals(reqVO, SeckillConfig); } @Test public void testUpdateSeckillConfig_success() { // mock 数据 SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class); seckillConfigMapper.insert(dbSeckillConfig);// @Sql: 先插入出一条存在的数据 // 准备参数 SeckillConfigUpdateReqVO reqVO = randomPojo(SeckillConfigUpdateReqVO.class, o -> { o.setId(dbSeckillConfig.getId()); // 设置更新的 ID }); // 调用 SeckillConfigService.updateSeckillConfig(reqVO); // 校验是否更新正确 SeckillConfigDO SeckillConfig = seckillConfigMapper.selectById(reqVO.getId()); // 获取最新的 assertPojoEquals(reqVO, SeckillConfig); } @Test public void testUpdateSeckillConfig_notExists() { // 准备参数 SeckillConfigUpdateReqVO reqVO = randomPojo(SeckillConfigUpdateReqVO.class); // 调用, 并断言异常 assertServiceException(() -> SeckillConfigService.updateSeckillConfig(reqVO), SECKILL_CONFIG_NOT_EXISTS); } @Test public void testDeleteSeckillConfig_success() { // mock 数据 SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class); seckillConfigMapper.insert(dbSeckillConfig);// @Sql: 先插入出一条存在的数据 // 准备参数 Long id = dbSeckillConfig.getId(); // 调用 SeckillConfigService.deleteSeckillConfig(id); // 校验数据不存在了 assertNull(seckillConfigMapper.selectById(id)); } @Test public void testDeleteSeckillConfig_notExists() { // 准备参数 Long id = randomLongId(); // 调用, 并断言异常 assertServiceException(() -> SeckillConfigService.deleteSeckillConfig(id), SECKILL_CONFIG_NOT_EXISTS); } @Test @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 public void testGetSeckillConfigPage() { // mock 数据 // SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class, o -> { // 等会查询到 // o.setName(null); // o.setStartTime(null); // o.setEndTime(null); // o.setCreateTime(null); // }); // seckillConfigMapper.insert(dbSeckillConfig); // // 测试 name 不匹配 // seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setName(null))); // // 测试 startTime 不匹配 // seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setStartTime(null))); // // 测试 endTime 不匹配 // seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setEndTime(null))); // // 测试 createTime 不匹配 // seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setCreateTime(null))); // // 准备参数 // SeckillConfigPageReqVO reqVO = new SeckillConfigPageReqVO(); // reqVO.setName(null); //// reqVO.setStartTime((new LocalTime())); //// reqVO.setEndTime((new LocalTime[]{})); //// reqVO.setCreateTime((new Date[]{})); // // // 调用 // PageResult pageResult = SeckillConfigService.getSeckillConfigPage(reqVO); // // 断言 // assertEquals(1, pageResult.getTotal()); // assertEquals(1, pageResult.getList().size()); // assertPojoEquals(dbSeckillConfig, pageResult.getList().get(0)); } @Test @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 public void testGetSeckillConfigList() { // mock 数据 SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class, o -> { // 等会查询到 o.setName(null); o.setStartTime(null); o.setEndTime(null); o.setCreateTime(null); }); seckillConfigMapper.insert(dbSeckillConfig); // 测试 name 不匹配 seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setName(null))); // 测试 startTime 不匹配 seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setStartTime(null))); // 测试 endTime 不匹配 seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setEndTime(null))); // 测试 createTime 不匹配 seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setCreateTime(null))); // 准备参数 // SeckillConfigExportReqVO reqVO = new SeckillConfigExportReqVO(); // reqVO.setName(null); // reqVO.setStartTime((new LocalTime[]{})); // reqVO.setEndTime((new LocalTime[]{})); // reqVO.setCreateTime((new Date[]{})); // // // 调用 // List list = SeckillConfigService.getSeckillConfigList(reqVO); // // 断言 // assertEquals(1, list.size()); // assertPojoEquals(dbSeckillConfig, list.get(0)); } }