|
@@ -15,8 +15,11 @@ import org.springframework.context.annotation.Import;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.time.Duration;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
|
|
|
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.DateUtils.addTime;
|
|
|
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
|
|
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
|
|
@@ -24,6 +27,8 @@ 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 java.util.Arrays.asList;
|
|
|
+import static java.util.Collections.singletonList;
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
|
|
/**
|
|
@@ -160,4 +165,54 @@ public class RewardActivityServiceImplTest extends BaseDbUnitTest {
|
|
|
assertPojoEquals(dbRewardActivity, pageResult.getList().get(0), "rules");
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void testGetRewardActivities_all() {
|
|
|
+ // mock 数据
|
|
|
+ RewardActivityDO allActivity = randomPojo(RewardActivityDO.class, o -> o.setStatus(PromotionActivityStatusEnum.RUN.getStatus())
|
|
|
+ .setProductScope(PromotionProductScopeEnum.ALL.getScope()));
|
|
|
+ rewardActivityMapper.insert(allActivity);
|
|
|
+ RewardActivityDO productActivity = randomPojo(RewardActivityDO.class, o -> o.setStatus(PromotionActivityStatusEnum.RUN.getStatus())
|
|
|
+ .setProductScope(PromotionProductScopeEnum.SPU.getScope()).setProductSpuIds(asList(1L, 2L)));
|
|
|
+ rewardActivityMapper.insert(productActivity);
|
|
|
+ // 准备参数
|
|
|
+ Set<Long> spuIds = asSet(1L, 2L);
|
|
|
+
|
|
|
+ // 调用
|
|
|
+ Map<RewardActivityDO, Set<Long>> matchRewardActivities = rewardActivityService.getMatchRewardActivities(spuIds);
|
|
|
+ // 断言
|
|
|
+ assertEquals(matchRewardActivities.size(), 1);
|
|
|
+ Map.Entry<RewardActivityDO, Set<Long>> next = matchRewardActivities.entrySet().iterator().next();
|
|
|
+ assertPojoEquals(next.getKey(), allActivity);
|
|
|
+ assertEquals(next.getValue(), spuIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testGetRewardActivities_product() {
|
|
|
+ // mock 数据
|
|
|
+ RewardActivityDO productActivity01 = randomPojo(RewardActivityDO.class, o -> o.setStatus(PromotionActivityStatusEnum.RUN.getStatus())
|
|
|
+ .setProductScope(PromotionProductScopeEnum.SPU.getScope()).setProductSpuIds(asList(1L, 2L)));
|
|
|
+ rewardActivityMapper.insert(productActivity01);
|
|
|
+ RewardActivityDO productActivity02 = randomPojo(RewardActivityDO.class, o -> o.setStatus(PromotionActivityStatusEnum.RUN.getStatus())
|
|
|
+ .setProductScope(PromotionProductScopeEnum.SPU.getScope()).setProductSpuIds(singletonList(3L)));
|
|
|
+ rewardActivityMapper.insert(productActivity02);
|
|
|
+ // 准备参数
|
|
|
+ Set<Long> spuIds = asSet(1L, 2L, 3L);
|
|
|
+
|
|
|
+ // 调用
|
|
|
+ Map<RewardActivityDO, Set<Long>> matchRewardActivities = rewardActivityService.getMatchRewardActivities(spuIds);
|
|
|
+ // 断言
|
|
|
+ assertEquals(matchRewardActivities.size(), 2);
|
|
|
+ matchRewardActivities.forEach((activity, activitySpuIds) -> {
|
|
|
+ if (activity.getId().equals(productActivity01.getId())) {
|
|
|
+ assertPojoEquals(activity, productActivity01);
|
|
|
+ assertEquals(activitySpuIds, asSet(1L, 2L));
|
|
|
+ } else if (activity.getId().equals(productActivity02.getId())) {
|
|
|
+ assertPojoEquals(activity, productActivity02);
|
|
|
+ assertEquals(activitySpuIds, asSet(3L));
|
|
|
+ } else {
|
|
|
+ fail();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
}
|