Merge branch 'master' of https://gitee.com/zhijiantianya/ruoyi-vue-pro into feature/mall_product

# Conflicts:
#	sql/mysql/mall.sql
#	sql/mysql/ruoyi-vue-pro.sql
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/controller/app/wallet/vo/recharge/AppPayWalletRechargeCreateReqVO.java
#	yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/wallet/PayWalletRechargeServiceImpl.java
#	yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/social/SocialUserService.java
This commit is contained in:
YunaiV
2023-11-04 20:48:27 +08:00
194 changed files with 1637 additions and 2116 deletions

View File

@@ -138,7 +138,7 @@ public class DiscountActivityServiceImplTest extends BaseDbUnitTest {
Long id = dbDiscountActivity.getId();
// 调用
discountActivityService.closeRewardActivity(id);
discountActivityService.closeDiscountActivity(id);
// 校验状态
DiscountActivityDO discountActivity = discountActivityMapper.selectById(id);
assertEquals(discountActivity.getStatus(), PromotionActivityStatusEnum.CLOSE.getStatus());

View File

@@ -1,104 +0,0 @@
package cn.iocoder.yudao.module.promotion.service.price;
import cn.iocoder.yudao.framework.common.exception.ServiceException;
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
import cn.iocoder.yudao.module.product.api.sku.ProductSkuApi;
import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO;
import cn.iocoder.yudao.module.promotion.api.price.dto.CouponMeetRespDTO;
import cn.iocoder.yudao.module.promotion.api.price.dto.PriceCalculateReqDTO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.coupon.CouponDO;
import cn.iocoder.yudao.module.promotion.enums.common.PromotionProductScopeEnum;
import cn.iocoder.yudao.module.promotion.enums.coupon.CouponStatusEnum;
import cn.iocoder.yudao.module.promotion.service.coupon.CouponService;
import cn.iocoder.yudao.module.promotion.service.reward.RewardActivityService;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import java.util.List;
import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet;
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.COUPON_VALID_TIME_NOT_NOW;
import static java.util.Arrays.asList;
import static java.util.Collections.singletonList;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.when;
/**
* {@link PriceServiceImpl} 的单元测试
*
* @author 芋道源码
*/
public class PriceServiceTest extends BaseMockitoUnitTest {
@InjectMocks
private PriceServiceImpl priceService;
@Mock
private RewardActivityService rewardActivityService;
@Mock
private CouponService couponService;
@Mock
private ProductSkuApi productSkuApi;
/**
* 测试满减送活动,不匹配的情况
*/
@Test
public void testCalculatePrice_rewardActivityNotMeet() {
}
@Test
public void testGetMeetCouponList() {
// 准备参数
PriceCalculateReqDTO calculateReqDTO = new PriceCalculateReqDTO().setUserId(1024L)
.setItems(singletonList(new PriceCalculateReqDTO.Item().setSkuId(10L).setCount(2)));
// mock 方法(商品 SKU 信息)
ProductSkuRespDTO productSku = randomPojo(ProductSkuRespDTO.class, o -> o.setId(10L).setPrice(100));
when(productSkuApi.getSkuList(eq(asSet(10L)))).thenReturn(singletonList(productSku));
// mock 方法(情况一:优惠劵未到使用时间)
CouponDO coupon01 = randomPojo(CouponDO.class);
doThrow(new ServiceException(COUPON_VALID_TIME_NOT_NOW)).when(couponService).validCoupon(coupon01);
// mock 方法(情况二:所结算商品没有符合条件的商品)
CouponDO coupon02 = randomPojo(CouponDO.class);
// mock 方法(情况三:使用金额不足)
CouponDO coupon03 = randomPojo(CouponDO.class, o -> o.setProductScope(PromotionProductScopeEnum.ALL.getScope())
.setUsePrice(300));
// mock 方法(情况五:满足条件)
CouponDO coupon04 = randomPojo(CouponDO.class, o -> o.setProductScope(PromotionProductScopeEnum.ALL.getScope())
.setUsePrice(190));
// mock 方法(获得用户的待使用优惠劵)
when(couponService.getCouponList(eq(1024L), eq(CouponStatusEnum.UNUSED.getStatus())))
.thenReturn(asList(coupon01, coupon02, coupon03, coupon04));
// 调用
List<CouponMeetRespDTO> list = priceService.getMeetCouponList(calculateReqDTO);
// 断言
assertEquals(list.size(), 4);
// 断言情况一:优惠劵未到使用时间
CouponMeetRespDTO couponMeetRespDTO01 = list.get(0);
assertPojoEquals(couponMeetRespDTO01, coupon01);
assertFalse(couponMeetRespDTO01.getMeet());
assertEquals(couponMeetRespDTO01.getMeetTip(), "优惠劵未到使用时间");
// 断言情况二:所结算商品没有符合条件的商品
CouponMeetRespDTO couponMeetRespDTO02 = list.get(1);
assertPojoEquals(couponMeetRespDTO02, coupon02);
assertFalse(couponMeetRespDTO02.getMeet());
assertEquals(couponMeetRespDTO02.getMeetTip(), "所结算商品没有符合条件的商品");
// 断言情况三:差 %s 元可用优惠劵
CouponMeetRespDTO couponMeetRespDTO03 = list.get(2);
assertPojoEquals(couponMeetRespDTO03, coupon03);
assertFalse(couponMeetRespDTO03.getMeet());
assertEquals(couponMeetRespDTO03.getMeetTip(), "所结算的商品中未满足使用的金额");
// 断言情况四:满足条件
CouponMeetRespDTO couponMeetRespDTO04 = list.get(3);
assertPojoEquals(couponMeetRespDTO04, coupon04);
assertTrue(couponMeetRespDTO04.getMeet());
assertNull(couponMeetRespDTO04.getMeetTip());
}
}