|
@@ -18,15 +18,8 @@ import org.mockito.InjectMocks;
|
|
|
import org.mockito.Mock;
|
|
|
|
|
|
import java.time.Duration;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Collection;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Set;
|
|
|
|
|
|
-import static cn.hutool.core.collection.CollUtil.intersectionDistinct;
|
|
|
import static cn.hutool.core.util.RandomUtil.randomEle;
|
|
|
-import static cn.iocoder.yudao.framework.common.util.collection.SetUtils.asSet;
|
|
|
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.addTime;
|
|
|
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
|
|
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
|
|
@@ -34,8 +27,6 @@ import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServic
|
|
|
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.REWARD_ACTIVITY_NOT_EXISTS;
|
|
|
-import static com.google.common.primitives.Longs.asList;
|
|
|
-import static java.util.Collections.singletonList;
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
|
|
/**
|
|
@@ -176,90 +167,91 @@ public class RewardActivityServiceImplTest extends BaseMockitoUnitTest {
|
|
|
assertPojoEquals(dbRewardActivity, pageResult.getList().get(0), "rules");
|
|
|
}
|
|
|
|
|
|
- @Test
|
|
|
- public void testGetRewardActivities_all() {
|
|
|
- LocalDateTime now = LocalDateTime.now();
|
|
|
- // mock 数据
|
|
|
- RewardActivityDO allActivity = randomPojo(RewardActivityDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())
|
|
|
- .setProductScope(PromotionProductScopeEnum.ALL.getScope()).setStartTime(now.minusDays(1)).setEndTime(now.plusDays(1)));
|
|
|
- rewardActivityMapper.insert(allActivity);
|
|
|
- RewardActivityDO productActivity = randomPojo(RewardActivityDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())
|
|
|
- .setProductScope(PromotionProductScopeEnum.SPU.getScope()).setProductScopeValues(asList(1L, 2L))
|
|
|
- .setStartTime(now.minusDays(1)).setEndTime(now.plusDays(1)));
|
|
|
- rewardActivityMapper.insert(productActivity);
|
|
|
- // 准备参数
|
|
|
- Set<Long> spuIds = asSet(1L, 2L);
|
|
|
-
|
|
|
- // 调用
|
|
|
- List<RewardActivityDO> activityList = rewardActivityServiceImpl.getRewardActivityListByStatusAndDateTimeLt(
|
|
|
- CommonStatusEnum.ENABLE.getStatus(), now);
|
|
|
- List<RewardActivityDO> matchRewardActivityList = filterMatchActivity(spuIds, activityList);
|
|
|
- // 断言
|
|
|
- assertEquals(matchRewardActivityList.size(), 1);
|
|
|
- matchRewardActivityList.forEach((activity) -> {
|
|
|
- if (activity.getId().equals(productActivity.getId())) {
|
|
|
- assertPojoEquals(activity, productActivity);
|
|
|
- assertEquals(activity.getProductScopeValues(), asList(1L, 2L));
|
|
|
- } else {
|
|
|
- fail();
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- @Test
|
|
|
- public void testGetRewardActivities_product() {
|
|
|
- LocalDateTime now = LocalDateTime.now();
|
|
|
- // mock 数据
|
|
|
- RewardActivityDO productActivity01 = randomPojo(RewardActivityDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())
|
|
|
- .setProductScope(PromotionProductScopeEnum.SPU.getScope()).setProductScopeValues(asList(1L, 2L))
|
|
|
- .setStartTime(now.minusDays(1)).setEndTime(now.plusDays(1)));
|
|
|
- rewardActivityMapper.insert(productActivity01);
|
|
|
- RewardActivityDO productActivity02 = randomPojo(RewardActivityDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())
|
|
|
- .setProductScope(PromotionProductScopeEnum.SPU.getScope()).setProductScopeValues(singletonList(3L))
|
|
|
- .setStartTime(now.minusDays(1)).setEndTime(now.plusDays(1)));
|
|
|
- rewardActivityMapper.insert(productActivity02);
|
|
|
- // 准备参数
|
|
|
- Set<Long> spuIds = asSet(1L, 2L, 3L);
|
|
|
-
|
|
|
- List<RewardActivityDO> activityList = rewardActivityServiceImpl.getRewardActivityListByStatusAndDateTimeLt(
|
|
|
- CommonStatusEnum.ENABLE.getStatus(), now);
|
|
|
- List<RewardActivityDO> matchRewardActivityList = filterMatchActivity(spuIds, activityList);
|
|
|
- // 断言
|
|
|
- assertEquals(matchRewardActivityList.size(), 2);
|
|
|
- matchRewardActivityList.forEach((activity) -> {
|
|
|
- if (activity.getId().equals(productActivity01.getId())) {
|
|
|
- assertPojoEquals(activity, productActivity01);
|
|
|
- assertEquals(activity.getProductScopeValues(), asList(1L, 2L));
|
|
|
- } else if (activity.getId().equals(productActivity02.getId())) {
|
|
|
- assertPojoEquals(activity, productActivity02);
|
|
|
- assertEquals(activity.getProductScopeValues(), singletonList(3L));
|
|
|
- } else {
|
|
|
- fail();
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获得满减送的订单项(商品)列表
|
|
|
- *
|
|
|
- * @param spuIds 商品编号
|
|
|
- * @param activityList 活动列表
|
|
|
- * @return 订单项(商品)列表
|
|
|
- */
|
|
|
- private List<RewardActivityDO> filterMatchActivity(Collection<Long> spuIds, List<RewardActivityDO> activityList) {
|
|
|
- List<RewardActivityDO> resultActivityList = new ArrayList<>();
|
|
|
- for (RewardActivityDO activity : activityList) {
|
|
|
- // 情况一:全部商品都可以参与
|
|
|
- if (PromotionProductScopeEnum.isAll(activity.getProductScope())) {
|
|
|
- resultActivityList.add(activity);
|
|
|
- }
|
|
|
- // 情况二:指定商品参与
|
|
|
- if (PromotionProductScopeEnum.isSpu(activity.getProductScope()) &&
|
|
|
- !intersectionDistinct(activity.getProductScopeValues(), spuIds).isEmpty()) {
|
|
|
- resultActivityList.add(activity);
|
|
|
- }
|
|
|
- }
|
|
|
- return resultActivityList;
|
|
|
- }
|
|
|
+ // TODO 芋艿:后续完善单测
|
|
|
+// @Test
|
|
|
+// public void testGetRewardActivities_all() {
|
|
|
+// LocalDateTime now = LocalDateTime.now();
|
|
|
+// // mock 数据
|
|
|
+// RewardActivityDO allActivity = randomPojo(RewardActivityDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())
|
|
|
+// .setProductScope(PromotionProductScopeEnum.ALL.getScope()).setStartTime(now.minusDays(1)).setEndTime(now.plusDays(1)));
|
|
|
+// rewardActivityMapper.insert(allActivity);
|
|
|
+// RewardActivityDO productActivity = randomPojo(RewardActivityDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())
|
|
|
+// .setProductScope(PromotionProductScopeEnum.SPU.getScope()).setProductScopeValues(asList(1L, 2L))
|
|
|
+// .setStartTime(now.minusDays(1)).setEndTime(now.plusDays(1)));
|
|
|
+// rewardActivityMapper.insert(productActivity);
|
|
|
+// // 准备参数
|
|
|
+// Set<Long> spuIds = asSet(1L, 2L);
|
|
|
+//
|
|
|
+// // 调用
|
|
|
+// List<RewardActivityDO> activityList = rewardActivityServiceImpl.getRewardActivityListByStatusAndDateTimeLt(
|
|
|
+// CommonStatusEnum.ENABLE.getStatus(), now);
|
|
|
+// List<RewardActivityDO> matchRewardActivityList = filterMatchActivity(spuIds, activityList);
|
|
|
+// // 断言
|
|
|
+// assertEquals(matchRewardActivityList.size(), 1);
|
|
|
+// matchRewardActivityList.forEach((activity) -> {
|
|
|
+// if (activity.getId().equals(productActivity.getId())) {
|
|
|
+// assertPojoEquals(activity, productActivity);
|
|
|
+// assertEquals(activity.getProductScopeValues(), asList(1L, 2L));
|
|
|
+// } else {
|
|
|
+// fail();
|
|
|
+// }
|
|
|
+// });
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Test
|
|
|
+// public void testGetRewardActivities_product() {
|
|
|
+// LocalDateTime now = LocalDateTime.now();
|
|
|
+// // mock 数据
|
|
|
+// RewardActivityDO productActivity01 = randomPojo(RewardActivityDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())
|
|
|
+// .setProductScope(PromotionProductScopeEnum.SPU.getScope()).setProductScopeValues(asList(1L, 2L))
|
|
|
+// .setStartTime(now.minusDays(1)).setEndTime(now.plusDays(1)));
|
|
|
+// rewardActivityMapper.insert(productActivity01);
|
|
|
+// RewardActivityDO productActivity02 = randomPojo(RewardActivityDO.class, o -> o.setStatus(CommonStatusEnum.ENABLE.getStatus())
|
|
|
+// .setProductScope(PromotionProductScopeEnum.SPU.getScope()).setProductScopeValues(singletonList(3L))
|
|
|
+// .setStartTime(now.minusDays(1)).setEndTime(now.plusDays(1)));
|
|
|
+// rewardActivityMapper.insert(productActivity02);
|
|
|
+// // 准备参数
|
|
|
+// Set<Long> spuIds = asSet(1L, 2L, 3L);
|
|
|
+//
|
|
|
+// List<RewardActivityDO> activityList = rewardActivityServiceImpl.getRewardActivityListByStatusAndDateTimeLt(
|
|
|
+// CommonStatusEnum.ENABLE.getStatus(), now);
|
|
|
+// List<RewardActivityDO> matchRewardActivityList = filterMatchActivity(spuIds, activityList);
|
|
|
+// // 断言
|
|
|
+// assertEquals(matchRewardActivityList.size(), 2);
|
|
|
+// matchRewardActivityList.forEach((activity) -> {
|
|
|
+// if (activity.getId().equals(productActivity01.getId())) {
|
|
|
+// assertPojoEquals(activity, productActivity01);
|
|
|
+// assertEquals(activity.getProductScopeValues(), asList(1L, 2L));
|
|
|
+// } else if (activity.getId().equals(productActivity02.getId())) {
|
|
|
+// assertPojoEquals(activity, productActivity02);
|
|
|
+// assertEquals(activity.getProductScopeValues(), singletonList(3L));
|
|
|
+// } else {
|
|
|
+// fail();
|
|
|
+// }
|
|
|
+// });
|
|
|
+// }
|
|
|
+//
|
|
|
+// /**
|
|
|
+// * 获得满减送的订单项(商品)列表
|
|
|
+// *
|
|
|
+// * @param spuIds 商品编号
|
|
|
+// * @param activityList 活动列表
|
|
|
+// * @return 订单项(商品)列表
|
|
|
+// */
|
|
|
+// private List<RewardActivityDO> filterMatchActivity(Collection<Long> spuIds, List<RewardActivityDO> activityList) {
|
|
|
+// List<RewardActivityDO> resultActivityList = new ArrayList<>();
|
|
|
+// for (RewardActivityDO activity : activityList) {
|
|
|
+// // 情况一:全部商品都可以参与
|
|
|
+// if (PromotionProductScopeEnum.isAll(activity.getProductScope())) {
|
|
|
+// resultActivityList.add(activity);
|
|
|
+// }
|
|
|
+// // 情况二:指定商品参与
|
|
|
+// if (PromotionProductScopeEnum.isSpu(activity.getProductScope()) &&
|
|
|
+// !intersectionDistinct(activity.getProductScopeValues(), spuIds).isEmpty()) {
|
|
|
+// resultActivityList.add(activity);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// return resultActivityList;
|
|
|
+// }
|
|
|
|
|
|
}
|