From 24681c81c09022f584a57006f2534b5f74723414 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 30 六月 2026 09:27:31 +0800
Subject: [PATCH] 初始化项目
---
yudao-module-mall/yudao-module-promotion/src/test/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateServiceImplTest.java | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 102 insertions(+), 14 deletions(-)
diff --git a/yudao-module-mall/yudao-module-promotion/src/test/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateServiceImplTest.java b/yudao-module-mall/yudao-module-promotion/src/test/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateServiceImplTest.java
index 2f38628..1845be2 100644
--- a/yudao-module-mall/yudao-module-promotion/src/test/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateServiceImplTest.java
+++ b/yudao-module-mall/yudao-module-promotion/src/test/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateServiceImplTest.java
@@ -2,7 +2,10 @@
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.collection.ArrayUtils;
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
+import cn.iocoder.yudao.module.product.api.category.ProductCategoryApi;
+import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi;
import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplateCreateReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplatePageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.coupon.vo.template.CouponTemplateUpdateReqVO;
@@ -10,21 +13,23 @@
import cn.iocoder.yudao.module.promotion.dal.mysql.coupon.CouponTemplateMapper;
import cn.iocoder.yudao.module.promotion.enums.common.PromotionDiscountTypeEnum;
import cn.iocoder.yudao.module.promotion.enums.common.PromotionProductScopeEnum;
+import cn.iocoder.yudao.module.promotion.enums.coupon.CouponTakeTypeEnum;
import cn.iocoder.yudao.module.promotion.enums.coupon.CouponTemplateValidityTypeEnum;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Import;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
import jakarta.annotation.Resource;
import java.time.LocalDateTime;
+import java.util.function.Consumer;
-import static cn.hutool.core.util.RandomUtil.randomEle;
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
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.COUPON_TEMPLATE_NOT_ENOUGH;
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.COUPON_TEMPLATE_NOT_EXISTS;
import static org.junit.jupiter.api.Assertions.*;
@@ -33,7 +38,6 @@
*
* @author 鑺嬮亾婧愮爜
*/
-@Disabled // TODO 鑺嬭壙锛氬悗缁� fix 琛ュ厖鐨勫崟娴�
@Import(CouponTemplateServiceImpl.class)
public class CouponTemplateServiceImplTest extends BaseDbUnitTest {
@@ -43,13 +47,26 @@
@Resource
private CouponTemplateMapper couponTemplateMapper;
+ @MockitoBean
+ private ProductCategoryApi productCategoryApi;
+ @MockitoBean
+ private ProductSpuApi productSpuApi;
+
@Test
public void testCreateCouponTemplate_success() {
// 鍑嗗鍙傛暟
- CouponTemplateCreateReqVO reqVO = randomPojo(CouponTemplateCreateReqVO.class,
- o -> o.setProductScope(randomEle(PromotionProductScopeEnum.values()).getScope())
- .setValidityType(randomEle(CouponTemplateValidityTypeEnum.values()).getType())
- .setDiscountType(randomEle(PromotionDiscountTypeEnum.values()).getType()));
+ CouponTemplateCreateReqVO reqVO = randomPojo(CouponTemplateCreateReqVO.class, o -> {
+ o.setTotalCount(10);
+ o.setTakeLimitCount(2);
+ o.setTakeType(CouponTakeTypeEnum.USER.getType());
+ o.setProductScope(PromotionProductScopeEnum.ALL.getScope());
+ o.setProductScopeValues(null);
+ o.setValidityType(CouponTemplateValidityTypeEnum.TERM.getType());
+ o.setFixedStartTerm(0);
+ o.setFixedEndTerm(7);
+ o.setDiscountType(PromotionDiscountTypeEnum.PRICE.getType());
+ o.setDiscountPrice(100);
+ });
// 璋冪敤
Long couponTemplateId = couponTemplateService.createCouponTemplate(reqVO);
@@ -63,15 +80,21 @@
@Test
public void testUpdateCouponTemplate_success() {
// mock 鏁版嵁
- CouponTemplateDO dbCouponTemplate = randomPojo(CouponTemplateDO.class);
+ CouponTemplateDO dbCouponTemplate = randomCouponTemplateDO();
couponTemplateMapper.insert(dbCouponTemplate);// @Sql: 鍏堟彃鍏ュ嚭涓�鏉″瓨鍦ㄧ殑鏁版嵁
// 鍑嗗鍙傛暟
CouponTemplateUpdateReqVO reqVO = randomPojo(CouponTemplateUpdateReqVO.class, o -> {
o.setId(dbCouponTemplate.getId()); // 璁剧疆鏇存柊鐨� ID
- // 鍏跺畠閫氱敤瀛楁
- o.setProductScope(randomEle(PromotionProductScopeEnum.values()).getScope())
- .setValidityType(randomEle(CouponTemplateValidityTypeEnum.values()).getType())
- .setDiscountType(randomEle(PromotionDiscountTypeEnum.values()).getType());
+ o.setTotalCount(10);
+ o.setTakeLimitCount(2);
+ o.setTakeType(CouponTakeTypeEnum.USER.getType());
+ o.setProductScope(PromotionProductScopeEnum.ALL.getScope());
+ o.setProductScopeValues(null);
+ o.setValidityType(CouponTemplateValidityTypeEnum.TERM.getType());
+ o.setFixedStartTerm(0);
+ o.setFixedEndTerm(7);
+ o.setDiscountType(PromotionDiscountTypeEnum.PRICE.getType());
+ o.setDiscountPrice(100);
});
// 璋冪敤
@@ -84,16 +107,60 @@
@Test
public void testUpdateCouponTemplate_notExists() {
// 鍑嗗鍙傛暟
- CouponTemplateUpdateReqVO reqVO = randomPojo(CouponTemplateUpdateReqVO.class);
+ CouponTemplateUpdateReqVO reqVO = randomPojo(CouponTemplateUpdateReqVO.class, o -> o.setId(randomLongId()));
// 璋冪敤, 骞舵柇瑷�寮傚父
assertServiceException(() -> couponTemplateService.updateCouponTemplate(reqVO), COUPON_TEMPLATE_NOT_EXISTS);
}
@Test
+ public void testCreateCouponTemplate_takeLimitCountGreaterThanTotalCount() {
+ // 鍑嗗鍙傛暟
+ CouponTemplateCreateReqVO reqVO = randomPojo(CouponTemplateCreateReqVO.class, o -> {
+ o.setTotalCount(1);
+ o.setTakeLimitCount(2);
+ o.setTakeType(CouponTakeTypeEnum.USER.getType());
+ o.setProductScope(PromotionProductScopeEnum.ALL.getScope());
+ o.setProductScopeValues(null);
+ o.setValidityType(CouponTemplateValidityTypeEnum.TERM.getType());
+ o.setFixedStartTerm(0);
+ o.setFixedEndTerm(7);
+ o.setDiscountType(PromotionDiscountTypeEnum.PRICE.getType());
+ o.setDiscountPrice(100);
+ });
+
+ // 璋冪敤锛屽苟鏂█
+ assertServiceException(() -> couponTemplateService.createCouponTemplate(reqVO), COUPON_TEMPLATE_NOT_ENOUGH);
+ }
+
+ @Test
+ public void testUpdateCouponTemplate_takeLimitCountGreaterThanTotalCount() {
+ // mock 鏁版嵁
+ CouponTemplateDO couponTemplate = randomCouponTemplateDO();
+ couponTemplateMapper.insert(couponTemplate);
+ // 鍑嗗鍙傛暟
+ CouponTemplateUpdateReqVO reqVO = randomPojo(CouponTemplateUpdateReqVO.class, o -> {
+ o.setId(couponTemplate.getId()); // 璁剧疆鏇存柊鐨� ID
+ o.setTotalCount(1);
+ o.setTakeLimitCount(2);
+ o.setTakeType(CouponTakeTypeEnum.USER.getType());
+ o.setProductScope(PromotionProductScopeEnum.ALL.getScope());
+ o.setProductScopeValues(null);
+ o.setValidityType(CouponTemplateValidityTypeEnum.TERM.getType());
+ o.setFixedStartTerm(0);
+ o.setFixedEndTerm(7);
+ o.setDiscountType(PromotionDiscountTypeEnum.PRICE.getType());
+ o.setDiscountPrice(100);
+ });
+
+ // 璋冪敤锛屽苟鏂█
+ assertServiceException(() -> couponTemplateService.updateCouponTemplate(reqVO), COUPON_TEMPLATE_NOT_ENOUGH);
+ }
+
+ @Test
public void testDeleteCouponTemplate_success() {
// mock 鏁版嵁
- CouponTemplateDO dbCouponTemplate = randomPojo(CouponTemplateDO.class);
+ CouponTemplateDO dbCouponTemplate = randomCouponTemplateDO();
couponTemplateMapper.insert(dbCouponTemplate);// @Sql: 鍏堟彃鍏ュ嚭涓�鏉″瓨鍦ㄧ殑鏁版嵁
// 鍑嗗鍙傛暟
Long id = dbCouponTemplate.getId();
@@ -146,4 +213,25 @@
assertPojoEquals(dbCouponTemplate, pageResult.getList().get(0));
}
+ @SafeVarargs
+ private static CouponTemplateDO randomCouponTemplateDO(Consumer<CouponTemplateDO>... consumers) {
+ Consumer<CouponTemplateDO> consumer = o -> {
+ o.setStatus(CommonStatusEnum.ENABLE.getStatus());
+ o.setTotalCount(10);
+ o.setTakeLimitCount(1);
+ o.setTakeType(CouponTakeTypeEnum.USER.getType());
+ o.setUsePrice(0);
+ o.setProductScope(PromotionProductScopeEnum.ALL.getScope());
+ o.setProductScopeValues(null);
+ o.setValidityType(CouponTemplateValidityTypeEnum.TERM.getType());
+ o.setFixedStartTerm(0);
+ o.setFixedEndTerm(7);
+ o.setDiscountType(PromotionDiscountTypeEnum.PRICE.getType());
+ o.setDiscountPrice(100);
+ o.setTakeCount(0);
+ o.setUseCount(0);
+ };
+ return randomPojo(CouponTemplateDO.class, ArrayUtils.append(consumer, consumers));
+ }
+
}
--
Gitblit v1.9.3