Commit 40c9449f3922b141d589991b4eed9ff57c55a1d3

Authored by YunaiV
1 parent 5998e7f9

fix: 优化对 JDK8 的兼容性

Showing 18 changed files with 226 additions and 207 deletions
yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/controller/admin/face/ImFacePackController.java
1 package cn.iocoder.yudao.module.im.controller.admin.face; 1 package cn.iocoder.yudao.module.im.controller.admin.face;
2 2
  3 +import cn.hutool.core.collection.ListUtil;
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 4 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 import cn.iocoder.yudao.module.im.controller.admin.face.vo.pack.ImFacePackUserRespVO; 6 import cn.iocoder.yudao.module.im.controller.admin.face.vo.pack.ImFacePackUserRespVO;
@@ -39,7 +40,7 @@ public class ImFacePackController { @@ -39,7 +40,7 @@ public class ImFacePackController {
39 // 1.1 拉所有启用表情包 40 // 1.1 拉所有启用表情包
40 List<ImFacePackDO> packs = facePackService.getEnabledFacePackList(); 41 List<ImFacePackDO> packs = facePackService.getEnabledFacePackList();
41 if (packs.isEmpty()) { 42 if (packs.isEmpty()) {
42 - return success(List.of()); 43 + return success(ListUtil.of());
43 } 44 }
44 // 1.2 拉这些包下所有启用表情,按 packId 分组 45 // 1.2 拉这些包下所有启用表情,按 packId 分组
45 List<ImFacePackItemDO> items = facePackItemService.getEnabledItemListByPackIds( 46 List<ImFacePackItemDO> items = facePackItemService.getEnabledItemListByPackIds(
@@ -49,7 +50,7 @@ public class ImFacePackController { @@ -49,7 +50,7 @@ public class ImFacePackController {
49 // 2. 拼装:BeanUtils 把 pack 字段映射 + 自己塞 items 50 // 2. 拼装:BeanUtils 把 pack 字段映射 + 自己塞 items
50 List<ImFacePackUserRespVO> result = convertList(packs, pack -> { 51 List<ImFacePackUserRespVO> result = convertList(packs, pack -> {
51 ImFacePackUserRespVO vo = BeanUtils.toBean(pack, ImFacePackUserRespVO.class); 52 ImFacePackUserRespVO vo = BeanUtils.toBean(pack, ImFacePackUserRespVO.class);
52 - vo.setItems(BeanUtils.toBean(itemsByPackId.getOrDefault(pack.getId(), List.of()), ImFacePackUserRespVO.Item.class)); 53 + vo.setItems(BeanUtils.toBean(itemsByPackId.getOrDefault(pack.getId(), ListUtil.of()), ImFacePackUserRespVO.Item.class));
53 return vo; 54 return vo;
54 }); 55 });
55 return success(result); 56 return success(result);
yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/enums/message/ImMessageTypeEnum.java
1 package cn.iocoder.yudao.module.im.enums.message; 1 package cn.iocoder.yudao.module.im.enums.message;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
3 import cn.hutool.core.lang.Assert; 4 import cn.hutool.core.lang.Assert;
4 import cn.hutool.core.util.ArrayUtil; 5 import cn.hutool.core.util.ArrayUtil;
5 import cn.iocoder.yudao.framework.common.core.ArrayValuable; 6 import cn.iocoder.yudao.framework.common.core.ArrayValuable;
@@ -340,7 +341,7 @@ public enum ImMessageTypeEnum implements ArrayValuable&lt;Integer&gt; { @@ -340,7 +341,7 @@ public enum ImMessageTypeEnum implements ArrayValuable&lt;Integer&gt; {
340 341
341 public static final Integer[] ARRAYS = Arrays.stream(values()).map(ImMessageTypeEnum::getType).toArray(Integer[]::new); 342 public static final Integer[] ARRAYS = Arrays.stream(values()).map(ImMessageTypeEnum::getType).toArray(Integer[]::new);
342 343
343 - private static final Set<Integer> FRIEND_NOTIFICATION_TYPES = Set.of( 344 + private static final Set<Integer> FRIEND_NOTIFICATION_TYPES = CollUtil.newHashSet(
344 FRIEND_REQUEST_APPROVED.type, 345 FRIEND_REQUEST_APPROVED.type,
345 FRIEND_REQUEST_REJECTED.type, 346 FRIEND_REQUEST_REJECTED.type,
346 FRIEND_REQUEST_RECEIVED.type, 347 FRIEND_REQUEST_RECEIVED.type,
@@ -351,12 +352,12 @@ public enum ImMessageTypeEnum implements ArrayValuable&lt;Integer&gt; { @@ -351,12 +352,12 @@ public enum ImMessageTypeEnum implements ArrayValuable&lt;Integer&gt; {
351 FRIEND_INFO_UPDATED.type, 352 FRIEND_INFO_UPDATED.type,
352 FRIEND_UPDATE.type); 353 FRIEND_UPDATE.type);
353 354
354 - private static final Set<Integer> GROUP_REQUEST_NOTIFICATION_TYPES = Set.of( 355 + private static final Set<Integer> GROUP_REQUEST_NOTIFICATION_TYPES = CollUtil.newHashSet(
355 GROUP_REQUEST_RECEIVED.type, 356 GROUP_REQUEST_RECEIVED.type,
356 GROUP_REQUEST_APPROVED.type, 357 GROUP_REQUEST_APPROVED.type,
357 GROUP_REQUEST_REJECTED.type); 358 GROUP_REQUEST_REJECTED.type);
358 359
359 - private static final Set<Integer> RTC_NOTIFICATION_TYPES = Set.of( 360 + private static final Set<Integer> RTC_NOTIFICATION_TYPES = CollUtil.newHashSet(
360 RTC_CALL.type, 361 RTC_CALL.type,
361 RTC_PARTICIPANT_CONNECTED.type, 362 RTC_PARTICIPANT_CONNECTED.type,
362 RTC_PARTICIPANT_DISCONNECTED.type); 363 RTC_PARTICIPANT_DISCONNECTED.type);
yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/friend/ImFriendRequestServiceImpl.java
1 package cn.iocoder.yudao.module.im.service.friend; 1 package cn.iocoder.yudao.module.im.service.friend;
2 2
  3 +import cn.hutool.core.collection.ListUtil;
3 import cn.hutool.core.util.BooleanUtil; 4 import cn.hutool.core.util.BooleanUtil;
4 import cn.hutool.core.util.ObjUtil; 5 import cn.hutool.core.util.ObjUtil;
5 import cn.hutool.extra.spring.SpringUtil; 6 import cn.hutool.extra.spring.SpringUtil;
@@ -172,7 +173,7 @@ public class ImFriendRequestServiceImpl implements ImFriendRequestService { @@ -172,7 +173,7 @@ public class ImFriendRequestServiceImpl implements ImFriendRequestService {
172 // 1.1 校验申请存在、未处理、操作人是接收方 173 // 1.1 校验申请存在、未处理、操作人是接收方
173 ImFriendRequestDO request = validateRequestForHandle(userId, requestId); 174 ImFriendRequestDO request = validateRequestForHandle(userId, requestId);
174 // 1.2 复验双方用户有效 175 // 1.2 复验双方用户有效
175 - adminUserApi.validateUserList(List.of(request.getFromUserId(), request.getToUserId())); 176 + adminUserApi.validateUserList(ListUtil.of(request.getFromUserId(), request.getToUserId()));
176 177
177 // 2. 乐观锁更新申请处理结果 178 // 2. 乐观锁更新申请处理结果
178 ImFriendRequestDO updateObj = new ImFriendRequestDO() 179 ImFriendRequestDO updateObj = new ImFriendRequestDO()
@@ -224,7 +225,7 @@ public class ImFriendRequestServiceImpl implements ImFriendRequestService { @@ -224,7 +225,7 @@ public class ImFriendRequestServiceImpl implements ImFriendRequestService {
224 public List<ImFriendRequestDO> getMyFriendRequestList(Long userId, Long maxId, Integer limit) { 225 public List<ImFriendRequestDO> getMyFriendRequestList(Long userId, Long maxId, Integer limit) {
225 ImFriendRequestDO maxRequest = maxId != null ? friendRequestMapper.selectById(maxId) : null; 226 ImFriendRequestDO maxRequest = maxId != null ? friendRequestMapper.selectById(maxId) : null;
226 if (maxId != null && maxRequest == null) { 227 if (maxId != null && maxRequest == null) {
227 - return List.of(); 228 + return ListUtil.of();
228 } 229 }
229 return friendRequestMapper.selectMyList(userId, 230 return friendRequestMapper.selectMyList(userId,
230 maxRequest != null ? maxRequest.getUpdateTime() : null, 231 maxRequest != null ? maxRequest.getUpdateTime() : null,
yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/group/ImGroupMemberServiceImpl.java
1 package cn.iocoder.yudao.module.im.service.group; 1 package cn.iocoder.yudao.module.im.service.group;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
  4 +import cn.hutool.core.collection.ListUtil;
4 import cn.hutool.core.util.ObjUtil; 5 import cn.hutool.core.util.ObjUtil;
5 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 6 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 7 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
@@ -78,7 +79,7 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService { @@ -78,7 +79,7 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService {
78 public List<ImGroupMemberDO> getGroupMemberListByOwnerAndAdmin(Long groupId) { 79 public List<ImGroupMemberDO> getGroupMemberListByOwnerAndAdmin(Long groupId) {
79 // TODO DONE @AI:把条件往下传;这样减少加载数据量! 80 // TODO DONE @AI:把条件往下传;这样减少加载数据量!
80 return groupMemberMapper.selectListByGroupIdAndStatusAndRoles(groupId, CommonStatusEnum.ENABLE.getStatus(), 81 return groupMemberMapper.selectListByGroupIdAndStatusAndRoles(groupId, CommonStatusEnum.ENABLE.getStatus(),
81 - List.of(ImGroupMemberRoleEnum.OWNER.getRole(), ImGroupMemberRoleEnum.ADMIN.getRole())); 82 + ListUtil.of(ImGroupMemberRoleEnum.OWNER.getRole(), ImGroupMemberRoleEnum.ADMIN.getRole()));
82 } 83 }
83 84
84 /** 85 /**
@@ -270,7 +271,7 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService { @@ -270,7 +271,7 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService {
270 boolean groupRemarkChanged = updateReqVO.getGroupRemark() != null 271 boolean groupRemarkChanged = updateReqVO.getGroupRemark() != null
271 && ObjUtil.notEqual(updateReqVO.getGroupRemark(), member.getGroupRemark()); 272 && ObjUtil.notEqual(updateReqVO.getGroupRemark(), member.getGroupRemark());
272 if (silentChanged || groupRemarkChanged) { 273 if (silentChanged || groupRemarkChanged) {
273 - groupMessageService.sendGroupMessage(userId, List.of(userId), ImGroupMessageSendDTO.ofGroupMemberSettingUpdate( 274 + groupMessageService.sendGroupMessage(userId, ListUtil.of(userId), ImGroupMessageSendDTO.ofGroupMemberSettingUpdate(
274 groupId, userId, updateReqVO.getSilent(), updateReqVO.getGroupRemark())); 275 groupId, userId, updateReqVO.getSilent(), updateReqVO.getGroupRemark()));
275 } 276 }
276 } 277 }
yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/group/ImGroupServiceImpl.java
@@ -28,10 +28,10 @@ import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupMemberDO; @@ -28,10 +28,10 @@ import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupMemberDO;
28 import cn.iocoder.yudao.module.im.dal.dataobject.message.ImGroupMessageDO; 28 import cn.iocoder.yudao.module.im.dal.dataobject.message.ImGroupMessageDO;
29 import cn.iocoder.yudao.module.im.dal.mysql.group.ImGroupMapper; 29 import cn.iocoder.yudao.module.im.dal.mysql.group.ImGroupMapper;
30 import cn.iocoder.yudao.module.im.enums.group.ImGroupAddSourceEnum; 30 import cn.iocoder.yudao.module.im.enums.group.ImGroupAddSourceEnum;
31 -import cn.iocoder.yudao.module.im.framework.config.ImProperties;  
32 import cn.iocoder.yudao.module.im.enums.group.ImGroupMemberRoleEnum; 31 import cn.iocoder.yudao.module.im.enums.group.ImGroupMemberRoleEnum;
33 import cn.iocoder.yudao.module.im.enums.message.ImMessageStatusEnum; 32 import cn.iocoder.yudao.module.im.enums.message.ImMessageStatusEnum;
34 import cn.iocoder.yudao.module.im.enums.message.ImMessageTypeEnum; 33 import cn.iocoder.yudao.module.im.enums.message.ImMessageTypeEnum;
  34 +import cn.iocoder.yudao.module.im.framework.config.ImProperties;
35 import cn.iocoder.yudao.module.im.service.friend.ImFriendService; 35 import cn.iocoder.yudao.module.im.service.friend.ImFriendService;
36 import cn.iocoder.yudao.module.im.service.message.ImGroupMessageService; 36 import cn.iocoder.yudao.module.im.service.message.ImGroupMessageService;
37 import cn.iocoder.yudao.module.im.service.message.dto.ImGroupMessageSendDTO; 37 import cn.iocoder.yudao.module.im.service.message.dto.ImGroupMessageSendDTO;
@@ -413,12 +413,12 @@ public class ImGroupServiceImpl implements ImGroupService { @@ -413,12 +413,12 @@ public class ImGroupServiceImpl implements ImGroupService {
413 ImGroupMemberDO newOwner = groupMemberService.validateMemberInGroup(groupId, newOwnerUserId); 413 ImGroupMemberDO newOwner = groupMemberService.validateMemberInGroup(groupId, newOwnerUserId);
414 414
415 // 2.1 更新成员角色 415 // 2.1 更新成员角色
416 - int newOwnerAffected = groupMemberService.updateGroupMemberRole(groupId, Set.of(newOwner.getUserId()), 416 + int newOwnerAffected = groupMemberService.updateGroupMemberRole(groupId, CollUtil.newHashSet(newOwner.getUserId()),
417 ImGroupMemberRoleEnum.OWNER.getRole()); 417 ImGroupMemberRoleEnum.OWNER.getRole());
418 if (newOwnerAffected != 1) { 418 if (newOwnerAffected != 1) {
419 throw exception(GROUP_MEMBER_NOT_IN_GROUP); 419 throw exception(GROUP_MEMBER_NOT_IN_GROUP);
420 } 420 }
421 - int oldOwnerAffected = groupMemberService.updateGroupMemberRole(groupId, Set.of(userId), 421 + int oldOwnerAffected = groupMemberService.updateGroupMemberRole(groupId, CollUtil.newHashSet(userId),
422 ImGroupMemberRoleEnum.NORMAL.getRole()); 422 ImGroupMemberRoleEnum.NORMAL.getRole());
423 if (oldOwnerAffected != 1) { 423 if (oldOwnerAffected != 1) {
424 throw exception(GROUP_MEMBER_NOT_IN_GROUP); 424 throw exception(GROUP_MEMBER_NOT_IN_GROUP);
yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/service/message/ImGroupMessageServiceImpl.java
@@ -41,6 +41,7 @@ import org.springframework.validation.annotation.Validated; @@ -41,6 +41,7 @@ import org.springframework.validation.annotation.Validated;
41 41
42 import java.time.LocalDateTime; 42 import java.time.LocalDateTime;
43 import java.util.*; 43 import java.util.*;
  44 +import java.util.stream.Collectors;
44 45
45 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 46 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
46 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; 47 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*;
@@ -295,7 +296,7 @@ public class ImGroupMessageServiceImpl implements ImGroupMessageService { @@ -295,7 +296,7 @@ public class ImGroupMessageServiceImpl implements ImGroupMessageService {
295 .filter(msg -> isMessageVisible(msg, memberMap.get(msg.getGroupId()), userId)) 296 .filter(msg -> isMessageVisible(msg, memberMap.get(msg.getGroupId()), userId))
296 .sorted(Comparator.comparing(ImGroupMessageDO::getId)) 297 .sorted(Comparator.comparing(ImGroupMessageDO::getId))
297 .limit(size) 298 .limit(size)
298 - .toList(); 299 + .collect(Collectors.toList());
299 } 300 }
300 301
301 /** 302 /**
yudao-module-im/src/main/java/cn/iocoder/yudao/module/im/util/ImMessageUtils.java
@@ -87,12 +87,15 @@ public class ImMessageUtils { @@ -87,12 +87,15 @@ public class ImMessageUtils {
87 validateNotBlank(getString(map, "name")); 87 validateNotBlank(getString(map, "name"));
88 } 88 }
89 89
  90 + @SuppressWarnings("PatternVariableCanBeUsed")
90 private static void validateMergeContent(Map<String, Object> map) { 91 private static void validateMergeContent(Map<String, Object> map) {
91 validateNotBlank(getString(map, "title")); 92 validateNotBlank(getString(map, "title"));
92 Object messages = map.get("messages"); 93 Object messages = map.get("messages");
93 - if (!(messages instanceof Collection<?> messageList)  
94 - || CollUtil.isEmpty(messageList)  
95 - || messageList.size() > MERGE_MESSAGE_MAX_COUNT) { 94 + if (!(messages instanceof Collection)) {
  95 + throw exception(MESSAGE_CONTENT_INVALID);
  96 + }
  97 + Collection<?> messageList = (Collection<?>) messages;
  98 + if (CollUtil.isEmpty(messageList) || messageList.size() > MERGE_MESSAGE_MAX_COUNT) {
96 throw exception(MESSAGE_CONTENT_INVALID); 99 throw exception(MESSAGE_CONTENT_INVALID);
97 } 100 }
98 } 101 }
yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/dal/mysql/message/ImGroupMessageMapperTest.java
@@ -10,6 +10,7 @@ import org.junit.jupiter.api.Test; @@ -10,6 +10,7 @@ import org.junit.jupiter.api.Test;
10 import java.time.LocalDateTime; 10 import java.time.LocalDateTime;
11 import java.util.List; 11 import java.util.List;
12 12
  13 +import static cn.iocoder.yudao.module.im.util.ImTestCollectionUtils.*;
13 import static org.junit.jupiter.api.Assertions.*; 14 import static org.junit.jupiter.api.Assertions.*;
14 15
15 /** 16 /**
@@ -35,7 +36,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest { @@ -35,7 +36,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest {
35 mapper.insert(msg20); 36 mapper.insert(msg20);
36 37
37 // 调用:只查群 10 38 // 调用:只查群 10
38 - List<ImGroupMessageDO> result = mapper.selectListByMinId(List.of(10L), 0L, FAR_PAST, 100); 39 + List<ImGroupMessageDO> result = mapper.selectListByMinId(listOf(10L), 0L, FAR_PAST, 100);
39 40
40 // 断言:只有 msg10 41 // 断言:只有 msg10
41 assertEquals(1, result.size()); 42 assertEquals(1, result.size());
@@ -50,7 +51,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest { @@ -50,7 +51,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest {
50 ImGroupMessageDO recalled = buildMessage(10L, 1L, ImMessageStatusEnum.RECALL); 51 ImGroupMessageDO recalled = buildMessage(10L, 1L, ImMessageStatusEnum.RECALL);
51 mapper.insert(recalled); 52 mapper.insert(recalled);
52 53
53 - List<ImGroupMessageDO> result = mapper.selectListByMinId(List.of(10L), 0L, FAR_PAST, 100); 54 + List<ImGroupMessageDO> result = mapper.selectListByMinId(listOf(10L), 0L, FAR_PAST, 100);
54 55
55 // 断言:撤回消息一并返回,由客户端按 status 切换渲染 56 // 断言:撤回消息一并返回,由客户端按 status 切换渲染
56 assertEquals(2, result.size()); 57 assertEquals(2, result.size());
@@ -66,7 +67,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest { @@ -66,7 +67,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest {
66 outWindow.setSendTime(LocalDateTime.now().minusDays(40)); 67 outWindow.setSendTime(LocalDateTime.now().minusDays(40));
67 mapper.insert(outWindow); 68 mapper.insert(outWindow);
68 69
69 - List<ImGroupMessageDO> result = mapper.selectListByMinId(List.of(10L), 0L, 70 + List<ImGroupMessageDO> result = mapper.selectListByMinId(listOf(10L), 0L,
70 LocalDateTime.now().minusDays(30), 100); 71 LocalDateTime.now().minusDays(30), 100);
71 72
72 assertEquals(1, result.size()); 73 assertEquals(1, result.size());
@@ -84,7 +85,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest { @@ -84,7 +85,7 @@ public class ImGroupMessageMapperTest extends BaseDbUnitTest {
84 mapper.insert(m3); 85 mapper.insert(m3);
85 86
86 // 调用:size=2,返回 id 最小的 2 条 87 // 调用:size=2,返回 id 最小的 2 条
87 - List<ImGroupMessageDO> result = mapper.selectListByMinId(List.of(10L), 0L, FAR_PAST, 2); 88 + List<ImGroupMessageDO> result = mapper.selectListByMinId(listOf(10L), 0L, FAR_PAST, 2);
88 89
89 assertEquals(2, result.size()); 90 assertEquals(2, result.size());
90 assertTrue(result.get(0).getId() < result.get(1).getId()); 91 assertTrue(result.get(0).getId() < result.get(1).getId());
yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/service/friend/ImFriendRequestServiceImplTest.java
@@ -24,6 +24,7 @@ import java.time.LocalDateTime; @@ -24,6 +24,7 @@ import java.time.LocalDateTime;
24 import java.util.List; 24 import java.util.List;
25 25
26 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*; 26 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
  27 +import static cn.iocoder.yudao.module.im.util.ImTestCollectionUtils.*;
27 import static org.junit.jupiter.api.Assertions.*; 28 import static org.junit.jupiter.api.Assertions.*;
28 import static org.mockito.ArgumentMatchers.any; 29 import static org.mockito.ArgumentMatchers.any;
29 import static org.mockito.ArgumentMatchers.anyInt; 30 import static org.mockito.ArgumentMatchers.anyInt;
@@ -228,7 +229,7 @@ public class ImFriendRequestServiceImplTest extends BaseMockitoUnitTest { @@ -228,7 +229,7 @@ public class ImFriendRequestServiceImplTest extends BaseMockitoUnitTest {
228 friendRequestService.agreeFriendRequest(2L, 100L); 229 friendRequestService.agreeFriendRequest(2L, 100L);
229 230
230 // 断言:双向建立好友 + 推 APPROVED 给发起方 231 // 断言:双向建立好友 + 推 APPROVED 给发起方
231 - verify(adminUserApi).validateUserList(List.of(1L, 2L)); 232 + verify(adminUserApi).validateUserList(listOf(1L, 2L));
232 verify(friendService).becomeFriends(request); 233 verify(friendService).becomeFriends(request);
233 verify(websocketService).sendPrivateMessageAsync(eq(1L), any(ImPrivateMessageDTO.class)); 234 verify(websocketService).sendPrivateMessageAsync(eq(1L), any(ImPrivateMessageDTO.class));
234 } 235 }
yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/service/friend/ImFriendServiceImplTest.java
@@ -22,6 +22,7 @@ import java.util.Collections; @@ -22,6 +22,7 @@ import java.util.Collections;
22 import java.util.List; 22 import java.util.List;
23 23
24 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.FRIEND_NOT_FRIEND; 24 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.FRIEND_NOT_FRIEND;
  25 +import static cn.iocoder.yudao.module.im.util.ImTestCollectionUtils.*;
25 import static org.junit.jupiter.api.Assertions.*; 26 import static org.junit.jupiter.api.Assertions.*;
26 import static org.mockito.ArgumentMatchers.*; 27 import static org.mockito.ArgumentMatchers.*;
27 import static org.mockito.Mockito.never; 28 import static org.mockito.Mockito.never;
@@ -248,7 +249,7 @@ public class ImFriendServiceImplTest extends BaseMockitoUnitTest { @@ -248,7 +249,7 @@ public class ImFriendServiceImplTest extends BaseMockitoUnitTest {
248 249
249 @Test 250 @Test
250 public void testGetFriendList() { 251 public void testGetFriendList() {
251 - List<ImFriendDO> list = List.of( 252 + List<ImFriendDO> list = listOf(
252 ImFriendDO.builder().id(1L).userId(1L).friendUserId(2L) 253 ImFriendDO.builder().id(1L).userId(1L).friendUserId(2L)
253 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 254 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
254 ImFriendDO.builder().id(2L).userId(1L).friendUserId(3L) 255 ImFriendDO.builder().id(2L).userId(1L).friendUserId(3L)
@@ -276,9 +277,9 @@ public class ImFriendServiceImplTest extends BaseMockitoUnitTest { @@ -276,9 +277,9 @@ public class ImFriendServiceImplTest extends BaseMockitoUnitTest {
276 ImFriendDO friend3 = ImFriendDO.builder().id(2L).userId(1L).friendUserId(3L) 277 ImFriendDO friend3 = ImFriendDO.builder().id(2L).userId(1L).friendUserId(3L)
277 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 278 .status(CommonStatusEnum.ENABLE.getStatus()).build();
278 when(imFriendMapper.selectListByUserIdAndStatus(1L, CommonStatusEnum.ENABLE.getStatus())) 279 when(imFriendMapper.selectListByUserIdAndStatus(1L, CommonStatusEnum.ENABLE.getStatus()))
279 - .thenReturn(List.of(friend2, friend3)); 280 + .thenReturn(listOf(friend2, friend3));
280 when(imFriendMapper.selectListByUserIdsAndFriendUserIdAndStatus(anyCollection(), eq(1L), 281 when(imFriendMapper.selectListByUserIdsAndFriendUserIdAndStatus(anyCollection(), eq(1L),
281 - eq(CommonStatusEnum.ENABLE.getStatus()))).thenReturn(List.of( 282 + eq(CommonStatusEnum.ENABLE.getStatus()))).thenReturn(listOf(
282 ImFriendDO.builder().userId(2L).friendUserId(1L) 283 ImFriendDO.builder().userId(2L).friendUserId(1L)
283 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 284 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
284 285
yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/service/group/ImGroupMemberServiceImplTest.java
@@ -18,6 +18,7 @@ import org.springframework.dao.DuplicateKeyException; @@ -18,6 +18,7 @@ import org.springframework.dao.DuplicateKeyException;
18 import java.util.List; 18 import java.util.List;
19 19
20 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.GROUP_MEMBER_NOT_IN_GROUP; 20 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.GROUP_MEMBER_NOT_IN_GROUP;
  21 +import static cn.iocoder.yudao.module.im.util.ImTestCollectionUtils.*;
21 import static org.junit.jupiter.api.Assertions.*; 22 import static org.junit.jupiter.api.Assertions.*;
22 import static org.mockito.ArgumentMatchers.*; 23 import static org.mockito.ArgumentMatchers.*;
23 import static org.mockito.Mockito.*; 24 import static org.mockito.Mockito.*;
@@ -116,10 +117,10 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest { @@ -116,10 +117,10 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
116 ImGroupMemberDO exist4 = ImGroupMemberDO.builder().id(40L).groupId(10L).userId(4L) 117 ImGroupMemberDO exist4 = ImGroupMemberDO.builder().id(40L).groupId(10L).userId(4L)
117 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 118 .status(CommonStatusEnum.ENABLE.getStatus()).build();
118 when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection())) 119 when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection()))
119 - .thenReturn(List.of(exist3, exist4)); 120 + .thenReturn(listOf(exist3, exist4));
120 121
121 // 调用 122 // 调用
122 - groupMemberService.addGroupMembers(10L, List.of(2L, 3L, 4L)); 123 + groupMemberService.addGroupMembers(10L, listOf(2L, 3L, 4L));
123 124
124 // 断言:updates 只有用户 3;inserts 只有用户 2 125 // 断言:updates 只有用户 3;inserts 只有用户 2
125 verify(groupMemberMapper).updateRejoinFields(eq(30L), eq(CommonStatusEnum.ENABLE.getStatus()), 126 verify(groupMemberMapper).updateRejoinFields(eq(30L), eq(CommonStatusEnum.ENABLE.getStatus()),
@@ -131,7 +132,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest { @@ -131,7 +132,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
131 @Test 132 @Test
132 public void testAddGroupMembers_allExisting_onlyUpdates() { 133 public void testAddGroupMembers_allExisting_onlyUpdates() {
133 // 准备:传入的 3 个用户都已有记录(全部 DISABLE) → 只做 update,不做 insert 134 // 准备:传入的 3 个用户都已有记录(全部 DISABLE) → 只做 update,不做 insert
134 - List<ImGroupMemberDO> existing = List.of( 135 + List<ImGroupMemberDO> existing = listOf(
135 ImGroupMemberDO.builder().id(1L).groupId(10L).userId(2L) 136 ImGroupMemberDO.builder().id(1L).groupId(10L).userId(2L)
136 .status(CommonStatusEnum.DISABLE.getStatus()).build(), 137 .status(CommonStatusEnum.DISABLE.getStatus()).build(),
137 ImGroupMemberDO.builder().id(2L).groupId(10L).userId(3L) 138 ImGroupMemberDO.builder().id(2L).groupId(10L).userId(3L)
@@ -140,7 +141,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest { @@ -140,7 +141,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
140 when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection())) 141 when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection()))
141 .thenReturn(existing); 142 .thenReturn(existing);
142 143
143 - groupMemberService.addGroupMembers(10L, List.of(2L, 3L)); 144 + groupMemberService.addGroupMembers(10L, listOf(2L, 3L));
144 145
145 verify(groupMemberMapper, times(2)).updateRejoinFields(anyLong(), eq(CommonStatusEnum.ENABLE.getStatus()), 146 verify(groupMemberMapper, times(2)).updateRejoinFields(anyLong(), eq(CommonStatusEnum.ENABLE.getStatus()),
146 any(), eq(ImGroupMemberRoleEnum.NORMAL.getRole()), isNull(), isNull()); 147 any(), eq(ImGroupMemberRoleEnum.NORMAL.getRole()), isNull(), isNull());
@@ -151,9 +152,9 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest { @@ -151,9 +152,9 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
151 public void testAddGroupMembers_allNew_onlyInserts() { 152 public void testAddGroupMembers_allNew_onlyInserts() {
152 // 准备:都不存在 → 只做 insert 153 // 准备:都不存在 → 只做 insert
153 when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection())) 154 when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection()))
154 - .thenReturn(List.of()); 155 + .thenReturn(listOf());
155 156
156 - groupMemberService.addGroupMembers(10L, List.of(2L, 3L)); 157 + groupMemberService.addGroupMembers(10L, listOf(2L, 3L));
157 158
158 verify(groupMemberMapper, never()).updateRejoinFields(anyLong(), anyInt(), any(), anyInt(), any(), any()); 159 verify(groupMemberMapper, never()).updateRejoinFields(anyLong(), anyInt(), any(), anyInt(), any(), any());
159 verify(groupMemberMapper).insertBatch(anyList()); 160 verify(groupMemberMapper).insertBatch(anyList());
@@ -162,14 +163,14 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest { @@ -162,14 +163,14 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
162 @Test 163 @Test
163 public void testAddGroupMembers_allExistingEnabled_nothingHappens() { 164 public void testAddGroupMembers_allExistingEnabled_nothingHappens() {
164 // 准备:都已存在且 ENABLE → 既不 update 也不 insert 165 // 准备:都已存在且 ENABLE → 既不 update 也不 insert
165 - List<ImGroupMemberDO> existing = List.of( 166 + List<ImGroupMemberDO> existing = listOf(
166 ImGroupMemberDO.builder().id(1L).groupId(10L).userId(2L) 167 ImGroupMemberDO.builder().id(1L).groupId(10L).userId(2L)
167 .status(CommonStatusEnum.ENABLE.getStatus()).build() 168 .status(CommonStatusEnum.ENABLE.getStatus()).build()
168 ); 169 );
169 when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection())) 170 when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection()))
170 .thenReturn(existing); 171 .thenReturn(existing);
171 172
172 - groupMemberService.addGroupMembers(10L, List.of(2L)); 173 + groupMemberService.addGroupMembers(10L, listOf(2L));
173 174
174 verify(groupMemberMapper, never()).updateRejoinFields(anyLong(), anyInt(), any(), anyInt(), any(), any()); 175 verify(groupMemberMapper, never()).updateRejoinFields(anyLong(), anyInt(), any(), anyInt(), any(), any());
175 verify(groupMemberMapper, never()).insertBatch(anyList()); 176 verify(groupMemberMapper, never()).insertBatch(anyList());
@@ -179,14 +180,14 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest { @@ -179,14 +180,14 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
179 public void testAddGroupMembers_batchInsertDuplicateFallback() { 180 public void testAddGroupMembers_batchInsertDuplicateFallback() {
180 // 准备:两个新增成员,批量插入失败时降级为逐个 addGroupMember 181 // 准备:两个新增成员,批量插入失败时降级为逐个 addGroupMember
181 when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection())) 182 when(groupMemberMapper.selectListByGroupIdAndUserIds(eq(10L), anyCollection()))
182 - .thenReturn(List.of()); 183 + .thenReturn(listOf());
183 doThrow(new DuplicateKeyException("concurrent batch insert")) 184 doThrow(new DuplicateKeyException("concurrent batch insert"))
184 .when(groupMemberMapper).insertBatch(anyList()); 185 .when(groupMemberMapper).insertBatch(anyList());
185 // addGroupMember 单条兜底逻辑 186 // addGroupMember 单条兜底逻辑
186 when(groupMemberMapper.selectByGroupIdAndUserId(eq(10L), anyLong())).thenReturn(null); 187 when(groupMemberMapper.selectByGroupIdAndUserId(eq(10L), anyLong())).thenReturn(null);
187 188
188 // 调用 189 // 调用
189 - groupMemberService.addGroupMembers(10L, List.of(2L, 3L)); 190 + groupMemberService.addGroupMembers(10L, listOf(2L, 3L));
190 191
191 // 断言:降级为逐条调用 insert 192 // 断言:降级为逐条调用 insert
192 verify(groupMemberMapper, times(2)).insert(any(ImGroupMemberDO.class)); 193 verify(groupMemberMapper, times(2)).insert(any(ImGroupMemberDO.class));
@@ -244,7 +245,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest { @@ -244,7 +245,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
244 // 公开字段昵称变化 → 全员广播 GROUP_MEMBER_NICKNAME_UPDATE 245 // 公开字段昵称变化 → 全员广播 GROUP_MEMBER_NICKNAME_UPDATE
245 verify(groupMessageService).sendGroupMessage(eq(1L), any(cn.iocoder.yudao.module.im.service.message.dto.ImGroupMessageSendDTO.class)); 246 verify(groupMessageService).sendGroupMessage(eq(1L), any(cn.iocoder.yudao.module.im.service.message.dto.ImGroupMessageSendDTO.class));
246 // 个人字段 silent 变化 → 仅自己多端同步 GROUP_MEMBER_SETTING_UPDATE 247 // 个人字段 silent 变化 → 仅自己多端同步 GROUP_MEMBER_SETTING_UPDATE
247 - verify(groupMessageService).sendGroupMessage(eq(1L), eq(java.util.List.of(1L)), 248 + verify(groupMessageService).sendGroupMessage(eq(1L), eq(listOf(1L)),
248 any(cn.iocoder.yudao.module.im.service.message.dto.ImGroupMessageSendDTO.class)); 249 any(cn.iocoder.yudao.module.im.service.message.dto.ImGroupMessageSendDTO.class));
249 } 250 }
250 251
@@ -278,7 +279,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest { @@ -278,7 +279,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
278 279
279 @Test 280 @Test
280 public void testRemoveGroupMembers_batch() { 281 public void testRemoveGroupMembers_batch() {
281 - groupMemberService.removeGroupMembers(10L, List.of(2L, 3L)); 282 + groupMemberService.removeGroupMembers(10L, listOf(2L, 3L));
282 283
283 ArgumentCaptor<ImGroupMemberDO> captor = ArgumentCaptor.forClass(ImGroupMemberDO.class); 284 ArgumentCaptor<ImGroupMemberDO> captor = ArgumentCaptor.forClass(ImGroupMemberDO.class);
284 verify(groupMemberMapper).updateByGroupIdAndUserIdsAndStatus(eq(10L), anyCollection(), 285 verify(groupMemberMapper).updateByGroupIdAndUserIdsAndStatus(eq(10L), anyCollection(),
@@ -303,7 +304,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest { @@ -303,7 +304,7 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
303 @Test 304 @Test
304 public void testGetActiveGroupMemberUserIdsByGroupId_extractsUserIds() { 305 public void testGetActiveGroupMemberUserIdsByGroupId_extractsUserIds() {
305 // 准备:3 个 ENABLE 成员 306 // 准备:3 个 ENABLE 成员
306 - List<ImGroupMemberDO> members = List.of( 307 + List<ImGroupMemberDO> members = listOf(
307 ImGroupMemberDO.builder().groupId(10L).userId(1L) 308 ImGroupMemberDO.builder().groupId(10L).userId(1L)
308 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 309 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
309 ImGroupMemberDO.builder().groupId(10L).userId(2L) 310 ImGroupMemberDO.builder().groupId(10L).userId(2L)
@@ -318,13 +319,13 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest { @@ -318,13 +319,13 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
318 List<Long> userIds = groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L); 319 List<Long> userIds = groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L);
319 320
320 // 断言:只返回 userId、顺序保留 321 // 断言:只返回 userId、顺序保留
321 - assertEquals(List.of(1L, 2L, 3L), userIds); 322 + assertEquals(listOf(1L, 2L, 3L), userIds);
322 } 323 }
323 324
324 @Test 325 @Test
325 public void testGetActiveGroupMemberUserIdsByGroupId_emptyList() { 326 public void testGetActiveGroupMemberUserIdsByGroupId_emptyList() {
326 when(groupMemberMapper.selectListByGroupIdAndStatus( 327 when(groupMemberMapper.selectListByGroupIdAndStatus(
327 - 10L, CommonStatusEnum.ENABLE.getStatus())).thenReturn(List.of()); 328 + 10L, CommonStatusEnum.ENABLE.getStatus())).thenReturn(listOf());
328 329
329 List<Long> userIds = groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L); 330 List<Long> userIds = groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L);
330 331
@@ -333,8 +334,8 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest { @@ -333,8 +334,8 @@ public class ImGroupMemberServiceImplTest extends BaseMockitoUnitTest {
333 334
334 @Test 335 @Test
335 public void testGetGroupMemberListByOwnerAndAdmin_passesRoles() { 336 public void testGetGroupMemberListByOwnerAndAdmin_passesRoles() {
336 - List<Integer> roles = List.of(ImGroupMemberRoleEnum.OWNER.getRole(), ImGroupMemberRoleEnum.ADMIN.getRole());  
337 - List<ImGroupMemberDO> members = List.of(ImGroupMemberDO.builder().groupId(10L).userId(1L).build()); 337 + List<Integer> roles = listOf(ImGroupMemberRoleEnum.OWNER.getRole(), ImGroupMemberRoleEnum.ADMIN.getRole());
  338 + List<ImGroupMemberDO> members = listOf(ImGroupMemberDO.builder().groupId(10L).userId(1L).build());
338 when(groupMemberMapper.selectListByGroupIdAndStatusAndRoles(10L, CommonStatusEnum.ENABLE.getStatus(), roles)) 339 when(groupMemberMapper.selectListByGroupIdAndStatusAndRoles(10L, CommonStatusEnum.ENABLE.getStatus(), roles))
339 .thenReturn(members); 340 .thenReturn(members);
340 341
yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/service/group/ImGroupRequestServiceImplTest.java
@@ -28,6 +28,7 @@ import java.util.Collection; @@ -28,6 +28,7 @@ import java.util.Collection;
28 import java.util.List; 28 import java.util.List;
29 29
30 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*; 30 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
  31 +import static cn.iocoder.yudao.module.im.util.ImTestCollectionUtils.*;
31 import static org.junit.jupiter.api.Assertions.*; 32 import static org.junit.jupiter.api.Assertions.*;
32 import static org.mockito.ArgumentMatchers.*; 33 import static org.mockito.ArgumentMatchers.*;
33 import static org.mockito.Mockito.*; 34 import static org.mockito.Mockito.*;
@@ -93,7 +94,7 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest { @@ -93,7 +94,7 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest {
93 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 94 .status(CommonStatusEnum.ENABLE.getStatus()).build();
94 when(groupService.validateGroupExists(10L)).thenReturn(group); 95 when(groupService.validateGroupExists(10L)).thenReturn(group);
95 // 群里有 owner + 一个 admin,作为 1503 推送目标 96 // 群里有 owner + 一个 admin,作为 1503 推送目标
96 - when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(List.of( 97 + when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(listOf(
97 ImGroupMemberDO.builder().groupId(10L).userId(99L) 98 ImGroupMemberDO.builder().groupId(10L).userId(99L)
98 .role(ImGroupMemberRoleEnum.OWNER.getRole()) 99 .role(ImGroupMemberRoleEnum.OWNER.getRole())
99 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 100 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
@@ -125,7 +126,7 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest { @@ -125,7 +126,7 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest {
125 .joinApproval(true) 126 .joinApproval(true)
126 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 127 .status(CommonStatusEnum.ENABLE.getStatus()).build();
127 when(groupService.validateGroupExists(10L)).thenReturn(group); 128 when(groupService.validateGroupExists(10L)).thenReturn(group);
128 - when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(List.of( 129 + when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(listOf(
129 ImGroupMemberDO.builder().groupId(10L).userId(99L) 130 ImGroupMemberDO.builder().groupId(10L).userId(99L)
130 .role(ImGroupMemberRoleEnum.OWNER.getRole()) 131 .role(ImGroupMemberRoleEnum.OWNER.getRole())
131 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 132 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
@@ -190,7 +191,7 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest { @@ -190,7 +191,7 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest {
190 ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(99L) 191 ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(99L)
191 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 192 .status(CommonStatusEnum.ENABLE.getStatus()).build();
192 when(groupService.getGroup(10L)).thenReturn(group); 193 when(groupService.getGroup(10L)).thenReturn(group);
193 - when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(List.of( 194 + when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(listOf(
194 ImGroupMemberDO.builder().groupId(10L).userId(99L) 195 ImGroupMemberDO.builder().groupId(10L).userId(99L)
195 .role(ImGroupMemberRoleEnum.OWNER.getRole()) 196 .role(ImGroupMemberRoleEnum.OWNER.getRole())
196 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 197 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
@@ -268,7 +269,7 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest { @@ -268,7 +269,7 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest {
268 ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(1L) 269 ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(1L)
269 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 270 .status(CommonStatusEnum.ENABLE.getStatus()).build();
270 when(groupService.getGroup(10L)).thenReturn(group); 271 when(groupService.getGroup(10L)).thenReturn(group);
271 - when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(List.of( 272 + when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(listOf(
272 ImGroupMemberDO.builder().groupId(10L).userId(1L) 273 ImGroupMemberDO.builder().groupId(10L).userId(1L)
273 .role(ImGroupMemberRoleEnum.OWNER.getRole()) 274 .role(ImGroupMemberRoleEnum.OWNER.getRole())
274 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 275 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
@@ -289,16 +290,16 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest { @@ -289,16 +290,16 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest {
289 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 290 .status(CommonStatusEnum.ENABLE.getStatus()).build();
290 when(groupService.validateGroupExists(10L)).thenReturn(group); 291 when(groupService.validateGroupExists(10L)).thenReturn(group);
291 when(groupRequestMapper.selectByGroupIdAndUserId(eq(10L), anyLong())).thenReturn(null); 292 when(groupRequestMapper.selectByGroupIdAndUserId(eq(10L), anyLong())).thenReturn(null);
292 - when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(List.of( 293 + when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(listOf(
293 ImGroupMemberDO.builder().groupId(10L).userId(99L) 294 ImGroupMemberDO.builder().groupId(10L).userId(99L)
294 .role(ImGroupMemberRoleEnum.OWNER.getRole()) 295 .role(ImGroupMemberRoleEnum.OWNER.getRole())
295 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 296 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
296 - when(adminUserApi.getUserMap(anyCollection())).thenReturn(java.util.Map.of( 297 + when(adminUserApi.getUserMap(anyCollection())).thenReturn(mapOf(
297 2L, buildUser(2L, "用户A"), 298 2L, buildUser(2L, "用户A"),
298 3L, buildUser(3L, "用户B"))); 299 3L, buildUser(3L, "用户B")));
299 300
300 // 调用:邀请人 1L 邀请 2L、3L(都没有旧记录) 301 // 调用:邀请人 1L 邀请 2L、3L(都没有旧记录)
301 - groupRequestService.createInviteRequestList(10L, 1L, List.of(2L, 3L)); 302 + groupRequestService.createInviteRequestList(10L, 1L, listOf(2L, 3L));
302 303
303 // 断言:插入 2 条 + 推 1503 给 owner(每条 1 帧)共 2 帧 304 // 断言:插入 2 条 + 推 1503 给 owner(每条 1 帧)共 2 帧
304 ArgumentCaptor<ImGroupRequestDO> captor = ArgumentCaptor.forClass(ImGroupRequestDO.class); 305 ArgumentCaptor<ImGroupRequestDO> captor = ArgumentCaptor.forClass(ImGroupRequestDO.class);
@@ -323,14 +324,14 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest { @@ -323,14 +324,14 @@ public class ImGroupRequestServiceImplTest extends BaseMockitoUnitTest {
323 .setHandleResult(ImGroupRequestHandleResultEnum.REFUSED.getResult()); 324 .setHandleResult(ImGroupRequestHandleResultEnum.REFUSED.getResult());
324 when(groupRequestMapper.selectByGroupIdAndUserId(10L, 2L)).thenReturn(null, old); 325 when(groupRequestMapper.selectByGroupIdAndUserId(10L, 2L)).thenReturn(null, old);
325 when(groupRequestMapper.insert(any(ImGroupRequestDO.class))).thenThrow(new DuplicateKeyException("dup")); 326 when(groupRequestMapper.insert(any(ImGroupRequestDO.class))).thenThrow(new DuplicateKeyException("dup"));
326 - when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(List.of( 327 + when(groupMemberService.getGroupMemberListByOwnerAndAdmin(10L)).thenReturn(listOf(
327 ImGroupMemberDO.builder().groupId(10L).userId(99L) 328 ImGroupMemberDO.builder().groupId(10L).userId(99L)
328 .role(ImGroupMemberRoleEnum.OWNER.getRole()) 329 .role(ImGroupMemberRoleEnum.OWNER.getRole())
329 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 330 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
330 - when(adminUserApi.getUserMap(anyCollection())).thenReturn(java.util.Map.of(2L, buildUser(2L, "用户A"))); 331 + when(adminUserApi.getUserMap(anyCollection())).thenReturn(mapOf(2L, buildUser(2L, "用户A")));
331 332
332 // 调用 333 // 调用
333 - groupRequestService.createInviteRequestList(10L, 1L, List.of(2L)); 334 + groupRequestService.createInviteRequestList(10L, 1L, listOf(2L));
334 335
335 // 断言:复用并重置旧邀请申请 336 // 断言:复用并重置旧邀请申请
336 verify(groupRequestMapper).updateInviteByIdReset(eq(50L), eq(1L), 337 verify(groupRequestMapper).updateInviteByIdReset(eq(50L), eq(1L),
yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/service/group/ImGroupServiceImplTest.java
@@ -43,6 +43,7 @@ import java.util.Map; @@ -43,6 +43,7 @@ import java.util.Map;
43 import java.util.Set; 43 import java.util.Set;
44 44
45 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*; 45 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
  46 +import static cn.iocoder.yudao.module.im.util.ImTestCollectionUtils.*;
46 import static org.junit.jupiter.api.Assertions.*; 47 import static org.junit.jupiter.api.Assertions.*;
47 import static org.mockito.ArgumentMatchers.*; 48 import static org.mockito.ArgumentMatchers.*;
48 import static org.mockito.Mockito.*; 49 import static org.mockito.Mockito.*;
@@ -108,13 +109,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -108,13 +109,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
108 // 准备:创建者 + 2 个初始成员,都是好友 109 // 准备:创建者 + 2 个初始成员,都是好友
109 ImGroupCreateReqVO reqVO = new ImGroupCreateReqVO(); 110 ImGroupCreateReqVO reqVO = new ImGroupCreateReqVO();
110 reqVO.setName("测试群"); 111 reqVO.setName("测试群");
111 - reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L))); 112 + reqVO.setMemberUserIds(new ArrayList<>(listOf(2L, 3L)));
112 when(groupMapper.insert(any(ImGroupDO.class))).thenAnswer(invocation -> { 113 when(groupMapper.insert(any(ImGroupDO.class))).thenAnswer(invocation -> {
113 ImGroupDO group = invocation.getArgument(0); 114 ImGroupDO group = invocation.getArgument(0);
114 group.setId(100L); 115 group.setId(100L);
115 return 1; 116 return 1;
116 }); 117 });
117 - when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of( 118 + when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(listOf(
118 ImFriendDO.builder().userId(1L).friendUserId(2L) 119 ImFriendDO.builder().userId(1L).friendUserId(2L)
119 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 120 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
120 ImFriendDO.builder().userId(1L).friendUserId(3L) 121 ImFriendDO.builder().userId(1L).friendUserId(3L)
@@ -140,15 +141,15 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -140,15 +141,15 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
140 // 准备:初始成员里有非好友 141 // 准备:初始成员里有非好友
141 ImGroupCreateReqVO reqVO = new ImGroupCreateReqVO(); 142 ImGroupCreateReqVO reqVO = new ImGroupCreateReqVO();
142 reqVO.setName("测试群"); 143 reqVO.setName("测试群");
143 - reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L))); 144 + reqVO.setMemberUserIds(new ArrayList<>(listOf(2L, 3L)));
144 // 只有 2 是好友,3 不是 145 // 只有 2 是好友,3 不是
145 - when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of( 146 + when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(listOf(
146 ImFriendDO.builder().userId(1L).friendUserId(2L) 147 ImFriendDO.builder().userId(1L).friendUserId(2L)
147 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 148 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
148 AdminUserRespDTO u3 = new AdminUserRespDTO(); 149 AdminUserRespDTO u3 = new AdminUserRespDTO();
149 u3.setId(3L); 150 u3.setId(3L);
150 u3.setNickname("李四"); 151 u3.setNickname("李四");
151 - when(adminUserApi.getUserMap(anyCollection())).thenReturn(Map.of(3L, u3)); 152 + when(adminUserApi.getUserMap(anyCollection())).thenReturn(mapOf(3L, u3));
152 153
153 // 调用并断言 154 // 调用并断言
154 ServiceException exception = assertThrows(ServiceException.class, 155 ServiceException exception = assertThrows(ServiceException.class,
@@ -327,8 +328,8 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -327,8 +328,8 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
327 // 被邀请人 2 和 3 都是好友 328 // 被邀请人 2 和 3 都是好友
328 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO(); 329 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
329 reqVO.setGroupId(10L); 330 reqVO.setGroupId(10L);
330 - reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L)));  
331 - List<ImFriendDO> friends = List.of( 331 + reqVO.setMemberUserIds(new ArrayList<>(listOf(2L, 3L)));
  332 + List<ImFriendDO> friends = listOf(
332 ImFriendDO.builder().userId(1L).friendUserId(2L) 333 ImFriendDO.builder().userId(1L).friendUserId(2L)
333 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 334 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
334 ImFriendDO.builder().userId(1L).friendUserId(3L) 335 ImFriendDO.builder().userId(1L).friendUserId(3L)
@@ -366,7 +367,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -366,7 +367,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
366 ImGroupMemberDO.builder().groupId(10L).userId(1L) 367 ImGroupMemberDO.builder().groupId(10L).userId(1L)
367 .role(ImGroupMemberRoleEnum.NORMAL.getRole()) 368 .role(ImGroupMemberRoleEnum.NORMAL.getRole())
368 .status(CommonStatusEnum.ENABLE.getStatus()).build()); 369 .status(CommonStatusEnum.ENABLE.getStatus()).build());
369 - when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(List.of( 370 + when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(listOf(
370 ImGroupMemberDO.builder().groupId(10L).userId(99L) 371 ImGroupMemberDO.builder().groupId(10L).userId(99L)
371 .role(ImGroupMemberRoleEnum.OWNER.getRole()) 372 .role(ImGroupMemberRoleEnum.OWNER.getRole())
372 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 373 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
@@ -376,8 +377,8 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -376,8 +377,8 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
376 377
377 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO(); 378 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
378 reqVO.setGroupId(10L); 379 reqVO.setGroupId(10L);
379 - reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L)));  
380 - when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of( 380 + reqVO.setMemberUserIds(new ArrayList<>(listOf(2L, 3L)));
  381 + when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(listOf(
381 ImFriendDO.builder().userId(1L).friendUserId(2L) 382 ImFriendDO.builder().userId(1L).friendUserId(2L)
382 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 383 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
383 ImFriendDO.builder().userId(1L).friendUserId(3L) 384 ImFriendDO.builder().userId(1L).friendUserId(3L)
@@ -408,15 +409,15 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -408,15 +409,15 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
408 ImGroupMemberDO.builder().groupId(10L).userId(1L) 409 ImGroupMemberDO.builder().groupId(10L).userId(1L)
409 .role(ImGroupMemberRoleEnum.OWNER.getRole()) 410 .role(ImGroupMemberRoleEnum.OWNER.getRole())
410 .status(CommonStatusEnum.ENABLE.getStatus()).build()); 411 .status(CommonStatusEnum.ENABLE.getStatus()).build());
411 - when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(List.of( 412 + when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(listOf(
412 ImGroupMemberDO.builder().groupId(10L).userId(1L) 413 ImGroupMemberDO.builder().groupId(10L).userId(1L)
413 .role(ImGroupMemberRoleEnum.OWNER.getRole()) 414 .role(ImGroupMemberRoleEnum.OWNER.getRole())
414 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 415 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
415 416
416 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO(); 417 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
417 reqVO.setGroupId(10L); 418 reqVO.setGroupId(10L);
418 - reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L)));  
419 - when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of( 419 + reqVO.setMemberUserIds(new ArrayList<>(listOf(2L, 3L)));
  420 + when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(listOf(
420 ImFriendDO.builder().userId(1L).friendUserId(2L) 421 ImFriendDO.builder().userId(1L).friendUserId(2L)
421 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 422 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
422 ImFriendDO.builder().userId(1L).friendUserId(3L) 423 ImFriendDO.builder().userId(1L).friendUserId(3L)
@@ -445,18 +446,18 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -445,18 +446,18 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
445 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 446 .status(CommonStatusEnum.ENABLE.getStatus()).build();
446 when(groupMapper.selectById(10L)).thenReturn(group); 447 when(groupMapper.selectById(10L)).thenReturn(group);
447 when(groupMemberService.getActiveGroupMemberListByGroupId(10L)) 448 when(groupMemberService.getActiveGroupMemberListByGroupId(10L))
448 - .thenReturn(List.of(ImGroupMemberDO.builder().groupId(10L).userId(1L) 449 + .thenReturn(listOf(ImGroupMemberDO.builder().groupId(10L).userId(1L)
449 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 450 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
450 451
451 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO(); 452 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
452 reqVO.setGroupId(10L); 453 reqVO.setGroupId(10L);
453 - reqVO.setMemberUserIds(new ArrayList<>(List.of(2L, 3L))); 454 + reqVO.setMemberUserIds(new ArrayList<>(listOf(2L, 3L)));
454 // 只有 2 是好友,3 不是 455 // 只有 2 是好友,3 不是
455 - when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of( 456 + when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(listOf(
456 ImFriendDO.builder().userId(1L).friendUserId(2L) 457 ImFriendDO.builder().userId(1L).friendUserId(2L)
457 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 458 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
458 AdminUserRespDTO u3 = new AdminUserRespDTO(); u3.setId(3L); u3.setNickname("李四"); 459 AdminUserRespDTO u3 = new AdminUserRespDTO(); u3.setId(3L); u3.setNickname("李四");
459 - when(adminUserApi.getUserMap(anyCollection())).thenReturn(Map.of(3L, u3)); 460 + when(adminUserApi.getUserMap(anyCollection())).thenReturn(mapOf(3L, u3));
460 461
461 ServiceException exception = assertThrows(ServiceException.class, 462 ServiceException exception = assertThrows(ServiceException.class,
462 () -> groupService.inviteGroupMember(1L, reqVO)); 463 () -> groupService.inviteGroupMember(1L, reqVO));
@@ -484,9 +485,9 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -484,9 +485,9 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
484 485
485 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO(); 486 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
486 reqVO.setGroupId(10L); 487 reqVO.setGroupId(10L);
487 - reqVO.setMemberUserIds(new ArrayList<>(List.of(600L, 601L))); 488 + reqVO.setMemberUserIds(new ArrayList<>(listOf(600L, 601L)));
488 // 被邀请人都是好友 489 // 被邀请人都是好友
489 - when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(List.of( 490 + when(friendService.getActiveFriendList(eq(1L), anyCollection())).thenReturn(listOf(
490 ImFriendDO.builder().userId(1L).friendUserId(600L) 491 ImFriendDO.builder().userId(1L).friendUserId(600L)
491 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 492 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
492 ImFriendDO.builder().userId(1L).friendUserId(601L) 493 ImFriendDO.builder().userId(1L).friendUserId(601L)
@@ -512,7 +513,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -512,7 +513,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
512 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 513 .status(CommonStatusEnum.ENABLE.getStatus()).build();
513 when(groupMapper.selectById(10L)).thenReturn(group); 514 when(groupMapper.selectById(10L)).thenReturn(group);
514 // 用户 2 已在群中 515 // 用户 2 已在群中
515 - when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(List.of( 516 + when(groupMemberService.getActiveGroupMemberListByGroupId(10L)).thenReturn(listOf(
516 ImGroupMemberDO.builder().groupId(10L).userId(1L) 517 ImGroupMemberDO.builder().groupId(10L).userId(1L)
517 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 518 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
518 ImGroupMemberDO.builder().groupId(10L).userId(2L) 519 ImGroupMemberDO.builder().groupId(10L).userId(2L)
@@ -521,7 +522,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -521,7 +522,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
521 522
522 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO(); 523 ImGroupMemberInviteReqVO reqVO = new ImGroupMemberInviteReqVO();
523 reqVO.setGroupId(10L); 524 reqVO.setGroupId(10L);
524 - reqVO.setMemberUserIds(new ArrayList<>(List.of(2L))); // 只邀请 2,他已在群中 525 + reqVO.setMemberUserIds(new ArrayList<>(listOf(2L))); // 只邀请 2,他已在群中
525 526
526 // 调用 527 // 调用
527 groupService.inviteGroupMember(1L, reqVO); 528 groupService.inviteGroupMember(1L, reqVO);
@@ -606,7 +607,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -606,7 +607,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
606 607
607 ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO(); 608 ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO();
608 reqVO.setGroupId(10L); 609 reqVO.setGroupId(10L);
609 - reqVO.setMemberUserIds(List.of(1L, 2L)); 610 + reqVO.setMemberUserIds(listOf(1L, 2L));
610 611
611 ServiceException exception = assertThrows(ServiceException.class, 612 ServiceException exception = assertThrows(ServiceException.class,
612 () -> groupService.removeGroupMember(1L, reqVO)); 613 () -> groupService.removeGroupMember(1L, reqVO));
@@ -628,7 +629,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -628,7 +629,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
628 ImGroupMemberDO.builder().groupId(10L).userId(1L) 629 ImGroupMemberDO.builder().groupId(10L).userId(1L)
629 .role(ImGroupMemberRoleEnum.OWNER.getRole()).build()); 630 .role(ImGroupMemberRoleEnum.OWNER.getRole()).build());
630 // 目标:两个普通成员 631 // 目标:两个普通成员
631 - when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of( 632 + when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(listOf(
632 ImGroupMemberDO.builder().groupId(10L).userId(2L) 633 ImGroupMemberDO.builder().groupId(10L).userId(2L)
633 .role(ImGroupMemberRoleEnum.NORMAL.getRole()) 634 .role(ImGroupMemberRoleEnum.NORMAL.getRole())
634 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 635 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
@@ -638,7 +639,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -638,7 +639,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
638 639
639 ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO(); 640 ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO();
640 reqVO.setGroupId(10L); 641 reqVO.setGroupId(10L);
641 - reqVO.setMemberUserIds(List.of(2L, 3L)); 642 + reqVO.setMemberUserIds(listOf(2L, 3L));
642 643
643 groupService.removeGroupMember(1L, reqVO); 644 groupService.removeGroupMember(1L, reqVO);
644 645
@@ -665,14 +666,14 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -665,14 +666,14 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
665 ImGroupMemberDO.builder().groupId(10L).userId(1L) 666 ImGroupMemberDO.builder().groupId(10L).userId(1L)
666 .role(ImGroupMemberRoleEnum.ADMIN.getRole()).build()); 667 .role(ImGroupMemberRoleEnum.ADMIN.getRole()).build());
667 // 目标:另一个管理员 668 // 目标:另一个管理员
668 - when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of( 669 + when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(listOf(
669 ImGroupMemberDO.builder().groupId(10L).userId(2L) 670 ImGroupMemberDO.builder().groupId(10L).userId(2L)
670 .role(ImGroupMemberRoleEnum.ADMIN.getRole()) 671 .role(ImGroupMemberRoleEnum.ADMIN.getRole())
671 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 672 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
672 673
673 ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO(); 674 ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO();
674 reqVO.setGroupId(10L); 675 reqVO.setGroupId(10L);
675 - reqVO.setMemberUserIds(List.of(2L)); 676 + reqVO.setMemberUserIds(listOf(2L));
676 677
677 ServiceException exception = assertThrows(ServiceException.class, 678 ServiceException exception = assertThrows(ServiceException.class,
678 () -> groupService.removeGroupMember(1L, reqVO)); 679 () -> groupService.removeGroupMember(1L, reqVO));
@@ -694,14 +695,14 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -694,14 +695,14 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
694 when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn( 695 when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn(
695 ImGroupMemberDO.builder().groupId(10L).userId(1L) 696 ImGroupMemberDO.builder().groupId(10L).userId(1L)
696 .role(ImGroupMemberRoleEnum.OWNER.getRole()).build()); 697 .role(ImGroupMemberRoleEnum.OWNER.getRole()).build());
697 - when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of( 698 + when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(listOf(
698 ImGroupMemberDO.builder().groupId(10L).userId(99L) 699 ImGroupMemberDO.builder().groupId(10L).userId(99L)
699 .role(ImGroupMemberRoleEnum.OWNER.getRole()) 700 .role(ImGroupMemberRoleEnum.OWNER.getRole())
700 .status(CommonStatusEnum.ENABLE.getStatus()).build())); 701 .status(CommonStatusEnum.ENABLE.getStatus()).build()));
701 702
702 ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO(); 703 ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO();
703 reqVO.setGroupId(10L); 704 reqVO.setGroupId(10L);
704 - reqVO.setMemberUserIds(List.of(99L)); 705 + reqVO.setMemberUserIds(listOf(99L));
705 706
706 ServiceException exception = assertThrows(ServiceException.class, 707 ServiceException exception = assertThrows(ServiceException.class,
707 () -> groupService.removeGroupMember(1L, reqVO)); 708 () -> groupService.removeGroupMember(1L, reqVO));
@@ -723,7 +724,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -723,7 +724,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
723 ImGroupMemberDO.builder().groupId(10L).userId(1L) 724 ImGroupMemberDO.builder().groupId(10L).userId(1L)
724 .role(ImGroupMemberRoleEnum.OWNER.getRole()).build()); 725 .role(ImGroupMemberRoleEnum.OWNER.getRole()).build());
725 // 目标:2L 有效普通成员;3L 已退群(DISABLE)的历史管理员,应被跳过而非拦截整批 726 // 目标:2L 有效普通成员;3L 已退群(DISABLE)的历史管理员,应被跳过而非拦截整批
726 - when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of( 727 + when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(listOf(
727 ImGroupMemberDO.builder().groupId(10L).userId(2L) 728 ImGroupMemberDO.builder().groupId(10L).userId(2L)
728 .role(ImGroupMemberRoleEnum.NORMAL.getRole()) 729 .role(ImGroupMemberRoleEnum.NORMAL.getRole())
729 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 730 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
@@ -733,17 +734,17 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -733,17 +734,17 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
733 734
734 ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO(); 735 ImGroupMemberRemoveReqVO reqVO = new ImGroupMemberRemoveReqVO();
735 reqVO.setGroupId(10L); 736 reqVO.setGroupId(10L);
736 - reqVO.setMemberUserIds(List.of(2L, 3L)); 737 + reqVO.setMemberUserIds(listOf(2L, 3L));
737 738
738 groupService.removeGroupMember(1L, reqVO); 739 groupService.removeGroupMember(1L, reqVO);
739 740
740 // 仅有效成员 2L 进入移除 / 已读清理,已退群的 3L 被跳过 741 // 仅有效成员 2L 进入移除 / 已读清理,已退群的 3L 被跳过
741 ArgumentCaptor<Collection> removeCaptor = ArgumentCaptor.forClass(Collection.class); 742 ArgumentCaptor<Collection> removeCaptor = ArgumentCaptor.forClass(Collection.class);
742 verify(groupMemberService).removeGroupMembers(eq(10L), removeCaptor.capture()); 743 verify(groupMemberService).removeGroupMembers(eq(10L), removeCaptor.capture());
743 - assertEquals(Set.of(2L), Set.copyOf(removeCaptor.getValue())); 744 + assertEquals(setOf(2L), setCopyOf(removeCaptor.getValue()));
744 ArgumentCaptor<Collection> readCaptor = ArgumentCaptor.forClass(Collection.class); 745 ArgumentCaptor<Collection> readCaptor = ArgumentCaptor.forClass(Collection.class);
745 verify(groupMessageService).deleteReadMaxMessageIds(eq(10L), readCaptor.capture()); 746 verify(groupMessageService).deleteReadMaxMessageIds(eq(10L), readCaptor.capture());
746 - assertEquals(Set.of(2L), Set.copyOf(readCaptor.getValue())); 747 + assertEquals(setOf(2L), setCopyOf(readCaptor.getValue()));
747 } 748 }
748 } 749 }
749 750
@@ -759,7 +760,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -759,7 +760,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
759 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 760 .status(CommonStatusEnum.ENABLE.getStatus()).build();
760 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group); 761 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
761 // 目标 3 是普通成员 762 // 目标 3 是普通成员
762 - when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of( 763 + when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(listOf(
763 ImGroupMemberDO.builder().userId(3L).status(CommonStatusEnum.ENABLE.getStatus()) 764 ImGroupMemberDO.builder().userId(3L).status(CommonStatusEnum.ENABLE.getStatus())
764 .role(ImGroupMemberRoleEnum.NORMAL.getRole()).build())); 765 .role(ImGroupMemberRoleEnum.NORMAL.getRole()).build()));
765 // 群里已有 1 个 ADMIN,1 + 1 ≤ 3 不超上限 766 // 群里已有 1 个 ADMIN,1 + 1 ≤ 3 不超上限
@@ -770,7 +771,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -770,7 +771,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
770 771
771 ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO(); 772 ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO();
772 reqVO.setId(10L); 773 reqVO.setId(10L);
773 - reqVO.setUserIds(List.of(3L)); 774 + reqVO.setUserIds(listOf(3L));
774 775
775 groupService.addGroupAdmin(1L, reqVO); 776 groupService.addGroupAdmin(1L, reqVO);
776 777
@@ -789,7 +790,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -789,7 +790,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
789 ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(1L) 790 ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(1L)
790 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 791 .status(CommonStatusEnum.ENABLE.getStatus()).build();
791 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group); 792 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
792 - when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of( 793 + when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(listOf(
793 ImGroupMemberDO.builder().userId(5L).status(CommonStatusEnum.ENABLE.getStatus()) 794 ImGroupMemberDO.builder().userId(5L).status(CommonStatusEnum.ENABLE.getStatus())
794 .role(ImGroupMemberRoleEnum.NORMAL.getRole()).build())); 795 .role(ImGroupMemberRoleEnum.NORMAL.getRole()).build()));
795 // 群里已有 3 个 ADMIN(达到上限),再加 1 会超 796 // 群里已有 3 个 ADMIN(达到上限),再加 1 会超
@@ -798,7 +799,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -798,7 +799,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
798 799
799 ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO(); 800 ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO();
800 reqVO.setId(10L); 801 reqVO.setId(10L);
801 - reqVO.setUserIds(List.of(5L)); 802 + reqVO.setUserIds(listOf(5L));
802 803
803 ServiceException exception = assertThrows(ServiceException.class, 804 ServiceException exception = assertThrows(ServiceException.class,
804 () -> groupService.addGroupAdmin(1L, reqVO)); 805 () -> groupService.addGroupAdmin(1L, reqVO));
@@ -816,13 +817,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -816,13 +817,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
816 ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(1L) 817 ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(1L)
817 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 818 .status(CommonStatusEnum.ENABLE.getStatus()).build();
818 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group); 819 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
819 - when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of( 820 + when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(listOf(
820 ImGroupMemberDO.builder().userId(1L).status(CommonStatusEnum.ENABLE.getStatus()) 821 ImGroupMemberDO.builder().userId(1L).status(CommonStatusEnum.ENABLE.getStatus())
821 .role(ImGroupMemberRoleEnum.OWNER.getRole()).build())); 822 .role(ImGroupMemberRoleEnum.OWNER.getRole()).build()));
822 823
823 ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO(); 824 ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO();
824 reqVO.setId(10L); 825 reqVO.setId(10L);
825 - reqVO.setUserIds(List.of(1L)); 826 + reqVO.setUserIds(listOf(1L));
826 827
827 ServiceException exception = assertThrows(ServiceException.class, 828 ServiceException exception = assertThrows(ServiceException.class,
828 () -> groupService.addGroupAdmin(1L, reqVO)); 829 () -> groupService.addGroupAdmin(1L, reqVO));
@@ -840,13 +841,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -840,13 +841,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
840 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 841 .status(CommonStatusEnum.ENABLE.getStatus()).build();
841 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group); 842 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
842 // 目标已是 ADMIN:再加无需操作 843 // 目标已是 ADMIN:再加无需操作
843 - when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of( 844 + when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(listOf(
844 ImGroupMemberDO.builder().userId(2L).status(CommonStatusEnum.ENABLE.getStatus()) 845 ImGroupMemberDO.builder().userId(2L).status(CommonStatusEnum.ENABLE.getStatus())
845 .role(ImGroupMemberRoleEnum.ADMIN.getRole()).build())); 846 .role(ImGroupMemberRoleEnum.ADMIN.getRole()).build()));
846 847
847 ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO(); 848 ImGroupAdminAddReqVO reqVO = new ImGroupAdminAddReqVO();
848 reqVO.setId(10L); 849 reqVO.setId(10L);
849 - reqVO.setUserIds(List.of(2L)); 850 + reqVO.setUserIds(listOf(2L));
850 851
851 groupService.addGroupAdmin(1L, reqVO); 852 groupService.addGroupAdmin(1L, reqVO);
852 853
@@ -866,7 +867,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -866,7 +867,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
866 ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(1L) 867 ImGroupDO group = ImGroupDO.builder().id(10L).ownerUserId(1L)
867 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 868 .status(CommonStatusEnum.ENABLE.getStatus()).build();
868 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group); 869 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
869 - when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of( 870 + when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(listOf(
870 ImGroupMemberDO.builder().userId(2L).status(CommonStatusEnum.ENABLE.getStatus()) 871 ImGroupMemberDO.builder().userId(2L).status(CommonStatusEnum.ENABLE.getStatus())
871 .role(ImGroupMemberRoleEnum.ADMIN.getRole()).build())); 872 .role(ImGroupMemberRoleEnum.ADMIN.getRole()).build()));
872 when(groupMemberService.updateGroupMemberRole(eq(10L), anyCollection(), 873 when(groupMemberService.updateGroupMemberRole(eq(10L), anyCollection(),
@@ -874,7 +875,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -874,7 +875,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
874 875
875 ImGroupAdminRemoveReqVO reqVO = new ImGroupAdminRemoveReqVO(); 876 ImGroupAdminRemoveReqVO reqVO = new ImGroupAdminRemoveReqVO();
876 reqVO.setId(10L); 877 reqVO.setId(10L);
877 - reqVO.setUserIds(List.of(2L)); 878 + reqVO.setUserIds(listOf(2L));
878 879
879 groupService.removeGroupAdmin(1L, reqVO); 880 groupService.removeGroupAdmin(1L, reqVO);
880 881
@@ -894,13 +895,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -894,13 +895,13 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
894 .status(CommonStatusEnum.ENABLE.getStatus()).build(); 895 .status(CommonStatusEnum.ENABLE.getStatus()).build();
895 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group); 896 when(groupMapper.selectByIdForUpdate(10L)).thenReturn(group);
896 // 目标已是 MEMBER:撤销无需操作 897 // 目标已是 MEMBER:撤销无需操作
897 - when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(List.of( 898 + when(groupMemberService.getGroupMembers(eq(10L), anyCollection())).thenReturn(listOf(
898 ImGroupMemberDO.builder().userId(2L).status(CommonStatusEnum.ENABLE.getStatus()) 899 ImGroupMemberDO.builder().userId(2L).status(CommonStatusEnum.ENABLE.getStatus())
899 .role(ImGroupMemberRoleEnum.NORMAL.getRole()).build())); 900 .role(ImGroupMemberRoleEnum.NORMAL.getRole()).build()));
900 901
901 ImGroupAdminRemoveReqVO reqVO = new ImGroupAdminRemoveReqVO(); 902 ImGroupAdminRemoveReqVO reqVO = new ImGroupAdminRemoveReqVO();
902 reqVO.setId(10L); 903 reqVO.setId(10L);
903 - reqVO.setUserIds(List.of(2L)); 904 + reqVO.setUserIds(listOf(2L));
904 905
905 groupService.removeGroupAdmin(1L, reqVO); 906 groupService.removeGroupAdmin(1L, reqVO);
906 907
@@ -922,9 +923,9 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -922,9 +923,9 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
922 when(groupMemberService.validateMemberInGroup(10L, 2L)).thenReturn( 923 when(groupMemberService.validateMemberInGroup(10L, 2L)).thenReturn(
923 ImGroupMemberDO.builder().groupId(10L).userId(2L) 924 ImGroupMemberDO.builder().groupId(10L).userId(2L)
924 .role(ImGroupMemberRoleEnum.NORMAL.getRole()).build()); 925 .role(ImGroupMemberRoleEnum.NORMAL.getRole()).build());
925 - when(groupMemberService.updateGroupMemberRole(eq(10L), eq(Set.of(2L)), 926 + when(groupMemberService.updateGroupMemberRole(eq(10L), eq(setOf(2L)),
926 eq(ImGroupMemberRoleEnum.OWNER.getRole()))).thenReturn(1); 927 eq(ImGroupMemberRoleEnum.OWNER.getRole()))).thenReturn(1);
927 - when(groupMemberService.updateGroupMemberRole(eq(10L), eq(Set.of(1L)), 928 + when(groupMemberService.updateGroupMemberRole(eq(10L), eq(setOf(1L)),
928 eq(ImGroupMemberRoleEnum.NORMAL.getRole()))).thenReturn(1); 929 eq(ImGroupMemberRoleEnum.NORMAL.getRole()))).thenReturn(1);
929 930
930 ImGroupTransferOwnerReqVO reqVO = new ImGroupTransferOwnerReqVO(); 931 ImGroupTransferOwnerReqVO reqVO = new ImGroupTransferOwnerReqVO();
@@ -938,9 +939,9 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -938,9 +939,9 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
938 verify(groupMapper).updateById(groupCaptor.capture()); 939 verify(groupMapper).updateById(groupCaptor.capture());
939 assertEquals(2L, groupCaptor.getValue().getOwnerUserId()); 940 assertEquals(2L, groupCaptor.getValue().getOwnerUserId());
940 // 旧群主 → MEMBER;新群主 → OWNER 941 // 旧群主 → MEMBER;新群主 → OWNER
941 - verify(groupMemberService).updateGroupMemberRole(eq(10L), eq(Set.of(1L)), 942 + verify(groupMemberService).updateGroupMemberRole(eq(10L), eq(setOf(1L)),
942 eq(ImGroupMemberRoleEnum.NORMAL.getRole())); 943 eq(ImGroupMemberRoleEnum.NORMAL.getRole()));
943 - verify(groupMemberService).updateGroupMemberRole(eq(10L), eq(Set.of(2L)), 944 + verify(groupMemberService).updateGroupMemberRole(eq(10L), eq(setOf(2L)),
944 eq(ImGroupMemberRoleEnum.OWNER.getRole())); 945 eq(ImGroupMemberRoleEnum.OWNER.getRole()));
945 } 946 }
946 } 947 }
@@ -1120,7 +1121,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -1120,7 +1121,7 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
1120 @Test 1121 @Test
1121 public void testGetMyGroupList_success() { 1122 public void testGetMyGroupList_success() {
1122 // 活跃群成员 1123 // 活跃群成员
1123 - when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(new ArrayList<>(List.of( 1124 + when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(new ArrayList<>(listOf(
1124 ImGroupMemberDO.builder().groupId(10L).userId(1L) 1125 ImGroupMemberDO.builder().groupId(10L).userId(1L)
1125 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 1126 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
1126 ImGroupMemberDO.builder().groupId(20L).userId(1L) 1127 ImGroupMemberDO.builder().groupId(20L).userId(1L)
@@ -1128,11 +1129,11 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest { @@ -1128,11 +1129,11 @@ public class ImGroupServiceImplTest extends BaseMockitoUnitTest {
1128 ))); 1129 )));
1129 // 最近退群成员(最近 30 天内) 1130 // 最近退群成员(最近 30 天内)
1130 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class))) 1131 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
1131 - .thenReturn(new ArrayList<>(List.of( 1132 + .thenReturn(new ArrayList<>(listOf(
1132 ImGroupMemberDO.builder().groupId(30L).userId(1L) 1133 ImGroupMemberDO.builder().groupId(30L).userId(1L)
1133 .status(CommonStatusEnum.DISABLE.getStatus()).build() 1134 .status(CommonStatusEnum.DISABLE.getStatus()).build()
1134 ))); 1135 )));
1135 - List<ImGroupDO> groups = List.of( 1136 + List<ImGroupDO> groups = listOf(
1136 ImGroupDO.builder().id(10L).status(CommonStatusEnum.ENABLE.getStatus()).build(), 1137 ImGroupDO.builder().id(10L).status(CommonStatusEnum.ENABLE.getStatus()).build(),
1137 ImGroupDO.builder().id(20L).status(CommonStatusEnum.ENABLE.getStatus()).build(), 1138 ImGroupDO.builder().id(20L).status(CommonStatusEnum.ENABLE.getStatus()).build(),
1138 ImGroupDO.builder().id(30L).status(CommonStatusEnum.ENABLE.getStatus()).build() 1139 ImGroupDO.builder().id(30L).status(CommonStatusEnum.ENABLE.getStatus()).build()
yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/service/message/ImGroupMessageServiceImplTest.java
@@ -34,6 +34,7 @@ import java.time.LocalDateTime; @@ -34,6 +34,7 @@ import java.time.LocalDateTime;
34 import java.util.*; 34 import java.util.*;
35 35
36 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*; 36 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
  37 +import static cn.iocoder.yudao.module.im.util.ImTestCollectionUtils.*;
37 import static org.junit.jupiter.api.Assertions.*; 38 import static org.junit.jupiter.api.Assertions.*;
38 import static org.mockito.ArgumentMatchers.*; 39 import static org.mockito.ArgumentMatchers.*;
39 import static org.mockito.Mockito.*; 40 import static org.mockito.Mockito.*;
@@ -96,7 +97,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -96,7 +97,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
96 when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn(member); 97 when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn(member);
97 98
98 when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)) 99 when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L))
99 - .thenReturn(List.of(1L, 2L, 3L)); 100 + .thenReturn(listOf(1L, 2L, 3L));
100 when(groupMessageMapper.insert(any(ImGroupMessageDO.class))).thenAnswer(invocation -> { 101 when(groupMessageMapper.insert(any(ImGroupMessageDO.class))).thenAnswer(invocation -> {
101 ImGroupMessageDO msg = invocation.getArgument(0); 102 ImGroupMessageDO msg = invocation.getArgument(0);
102 msg.setId(99L); 103 msg.setId(99L);
@@ -168,7 +169,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -168,7 +169,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
168 .groupId(10L).userId(1L) 169 .groupId(10L).userId(1L)
169 .status(CommonStatusEnum.ENABLE.getStatus()) 170 .status(CommonStatusEnum.ENABLE.getStatus())
170 .joinTime(joinTime).build(); 171 .joinTime(joinTime).build();
171 - when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member)); 172 + when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(listOf(member));
172 173
173 // 入群前 1 条 + 入群后 1 条 174 // 入群前 1 条 + 入群后 1 条
174 ImGroupMessageDO beforeJoin = ImGroupMessageDO.builder() 175 ImGroupMessageDO beforeJoin = ImGroupMessageDO.builder()
@@ -177,11 +178,11 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -177,11 +178,11 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
177 ImGroupMessageDO afterJoin = ImGroupMessageDO.builder() 178 ImGroupMessageDO afterJoin = ImGroupMessageDO.builder()
178 .id(2L).groupId(10L).senderId(2L) 179 .id(2L).groupId(10L).senderId(2L)
179 .sendTime(now.minusHours(1)).build(); 180 .sendTime(now.minusHours(1)).build();
180 - when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L), 181 + when(groupMessageMapper.selectListByMinId(eq(listOf(10L)), eq(0L),
181 any(LocalDateTime.class), eq(100))) 182 any(LocalDateTime.class), eq(100)))
182 - .thenReturn(List.of(beforeJoin, afterJoin)); 183 + .thenReturn(listOf(beforeJoin, afterJoin));
183 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class))) 184 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
184 - .thenReturn(List.of()); 185 + .thenReturn(listOf());
185 186
186 // 调用 187 // 调用
187 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100); 188 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100);
@@ -200,26 +201,26 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -200,26 +201,26 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
200 .groupId(10L).userId(1L) 201 .groupId(10L).userId(1L)
201 .status(CommonStatusEnum.ENABLE.getStatus()) 202 .status(CommonStatusEnum.ENABLE.getStatus())
202 .joinTime(joinTime).build(); 203 .joinTime(joinTime).build();
203 - when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member)); 204 + when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(listOf(member));
204 205
205 ImGroupMessageDO beforeJoin = ImGroupMessageDO.builder() 206 ImGroupMessageDO beforeJoin = ImGroupMessageDO.builder()
206 .id(1L).groupId(10L).senderId(2L) 207 .id(1L).groupId(10L).senderId(2L)
207 .sendTime(now.minusHours(3)).build(); 208 .sendTime(now.minusHours(3)).build();
208 ImGroupMessageDO directedMsg = ImGroupMessageDO.builder() 209 ImGroupMessageDO directedMsg = ImGroupMessageDO.builder()
209 .id(2L).groupId(10L).senderId(2L) 210 .id(2L).groupId(10L).senderId(2L)
210 - .receiverUserIds(List.of(2L, 3L)) 211 + .receiverUserIds(listOf(2L, 3L))
211 .sendTime(now.minusHours(2)).build(); 212 .sendTime(now.minusHours(2)).build();
212 ImGroupMessageDO visibleMsg = ImGroupMessageDO.builder() 213 ImGroupMessageDO visibleMsg = ImGroupMessageDO.builder()
213 .id(3L).groupId(10L).senderId(2L) 214 .id(3L).groupId(10L).senderId(2L)
214 .sendTime(now.minusMinutes(30)).build(); 215 .sendTime(now.minusMinutes(30)).build();
215 - when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L), 216 + when(groupMessageMapper.selectListByMinId(eq(listOf(10L)), eq(0L),
216 any(LocalDateTime.class), eq(2))) 217 any(LocalDateTime.class), eq(2)))
217 - .thenReturn(List.of(beforeJoin, directedMsg));  
218 - when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(2L), 218 + .thenReturn(listOf(beforeJoin, directedMsg));
  219 + when(groupMessageMapper.selectListByMinId(eq(listOf(10L)), eq(2L),
219 any(LocalDateTime.class), eq(2))) 220 any(LocalDateTime.class), eq(2)))
220 - .thenReturn(List.of(visibleMsg)); 221 + .thenReturn(listOf(visibleMsg));
221 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class))) 222 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
222 - .thenReturn(List.of()); 223 + .thenReturn(listOf());
223 224
224 // 调用 225 // 调用
225 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 2); 226 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 2);
@@ -227,9 +228,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -227,9 +228,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
227 // 断言:仅返回第二批的可见消息;两批 selectListByMinId 各被调用一次 228 // 断言:仅返回第二批的可见消息;两批 selectListByMinId 各被调用一次
228 assertEquals(1, result.size()); 229 assertEquals(1, result.size());
229 assertEquals(3L, result.get(0).getId()); 230 assertEquals(3L, result.get(0).getId());
230 - verify(groupMessageMapper).selectListByMinId(eq(List.of(10L)), eq(0L), 231 + verify(groupMessageMapper).selectListByMinId(eq(listOf(10L)), eq(0L),
231 any(LocalDateTime.class), eq(2)); 232 any(LocalDateTime.class), eq(2));
232 - verify(groupMessageMapper).selectListByMinId(eq(List.of(10L)), eq(2L), 233 + verify(groupMessageMapper).selectListByMinId(eq(listOf(10L)), eq(2L),
233 any(LocalDateTime.class), eq(2)); 234 any(LocalDateTime.class), eq(2));
234 } 235 }
235 236
@@ -241,14 +242,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -241,14 +242,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
241 .groupId(10L).userId(1L) 242 .groupId(10L).userId(1L)
242 .status(CommonStatusEnum.ENABLE.getStatus()) 243 .status(CommonStatusEnum.ENABLE.getStatus())
243 .joinTime(now.minusDays(10)).build(); 244 .joinTime(now.minusDays(10)).build();
244 - when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(activeMember)); 245 + when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(listOf(activeMember));
245 246
246 ImGroupMessageDO activeMsg = ImGroupMessageDO.builder() 247 ImGroupMessageDO activeMsg = ImGroupMessageDO.builder()
247 .id(5L).groupId(10L).senderId(2L) 248 .id(5L).groupId(10L).senderId(2L)
248 .sendTime(now.minusHours(2)).build(); 249 .sendTime(now.minusHours(2)).build();
249 - when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L), 250 + when(groupMessageMapper.selectListByMinId(eq(listOf(10L)), eq(0L),
250 any(LocalDateTime.class), eq(100))) 251 any(LocalDateTime.class), eq(100)))
251 - .thenReturn(List.of(activeMsg)); 252 + .thenReturn(listOf(activeMsg));
252 253
253 // 已退群:退群时间在窗口内(minId=0,minQuitTime 直接用 minSendTime) 254 // 已退群:退群时间在窗口内(minId=0,minQuitTime 直接用 minSendTime)
254 LocalDateTime quitTime = now.minusDays(3); 255 LocalDateTime quitTime = now.minusDays(3);
@@ -258,14 +259,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -258,14 +259,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
258 .joinTime(now.minusDays(20)) 259 .joinTime(now.minusDays(20))
259 .quitTime(quitTime).build(); 260 .quitTime(quitTime).build();
260 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class))) 261 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
261 - .thenReturn(List.of(quitMember)); 262 + .thenReturn(listOf(quitMember));
262 263
263 ImGroupMessageDO quitGroupMsg = ImGroupMessageDO.builder() 264 ImGroupMessageDO quitGroupMsg = ImGroupMessageDO.builder()
264 .id(3L).groupId(20L).senderId(99L) 265 .id(3L).groupId(20L).senderId(99L)
265 .sendTime(now.minusDays(5)).build(); 266 .sendTime(now.minusDays(5)).build();
266 when(groupMessageMapper.selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(0L), 267 when(groupMessageMapper.selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(0L),
267 any(LocalDateTime.class), eq(quitTime), eq(100))) 268 any(LocalDateTime.class), eq(quitTime), eq(100)))
268 - .thenReturn(List.of(quitGroupMsg)); 269 + .thenReturn(listOf(quitGroupMsg));
269 270
270 // 调用 271 // 调用
271 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100); 272 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100);
@@ -280,14 +281,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -280,14 +281,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
280 public void testPullMessages_quitMemberFilteredByBoundarySendTime() { 281 public void testPullMessages_quitMemberFilteredByBoundarySendTime() {
281 // 准备:minId > 0,边界消息 sendTime 晚于窗口起点,应当被用作 minQuitTime 282 // 准备:minId > 0,边界消息 sendTime 晚于窗口起点,应当被用作 minQuitTime
282 LocalDateTime now = LocalDateTime.now(); 283 LocalDateTime now = LocalDateTime.now();
283 - when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of()); 284 + when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(listOf());
284 285
285 LocalDateTime boundarySendTime = now.minusDays(2); 286 LocalDateTime boundarySendTime = now.minusDays(2);
286 ImGroupMessageDO boundary = ImGroupMessageDO.builder() 287 ImGroupMessageDO boundary = ImGroupMessageDO.builder()
287 .id(8L).groupId(10L).senderId(2L).sendTime(boundarySendTime).build(); 288 .id(8L).groupId(10L).senderId(2L).sendTime(boundarySendTime).build();
288 when(groupMessageMapper.selectById(8L)).thenReturn(boundary); 289 when(groupMessageMapper.selectById(8L)).thenReturn(boundary);
289 when(groupMemberService.getQuitGroupMemberListByUserId(1L, boundarySendTime)) 290 when(groupMemberService.getQuitGroupMemberListByUserId(1L, boundarySendTime))
290 - .thenReturn(List.of()); 291 + .thenReturn(listOf());
291 292
292 // 调用 293 // 调用
293 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 8L, 100); 294 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 8L, 100);
@@ -306,24 +307,24 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -306,24 +307,24 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
306 .groupId(10L).userId(1L) 307 .groupId(10L).userId(1L)
307 .status(CommonStatusEnum.ENABLE.getStatus()) 308 .status(CommonStatusEnum.ENABLE.getStatus())
308 .joinTime(joinTime).build(); 309 .joinTime(joinTime).build();
309 - when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(activeMember)); 310 + when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(listOf(activeMember));
310 311
311 ImGroupMessageDO beforeJoin = ImGroupMessageDO.builder() 312 ImGroupMessageDO beforeJoin = ImGroupMessageDO.builder()
312 .id(100L).groupId(10L).senderId(2L) 313 .id(100L).groupId(10L).senderId(2L)
313 .sendTime(now.minusHours(3)).build(); 314 .sendTime(now.minusHours(3)).build();
314 ImGroupMessageDO directedMsg = ImGroupMessageDO.builder() 315 ImGroupMessageDO directedMsg = ImGroupMessageDO.builder()
315 .id(101L).groupId(10L).senderId(2L) 316 .id(101L).groupId(10L).senderId(2L)
316 - .receiverUserIds(List.of(2L, 3L)) 317 + .receiverUserIds(listOf(2L, 3L))
317 .sendTime(now.minusMinutes(50)).build(); 318 .sendTime(now.minusMinutes(50)).build();
318 ImGroupMessageDO visibleActiveMsg = ImGroupMessageDO.builder() 319 ImGroupMessageDO visibleActiveMsg = ImGroupMessageDO.builder()
319 .id(102L).groupId(10L).senderId(2L) 320 .id(102L).groupId(10L).senderId(2L)
320 .sendTime(now.minusMinutes(30)).build(); 321 .sendTime(now.minusMinutes(30)).build();
321 - when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(8L), 322 + when(groupMessageMapper.selectListByMinId(eq(listOf(10L)), eq(8L),
322 any(LocalDateTime.class), eq(2))) 323 any(LocalDateTime.class), eq(2)))
323 - .thenReturn(List.of(beforeJoin, directedMsg));  
324 - when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(101L), 324 + .thenReturn(listOf(beforeJoin, directedMsg));
  325 + when(groupMessageMapper.selectListByMinId(eq(listOf(10L)), eq(101L),
325 any(LocalDateTime.class), eq(2))) 326 any(LocalDateTime.class), eq(2)))
326 - .thenReturn(List.of(visibleActiveMsg)); 327 + .thenReturn(listOf(visibleActiveMsg));
327 328
328 LocalDateTime boundarySendTime = now.minusDays(2); 329 LocalDateTime boundarySendTime = now.minusDays(2);
329 ImGroupMessageDO boundary = ImGroupMessageDO.builder() 330 ImGroupMessageDO boundary = ImGroupMessageDO.builder()
@@ -337,14 +338,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -337,14 +338,14 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
337 .joinTime(now.minusDays(10)) 338 .joinTime(now.minusDays(10))
338 .quitTime(quitTime).build(); 339 .quitTime(quitTime).build();
339 when(groupMemberService.getQuitGroupMemberListByUserId(1L, boundarySendTime)) 340 when(groupMemberService.getQuitGroupMemberListByUserId(1L, boundarySendTime))
340 - .thenReturn(List.of(quitMember)); 341 + .thenReturn(listOf(quitMember));
341 342
342 ImGroupMessageDO quitGroupMsg = ImGroupMessageDO.builder() 343 ImGroupMessageDO quitGroupMsg = ImGroupMessageDO.builder()
343 .id(50L).groupId(20L).senderId(99L) 344 .id(50L).groupId(20L).senderId(99L)
344 .sendTime(now.minusDays(1)).build(); 345 .sendTime(now.minusDays(1)).build();
345 when(groupMessageMapper.selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(8L), 346 when(groupMessageMapper.selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(8L),
346 any(LocalDateTime.class), eq(quitTime), eq(2))) 347 any(LocalDateTime.class), eq(quitTime), eq(2)))
347 - .thenReturn(List.of(quitGroupMsg)); 348 + .thenReturn(listOf(quitGroupMsg));
348 349
349 // 调用 350 // 调用
350 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 8L, 2); 351 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 8L, 2);
@@ -353,9 +354,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -353,9 +354,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
353 assertEquals(2, result.size()); 354 assertEquals(2, result.size());
354 assertEquals(50L, result.get(0).getId()); 355 assertEquals(50L, result.get(0).getId());
355 assertEquals(102L, result.get(1).getId()); 356 assertEquals(102L, result.get(1).getId());
356 - verify(groupMessageMapper).selectListByMinId(eq(List.of(10L)), eq(8L), 357 + verify(groupMessageMapper).selectListByMinId(eq(listOf(10L)), eq(8L),
357 any(LocalDateTime.class), eq(2)); 358 any(LocalDateTime.class), eq(2));
358 - verify(groupMessageMapper).selectListByMinId(eq(List.of(10L)), eq(101L), 359 + verify(groupMessageMapper).selectListByMinId(eq(listOf(10L)), eq(101L),
359 any(LocalDateTime.class), eq(2)); 360 any(LocalDateTime.class), eq(2));
360 verify(groupMemberService).getQuitGroupMemberListByUserId(1L, boundarySendTime); 361 verify(groupMemberService).getQuitGroupMemberListByUserId(1L, boundarySendTime);
361 verify(groupMessageMapper).selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(8L), 362 verify(groupMessageMapper).selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(8L),
@@ -372,22 +373,22 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -372,22 +373,22 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
372 .groupId(10L).userId(1L) 373 .groupId(10L).userId(1L)
373 .status(CommonStatusEnum.ENABLE.getStatus()) 374 .status(CommonStatusEnum.ENABLE.getStatus())
374 .joinTime(now.minusDays(10)).build(); 375 .joinTime(now.minusDays(10)).build();
375 - when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member)); 376 + when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(listOf(member));
376 377
377 // 定向接收消息:只给用户 2 和 3 378 // 定向接收消息:只给用户 2 和 3
378 ImGroupMessageDO directedMsg = ImGroupMessageDO.builder() 379 ImGroupMessageDO directedMsg = ImGroupMessageDO.builder()
379 .id(1L).groupId(10L).senderId(5L) 380 .id(1L).groupId(10L).senderId(5L)
380 - .receiverUserIds(List.of(2L, 3L)) 381 + .receiverUserIds(listOf(2L, 3L))
381 .sendTime(now.minusHours(2)).build(); 382 .sendTime(now.minusHours(2)).build();
382 // 全员消息 383 // 全员消息
383 ImGroupMessageDO allMsg = ImGroupMessageDO.builder() 384 ImGroupMessageDO allMsg = ImGroupMessageDO.builder()
384 .id(2L).groupId(10L).senderId(5L) 385 .id(2L).groupId(10L).senderId(5L)
385 .sendTime(now.minusHours(1)).build(); 386 .sendTime(now.minusHours(1)).build();
386 - when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L), 387 + when(groupMessageMapper.selectListByMinId(eq(listOf(10L)), eq(0L),
387 any(LocalDateTime.class), eq(100))) 388 any(LocalDateTime.class), eq(100)))
388 - .thenReturn(List.of(directedMsg, allMsg)); 389 + .thenReturn(listOf(directedMsg, allMsg));
389 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class))) 390 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
390 - .thenReturn(List.of()); 391 + .thenReturn(listOf());
391 392
392 // 调用 393 // 调用
393 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100); 394 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100);
@@ -405,24 +406,24 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -405,24 +406,24 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
405 .groupId(10L).userId(1L) 406 .groupId(10L).userId(1L)
406 .status(CommonStatusEnum.ENABLE.getStatus()) 407 .status(CommonStatusEnum.ENABLE.getStatus())
407 .joinTime(now.minusDays(10)).build(); 408 .joinTime(now.minusDays(10)).build();
408 - when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member)); 409 + when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(listOf(member));
409 410
410 ImGroupMessageDO atMsg = ImGroupMessageDO.builder() 411 ImGroupMessageDO atMsg = ImGroupMessageDO.builder()
411 .id(1L).groupId(10L).senderId(2L) 412 .id(1L).groupId(10L).senderId(2L)
412 - .atUserIds(List.of(1L, 3L)) 413 + .atUserIds(listOf(1L, 3L))
413 .sendTime(now.minusHours(1)).build(); 414 .sendTime(now.minusHours(1)).build();
414 - when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L), 415 + when(groupMessageMapper.selectListByMinId(eq(listOf(10L)), eq(0L),
415 any(LocalDateTime.class), eq(100))) 416 any(LocalDateTime.class), eq(100)))
416 - .thenReturn(List.of(atMsg)); 417 + .thenReturn(listOf(atMsg));
417 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class))) 418 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
418 - .thenReturn(List.of()); 419 + .thenReturn(listOf());
419 420
420 // 调用 421 // 调用
421 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100); 422 List<ImGroupMessageDO> result = groupMessageService.pullGroupMessageList(1L, 0L, 100);
422 423
423 // 断言:@ 字段正确返回 424 // 断言:@ 字段正确返回
424 assertEquals(1, result.size()); 425 assertEquals(1, result.size());
425 - assertEquals(List.of(1L, 3L), result.get(0).getAtUserIds()); 426 + assertEquals(listOf(1L, 3L), result.get(0).getAtUserIds());
426 } 427 }
427 428
428 @Test 429 @Test
@@ -432,15 +433,15 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -432,15 +433,15 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
432 .groupId(10L).userId(1L) 433 .groupId(10L).userId(1L)
433 .status(CommonStatusEnum.ENABLE.getStatus()) 434 .status(CommonStatusEnum.ENABLE.getStatus())
434 .joinTime(now.minusDays(10)).build(); 435 .joinTime(now.minusDays(10)).build();
435 - when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(activeMember)); 436 + when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(listOf(activeMember));
436 437
437 ImGroupMessageDO activeMsg1 = ImGroupMessageDO.builder() 438 ImGroupMessageDO activeMsg1 = ImGroupMessageDO.builder()
438 .id(1000L).groupId(10L).senderId(2L).sendTime(now.minusHours(2)).build(); 439 .id(1000L).groupId(10L).senderId(2L).sendTime(now.minusHours(2)).build();
439 ImGroupMessageDO activeMsg2 = ImGroupMessageDO.builder() 440 ImGroupMessageDO activeMsg2 = ImGroupMessageDO.builder()
440 .id(2000L).groupId(10L).senderId(2L).sendTime(now.minusHours(1)).build(); 441 .id(2000L).groupId(10L).senderId(2L).sendTime(now.minusHours(1)).build();
441 - when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L), 442 + when(groupMessageMapper.selectListByMinId(eq(listOf(10L)), eq(0L),
442 any(LocalDateTime.class), eq(2))) 443 any(LocalDateTime.class), eq(2)))
443 - .thenReturn(List.of(activeMsg1, activeMsg2)); 444 + .thenReturn(listOf(activeMsg1, activeMsg2));
444 445
445 LocalDateTime quitTime = now.minusDays(1); 446 LocalDateTime quitTime = now.minusDays(1);
446 ImGroupMemberDO quitMember = ImGroupMemberDO.builder() 447 ImGroupMemberDO quitMember = ImGroupMemberDO.builder()
@@ -449,7 +450,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -449,7 +450,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
449 .joinTime(now.minusDays(20)) 450 .joinTime(now.minusDays(20))
450 .quitTime(quitTime).build(); 451 .quitTime(quitTime).build();
451 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class))) 452 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
452 - .thenReturn(List.of(quitMember)); 453 + .thenReturn(listOf(quitMember));
453 454
454 ImGroupMessageDO quit1 = ImGroupMessageDO.builder() 455 ImGroupMessageDO quit1 = ImGroupMessageDO.builder()
455 .id(150L).groupId(20L).senderId(99L).sendTime(now.minusDays(5)).build(); 456 .id(150L).groupId(20L).senderId(99L).sendTime(now.minusDays(5)).build();
@@ -457,7 +458,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -457,7 +458,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
457 .id(160L).groupId(20L).senderId(99L).sendTime(now.minusDays(4)).build(); 458 .id(160L).groupId(20L).senderId(99L).sendTime(now.minusDays(4)).build();
458 when(groupMessageMapper.selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(0L), 459 when(groupMessageMapper.selectListByGroupIdAndMinIdAndQuitTimeBefore(eq(20L), eq(0L),
459 any(LocalDateTime.class), eq(quitTime), eq(2))) 460 any(LocalDateTime.class), eq(quitTime), eq(2)))
460 - .thenReturn(List.of(quit1, quit2)); 461 + .thenReturn(listOf(quit1, quit2));
461 462
462 when(groupMessageReadRedisDAO.getReadMaxMessageId(anyLong(), eq(1L))).thenReturn(null); 463 when(groupMessageReadRedisDAO.getReadMaxMessageId(anyLong(), eq(1L))).thenReturn(null);
463 464
@@ -475,7 +476,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -475,7 +476,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
475 .groupId(10L).userId(1L) 476 .groupId(10L).userId(1L)
476 .status(CommonStatusEnum.ENABLE.getStatus()) 477 .status(CommonStatusEnum.ENABLE.getStatus())
477 .joinTime(now.minusDays(10)).build(); 478 .joinTime(now.minusDays(10)).build();
478 - when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member)); 479 + when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(listOf(member));
479 480
480 ImGroupMessageDO low = ImGroupMessageDO.builder() 481 ImGroupMessageDO low = ImGroupMessageDO.builder()
481 .id(5L).groupId(10L).senderId(2L).status(ImMessageStatusEnum.UNREAD.getStatus()) 482 .id(5L).groupId(10L).senderId(2L).status(ImMessageStatusEnum.UNREAD.getStatus())
@@ -483,11 +484,11 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -483,11 +484,11 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
483 ImGroupMessageDO high = ImGroupMessageDO.builder() 484 ImGroupMessageDO high = ImGroupMessageDO.builder()
484 .id(10L).groupId(10L).senderId(2L).status(ImMessageStatusEnum.UNREAD.getStatus()) 485 .id(10L).groupId(10L).senderId(2L).status(ImMessageStatusEnum.UNREAD.getStatus())
485 .sendTime(now.minusHours(1)).build(); 486 .sendTime(now.minusHours(1)).build();
486 - when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L), 487 + when(groupMessageMapper.selectListByMinId(eq(listOf(10L)), eq(0L),
487 any(LocalDateTime.class), eq(100))) 488 any(LocalDateTime.class), eq(100)))
488 - .thenReturn(List.of(low, high)); 489 + .thenReturn(listOf(low, high));
489 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class))) 490 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
490 - .thenReturn(List.of()); 491 + .thenReturn(listOf());
491 492
492 when(groupMessageReadRedisDAO.getReadMaxMessageId(10L, 1L)).thenReturn(7L); 493 when(groupMessageReadRedisDAO.getReadMaxMessageId(10L, 1L)).thenReturn(7L);
493 494
@@ -505,18 +506,18 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -505,18 +506,18 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
505 .groupId(10L).userId(1L) 506 .groupId(10L).userId(1L)
506 .status(CommonStatusEnum.ENABLE.getStatus()) 507 .status(CommonStatusEnum.ENABLE.getStatus())
507 .joinTime(now.minusDays(10)).build(); 508 .joinTime(now.minusDays(10)).build();
508 - when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(List.of(member)); 509 + when(groupMemberService.getActiveGroupMemberListByUserId(1L)).thenReturn(listOf(member));
509 510
510 ImGroupMessageDO receiptMsg = ImGroupMessageDO.builder() 511 ImGroupMessageDO receiptMsg = ImGroupMessageDO.builder()
511 .id(100L).groupId(10L).senderId(1L) 512 .id(100L).groupId(10L).senderId(1L)
512 .status(ImMessageStatusEnum.UNREAD.getStatus()) 513 .status(ImMessageStatusEnum.UNREAD.getStatus())
513 .receiptStatus(ImGroupMessageReceiptStatusEnum.PENDING.getStatus()) 514 .receiptStatus(ImGroupMessageReceiptStatusEnum.PENDING.getStatus())
514 .sendTime(now.minusHours(1)).build(); 515 .sendTime(now.minusHours(1)).build();
515 - when(groupMessageMapper.selectListByMinId(eq(List.of(10L)), eq(0L), 516 + when(groupMessageMapper.selectListByMinId(eq(listOf(10L)), eq(0L),
516 any(LocalDateTime.class), eq(100))) 517 any(LocalDateTime.class), eq(100)))
517 - .thenReturn(List.of(receiptMsg)); 518 + .thenReturn(listOf(receiptMsg));
518 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class))) 519 when(groupMemberService.getQuitGroupMemberListByUserId(eq(1L), any(LocalDateTime.class)))
519 - .thenReturn(List.of()); 520 + .thenReturn(listOf());
520 521
521 when(groupMessageReadRedisDAO.getReadMaxMessageId(10L, 1L)).thenReturn(100L); 522 when(groupMessageReadRedisDAO.getReadMaxMessageId(10L, 1L)).thenReturn(100L);
522 Map<Long, Long> positions = new HashMap<>(); 523 Map<Long, Long> positions = new HashMap<>();
@@ -525,7 +526,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -525,7 +526,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
525 positions.put(3L, 50L); 526 positions.put(3L, 50L);
526 when(groupMessageReadRedisDAO.getReadMaxMessageIdMap(10L)).thenReturn(positions); 527 when(groupMessageReadRedisDAO.getReadMaxMessageIdMap(10L)).thenReturn(positions);
527 528
528 - List<ImGroupMemberDO> allMembers = List.of( 529 + List<ImGroupMemberDO> allMembers = listOf(
529 member, 530 member,
530 ImGroupMemberDO.builder().groupId(10L).userId(2L) 531 ImGroupMemberDO.builder().groupId(10L).userId(2L)
531 .status(CommonStatusEnum.ENABLE.getStatus()) 532 .status(CommonStatusEnum.ENABLE.getStatus())
@@ -564,7 +565,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -564,7 +565,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
564 when(groupMessageMapper.insert(any(ImGroupMessageDO.class))).thenReturn(1); 565 when(groupMessageMapper.insert(any(ImGroupMessageDO.class))).thenReturn(1);
565 566
566 when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)) 567 when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L))
567 - .thenReturn(List.of(1L, 2L)); 568 + .thenReturn(listOf(1L, 2L));
568 569
569 // 调用 570 // 调用
570 ImGroupMessageDO result = groupMessageService.recallGroupMessage(1L, 50L); 571 ImGroupMessageDO result = groupMessageService.recallGroupMessage(1L, 50L);
@@ -669,7 +670,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -669,7 +670,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
669 // 用户 2: 正常,入群在消息之前 670 // 用户 2: 正常,入群在消息之前
670 // 用户 3: 正常,但入群在消息之后 → 不可见 671 // 用户 3: 正常,但入群在消息之后 → 不可见
671 // 用户 5: 发送者,不计入回执 672 // 用户 5: 发送者,不计入回执
672 - List<ImGroupMemberDO> allMembers = List.of( 673 + List<ImGroupMemberDO> allMembers = listOf(
673 currentMember, 674 currentMember,
674 ImGroupMemberDO.builder().groupId(10L).userId(1L) 675 ImGroupMemberDO.builder().groupId(10L).userId(1L)
675 .status(CommonStatusEnum.ENABLE.getStatus()) 676 .status(CommonStatusEnum.ENABLE.getStatus())
@@ -739,7 +740,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -739,7 +740,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
739 ImGroupMemberDO member = ImGroupMemberDO.builder() 740 ImGroupMemberDO member = ImGroupMemberDO.builder()
740 .groupId(10L).userId(1L).status(CommonStatusEnum.ENABLE.getStatus()).build(); 741 .groupId(10L).userId(1L).status(CommonStatusEnum.ENABLE.getStatus()).build();
741 when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn(member); 742 when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn(member);
742 - when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(List.of(1L)); 743 + when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(listOf(1L));
743 when(groupMessageMapper.insert(any(ImGroupMessageDO.class))).thenReturn(1); 744 when(groupMessageMapper.insert(any(ImGroupMessageDO.class))).thenReturn(1);
744 745
745 // 调用 746 // 调用
@@ -821,7 +822,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -821,7 +822,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
821 .id(100L).groupId(10L).senderId(2L).sendTime(LocalDateTime.now()).build()); 822 .id(100L).groupId(10L).senderId(2L).sendTime(LocalDateTime.now()).build());
822 when(groupMessageReadRedisDAO.getReadMaxMessageId(10L, 1L)).thenReturn(5L); 823 when(groupMessageReadRedisDAO.getReadMaxMessageId(10L, 1L)).thenReturn(5L);
823 // readGroupMessageEvent 内部会调 selectListByGroupIdAndPendingReceipt → 返回空简化流程 824 // readGroupMessageEvent 内部会调 selectListByGroupIdAndPendingReceipt → 返回空简化流程
824 - when(groupMessageMapper.selectListByGroupIdAndPendingReceipt(10L, 5L, 100L)).thenReturn(List.of()); 825 + when(groupMessageMapper.selectListByGroupIdAndPendingReceipt(10L, 5L, 100L)).thenReturn(listOf());
825 826
826 // 调用 827 // 调用
827 groupMessageService.readGroupMessages(1L, 10L, 100L); 828 groupMessageService.readGroupMessages(1L, 10L, 100L);
@@ -875,7 +876,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -875,7 +876,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
875 ImGroupMemberDO member = ImGroupMemberDO.builder() 876 ImGroupMemberDO member = ImGroupMemberDO.builder()
876 .groupId(10L).userId(1L).status(CommonStatusEnum.ENABLE.getStatus()).build(); 877 .groupId(10L).userId(1L).status(CommonStatusEnum.ENABLE.getStatus()).build();
877 when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn(member); 878 when(groupMemberService.validateMemberInGroup(10L, 1L)).thenReturn(member);
878 - when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(List.of(1L, 2L)); 879 + when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(listOf(1L, 2L));
879 880
880 ImGroupMessageDO result = groupMessageService.sendGroupMessage(1L, reqVO); 881 ImGroupMessageDO result = groupMessageService.sendGroupMessage(1L, reqVO);
881 882
@@ -932,8 +933,8 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -932,8 +933,8 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
932 .receiptStatus(ImGroupMessageReceiptStatusEnum.PENDING.getStatus()) 933 .receiptStatus(ImGroupMessageReceiptStatusEnum.PENDING.getStatus())
933 .status(ImMessageStatusEnum.UNREAD.getStatus()).build(); 934 .status(ImMessageStatusEnum.UNREAD.getStatus()).build();
934 when(groupMessageMapper.selectListByGroupIdAndPendingReceipt(10L, 0L, 100L)) 935 when(groupMessageMapper.selectListByGroupIdAndPendingReceipt(10L, 0L, 100L))
935 - .thenReturn(List.of(pending));  
936 - List<ImGroupMemberDO> activeMembers = List.of( 936 + .thenReturn(listOf(pending));
  937 + List<ImGroupMemberDO> activeMembers = listOf(
937 ImGroupMemberDO.builder().groupId(10L).userId(5L) 938 ImGroupMemberDO.builder().groupId(10L).userId(5L)
938 .status(CommonStatusEnum.ENABLE.getStatus()) 939 .status(CommonStatusEnum.ENABLE.getStatus())
939 .joinTime(LocalDateTime.now().minusDays(10)).build(), 940 .joinTime(LocalDateTime.now().minusDays(10)).build(),
@@ -971,8 +972,8 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -971,8 +972,8 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
971 .receiptStatus(ImGroupMessageReceiptStatusEnum.PENDING.getStatus()) 972 .receiptStatus(ImGroupMessageReceiptStatusEnum.PENDING.getStatus())
972 .status(ImMessageStatusEnum.UNREAD.getStatus()).build(); 973 .status(ImMessageStatusEnum.UNREAD.getStatus()).build();
973 when(groupMessageMapper.selectListByGroupIdAndPendingReceipt(10L, 0L, 100L)) 974 when(groupMessageMapper.selectListByGroupIdAndPendingReceipt(10L, 0L, 100L))
974 - .thenReturn(List.of(pending));  
975 - List<ImGroupMemberDO> activeMembers = List.of( 975 + .thenReturn(listOf(pending));
  976 + List<ImGroupMemberDO> activeMembers = listOf(
976 ImGroupMemberDO.builder().groupId(10L).userId(5L) 977 ImGroupMemberDO.builder().groupId(10L).userId(5L)
977 .status(CommonStatusEnum.ENABLE.getStatus()) 978 .status(CommonStatusEnum.ENABLE.getStatus())
978 .joinTime(LocalDateTime.now().minusDays(10)).build(), 979 .joinTime(LocalDateTime.now().minusDays(10)).build(),
@@ -1006,7 +1007,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -1006,7 +1007,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
1006 .setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType()) 1007 .setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType())
1007 .setContent("{\"messageId\":1}"); 1008 .setContent("{\"messageId\":1}");
1008 when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)) 1009 when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L))
1009 - .thenReturn(List.of(1L, 2L, 3L, 4L)); 1010 + .thenReturn(listOf(1L, 2L, 3L, 4L));
1010 1011
1011 groupMessageService.sendGroupMessage(1L, dto); 1012 groupMessageService.sendGroupMessage(1L, dto);
1012 1013
@@ -1023,9 +1024,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -1023,9 +1024,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
1023 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO() 1024 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
1024 .setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType()) 1025 .setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType())
1025 .setContent("{\"messageId\":1}") 1026 .setContent("{\"messageId\":1}")
1026 - .setReceiverUserIds(List.of(2L, 3L)); 1027 + .setReceiverUserIds(listOf(2L, 3L));
1027 when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)) 1028 when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L))
1028 - .thenReturn(List.of(1L, 2L, 3L, 4L)); 1029 + .thenReturn(listOf(1L, 2L, 3L, 4L));
1029 1030
1030 groupMessageService.sendGroupMessage(1L, dto); 1031 groupMessageService.sendGroupMessage(1L, dto);
1031 1032
@@ -1042,9 +1043,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -1042,9 +1043,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
1042 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO() 1043 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
1043 .setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType()) 1044 .setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType())
1044 .setContent("{\"messageId\":1}") 1045 .setContent("{\"messageId\":1}")
1045 - .setReceiverUserIds(List.of(2L, 3L)); 1046 + .setReceiverUserIds(listOf(2L, 3L));
1046 when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)) 1047 when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L))
1047 - .thenReturn(List.of(1L, 2L, 3L, 4L)); 1048 + .thenReturn(listOf(1L, 2L, 3L, 4L));
1048 1049
1049 groupMessageService.sendGroupMessage(99L, dto); 1050 groupMessageService.sendGroupMessage(99L, dto);
1050 1051
@@ -1061,7 +1062,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -1061,7 +1062,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
1061 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO() 1062 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
1062 .setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType()) 1063 .setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType())
1063 .setContent(new RecallMessage().setMessageId(50L)); 1064 .setContent(new RecallMessage().setMessageId(50L));
1064 - when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(List.of(1L)); 1065 + when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(listOf(1L));
1065 1066
1066 groupMessageService.sendGroupMessage(1L, dto); 1067 groupMessageService.sendGroupMessage(1L, dto);
1067 1068
@@ -1085,7 +1086,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -1085,7 +1086,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
1085 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO() 1086 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
1086 .setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType()) 1087 .setGroupId(10L).setType(ImMessageTypeEnum.RECALL.getType())
1087 .setContent("{\"messageId\":50}").setReceipt(true); 1088 .setContent("{\"messageId\":50}").setReceipt(true);
1088 - when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(List.of(1L)); 1089 + when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(listOf(1L));
1089 1090
1090 groupMessageService.sendGroupMessage(1L, dto); 1091 groupMessageService.sendGroupMessage(1L, dto);
1091 1092
@@ -1099,7 +1100,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -1099,7 +1100,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
1099 // 准备:persistent=false 类型(RECEIPT 回执)→ 不入库,仅推送 1100 // 准备:persistent=false 类型(RECEIPT 回执)→ 不入库,仅推送
1100 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO() 1101 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
1101 .setGroupId(10L).setType(ImMessageTypeEnum.RECEIPT.getType()); 1102 .setGroupId(10L).setType(ImMessageTypeEnum.RECEIPT.getType());
1102 - when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(List.of(1L, 2L)); 1103 + when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(10L)).thenReturn(listOf(1L, 2L));
1103 1104
1104 groupMessageService.sendGroupMessage(1L, dto); 1105 groupMessageService.sendGroupMessage(1L, dto);
1105 1106
@@ -1110,7 +1111,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -1110,7 +1111,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
1110 @Test 1111 @Test
1111 public void testSendGroupMessage_threeArg_explicitTargetsBypassActiveMembers() { 1112 public void testSendGroupMessage_threeArg_explicitTargetsBypassActiveMembers() {
1112 // 准备:调用方传入显式 targets(解散场景成员已被批量 DISABLE,必须按移除前快照推送) 1113 // 准备:调用方传入显式 targets(解散场景成员已被批量 DISABLE,必须按移除前快照推送)
1113 - Set<Long> targets = Set.of(1L, 2L, 3L); 1114 + Set<Long> targets = setOf(1L, 2L, 3L);
1114 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO() 1115 ImGroupMessageSendDTO dto = new ImGroupMessageSendDTO()
1115 .setGroupId(10L).setType(ImMessageTypeEnum.GROUP_DISSOLVE.getType()).setContent("{}"); 1116 .setGroupId(10L).setType(ImMessageTypeEnum.GROUP_DISSOLVE.getType()).setContent("{}");
1116 1117
@@ -1138,7 +1139,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -1138,7 +1139,7 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
1138 reqVO.setMaxId(100L); 1139 reqVO.setMaxId(100L);
1139 reqVO.setLimit(20); 1140 reqVO.setLimit(20);
1140 1141
1141 - List<ImGroupMessageDO> mockList = List.of( 1142 + List<ImGroupMessageDO> mockList = listOf(
1142 ImGroupMessageDO.builder().id(99L).groupId(10L).senderId(2L) 1143 ImGroupMessageDO.builder().id(99L).groupId(10L).senderId(2L)
1143 .sendTime(joinTime.plusMinutes(1)).build() 1144 .sendTime(joinTime.plusMinutes(1)).build()
1144 ); 1145 );
@@ -1181,9 +1182,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest { @@ -1181,9 +1182,9 @@ public class ImGroupMessageServiceImplTest extends BaseMockitoUnitTest {
1181 1182
1182 @Test 1183 @Test
1183 public void testDeleteReadMaxMessageIds_delegatesToRedis() { 1184 public void testDeleteReadMaxMessageIds_delegatesToRedis() {
1184 - groupMessageService.deleteReadMaxMessageIds(10L, List.of(1L, 2L)); 1185 + groupMessageService.deleteReadMaxMessageIds(10L, listOf(1L, 2L));
1185 1186
1186 - verify(groupMessageReadRedisDAO).deleteReadMaxMessageIds(10L, List.of(1L, 2L)); 1187 + verify(groupMessageReadRedisDAO).deleteReadMaxMessageIds(10L, listOf(1L, 2L));
1187 } 1188 }
1188 1189
1189 @Test 1190 @Test
yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/service/message/ImPrivateMessageServiceImplTest.java
@@ -25,6 +25,7 @@ import java.time.LocalDateTime; @@ -25,6 +25,7 @@ import java.time.LocalDateTime;
25 import java.util.List; 25 import java.util.List;
26 26
27 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*; 27 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*;
  28 +import static cn.iocoder.yudao.module.im.util.ImTestCollectionUtils.*;
28 import static org.junit.jupiter.api.Assertions.*; 29 import static org.junit.jupiter.api.Assertions.*;
29 import static org.mockito.ArgumentMatchers.*; 30 import static org.mockito.ArgumentMatchers.*;
30 import static org.mockito.Mockito.*; 31 import static org.mockito.Mockito.*;
@@ -135,7 +136,7 @@ public class ImPrivateMessageServiceImplTest extends BaseMockitoUnitTest { @@ -135,7 +136,7 @@ public class ImPrivateMessageServiceImplTest extends BaseMockitoUnitTest {
135 @Test 136 @Test
136 public void testPullMessages_success() { 137 public void testPullMessages_success() {
137 // 准备 138 // 准备
138 - List<ImPrivateMessageDO> mockMessages = List.of( 139 + List<ImPrivateMessageDO> mockMessages = listOf(
139 ImPrivateMessageDO.builder().id(1L).senderId(1L).receiverId(2L).build(), 140 ImPrivateMessageDO.builder().id(1L).senderId(1L).receiverId(2L).build(),
140 ImPrivateMessageDO.builder().id(2L).senderId(2L).receiverId(1L).build() 141 ImPrivateMessageDO.builder().id(2L).senderId(2L).receiverId(1L).build()
141 ); 142 );
@@ -415,7 +416,7 @@ public class ImPrivateMessageServiceImplTest extends BaseMockitoUnitTest { @@ -415,7 +416,7 @@ public class ImPrivateMessageServiceImplTest extends BaseMockitoUnitTest {
415 reqVO.setReceiverId(2L); 416 reqVO.setReceiverId(2L);
416 reqVO.setMaxId(100L); 417 reqVO.setMaxId(100L);
417 reqVO.setLimit(20); 418 reqVO.setLimit(20);
418 - List<ImPrivateMessageDO> mockList = List.of( 419 + List<ImPrivateMessageDO> mockList = listOf(
419 ImPrivateMessageDO.builder().id(99L).senderId(1L).receiverId(2L).build(), 420 ImPrivateMessageDO.builder().id(99L).senderId(1L).receiverId(2L).build(),
420 ImPrivateMessageDO.builder().id(98L).senderId(2L).receiverId(1L).build() 421 ImPrivateMessageDO.builder().id(98L).senderId(2L).receiverId(1L).build()
421 ); 422 );
yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/service/rtc/ImRtcCallServiceImplTest.java
@@ -34,9 +34,10 @@ import java.util.Map; @@ -34,9 +34,10 @@ import java.util.Map;
34 import java.util.Set; 34 import java.util.Set;
35 import java.util.concurrent.Callable; 35 import java.util.concurrent.Callable;
36 36
37 -import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.RTC_GROUP_INVITEE_REQUIRED;  
38 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.RTC_GROUP_INVITEE_OVER_LIMIT; 37 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.RTC_GROUP_INVITEE_OVER_LIMIT;
  38 +import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.RTC_GROUP_INVITEE_REQUIRED;
39 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.RTC_SELF_BUSY; 39 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.RTC_SELF_BUSY;
  40 +import static cn.iocoder.yudao.module.im.util.ImTestCollectionUtils.*;
40 import static org.junit.jupiter.api.Assertions.*; 41 import static org.junit.jupiter.api.Assertions.*;
41 import static org.mockito.ArgumentMatchers.*; 42 import static org.mockito.ArgumentMatchers.*;
42 import static org.mockito.Mockito.*; 43 import static org.mockito.Mockito.*;
@@ -103,8 +104,8 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest { @@ -103,8 +104,8 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
103 // 准备:候选非空但每个 CAS 都失败(并发已变状态) 104 // 准备:候选非空但每个 CAS 都失败(并发已变状态)
104 ImRtcParticipantDO p = buildParticipant(10L, "r1", 100L, ImRtcParticipantStatusEnum.INVITING); 105 ImRtcParticipantDO p = buildParticipant(10L, "r1", 100L, ImRtcParticipantStatusEnum.INVITING);
105 when(rtcParticipantMapper.selectListByStatusAndInviteTimeBefore(any(), any())) 106 when(rtcParticipantMapper.selectListByStatusAndInviteTimeBefore(any(), any()))
106 - .thenReturn(List.of(p));  
107 - when(adminUserApi.getUserMap(anySet())).thenReturn(Map.of(100L, buildUser(100L))); 107 + .thenReturn(listOf(p));
  108 + when(adminUserApi.getUserMap(anySet())).thenReturn(mapOf(100L, buildUser(100L)));
108 when(rtcParticipantMapper.updateByIdAndStatus(eq(10L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any())) 109 when(rtcParticipantMapper.updateByIdAndStatus(eq(10L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any()))
109 .thenReturn(0); 110 .thenReturn(0);
110 111
@@ -122,15 +123,15 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest { @@ -122,15 +123,15 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
122 // 准备:群通话单候选 CAS 成功;shouldCloseGroupRoom 通过 selectListByRoom 多 JOINED 让其返 false,跳过 endSession 123 // 准备:群通话单候选 CAS 成功;shouldCloseGroupRoom 通过 selectListByRoom 多 JOINED 让其返 false,跳过 endSession
123 ImRtcParticipantDO p = buildParticipant(10L, "r1", 100L, ImRtcParticipantStatusEnum.INVITING); 124 ImRtcParticipantDO p = buildParticipant(10L, "r1", 100L, ImRtcParticipantStatusEnum.INVITING);
124 when(rtcParticipantMapper.selectListByStatusAndInviteTimeBefore(any(), any())) 125 when(rtcParticipantMapper.selectListByStatusAndInviteTimeBefore(any(), any()))
125 - .thenReturn(List.of(p));  
126 - when(adminUserApi.getUserMap(anySet())).thenReturn(Map.of(100L, buildUser(100L))); 126 + .thenReturn(listOf(p));
  127 + when(adminUserApi.getUserMap(anySet())).thenReturn(mapOf(100L, buildUser(100L)));
127 when(rtcParticipantMapper.updateByIdAndStatus(eq(10L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any())) 128 when(rtcParticipantMapper.updateByIdAndStatus(eq(10L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any()))
128 .thenReturn(1); 129 .thenReturn(1);
129 ImRtcCallDO call = buildCall("r1", 200L, ImConversationTypeEnum.GROUP, 999L); 130 ImRtcCallDO call = buildCall("r1", 200L, ImConversationTypeEnum.GROUP, 999L);
130 when(rtcCallMapper.selectByRoom("r1")).thenReturn(call); 131 when(rtcCallMapper.selectByRoom("r1")).thenReturn(call);
131 - when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(999L)).thenReturn(List.of(200L, 201L)); 132 + when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(999L)).thenReturn(listOf(200L, 201L));
132 // 房内 2 个 JOINED + 1 个 INVITING → shouldCloseGroupRoom 返 false 133 // 房内 2 个 JOINED + 1 个 INVITING → shouldCloseGroupRoom 返 false
133 - when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(List.of( 134 + when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(listOf(
134 buildParticipant(20L, "r1", 200L, ImRtcParticipantStatusEnum.JOINED), 135 buildParticipant(20L, "r1", 200L, ImRtcParticipantStatusEnum.JOINED),
135 buildParticipant(21L, "r1", 201L, ImRtcParticipantStatusEnum.JOINED), 136 buildParticipant(21L, "r1", 201L, ImRtcParticipantStatusEnum.JOINED),
136 buildParticipant(22L, "r1", 202L, ImRtcParticipantStatusEnum.INVITING) 137 buildParticipant(22L, "r1", 202L, ImRtcParticipantStatusEnum.INVITING)
@@ -150,8 +151,8 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest { @@ -150,8 +151,8 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
150 // 准备:CAS 成功后通话主表缺失(异常兜底场景) 151 // 准备:CAS 成功后通话主表缺失(异常兜底场景)
151 ImRtcParticipantDO p = buildParticipant(10L, "r1", 100L, ImRtcParticipantStatusEnum.INVITING); 152 ImRtcParticipantDO p = buildParticipant(10L, "r1", 100L, ImRtcParticipantStatusEnum.INVITING);
152 when(rtcParticipantMapper.selectListByStatusAndInviteTimeBefore(any(), any())) 153 when(rtcParticipantMapper.selectListByStatusAndInviteTimeBefore(any(), any()))
153 - .thenReturn(List.of(p));  
154 - when(adminUserApi.getUserMap(anySet())).thenReturn(Map.of(100L, buildUser(100L))); 154 + .thenReturn(listOf(p));
  155 + when(adminUserApi.getUserMap(anySet())).thenReturn(mapOf(100L, buildUser(100L)));
155 when(rtcParticipantMapper.updateByIdAndStatus(eq(10L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any())) 156 when(rtcParticipantMapper.updateByIdAndStatus(eq(10L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any()))
156 .thenReturn(1); 157 .thenReturn(1);
157 when(rtcCallMapper.selectByRoom("r1")).thenReturn(null); 158 when(rtcCallMapper.selectByRoom("r1")).thenReturn(null);
@@ -219,15 +220,15 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest { @@ -219,15 +220,15 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
219 ImRtcParticipantDO timeoutTarget = buildParticipant(11L, "r1", 101L, ImRtcParticipantStatusEnum.INVITING); 220 ImRtcParticipantDO timeoutTarget = buildParticipant(11L, "r1", 101L, ImRtcParticipantStatusEnum.INVITING);
220 when(rtcParticipantMapper.selectListByRoomAndStatusAndInviteTimeBefore( 221 when(rtcParticipantMapper.selectListByRoomAndStatusAndInviteTimeBefore(
221 eq("r1"), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any())) 222 eq("r1"), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any()))
222 - .thenReturn(List.of(timeoutTarget));  
223 - when(adminUserApi.getUserMap(anySet())).thenReturn(Map.of(101L, buildUser(101L))); 223 + .thenReturn(listOf(timeoutTarget));
  224 + when(adminUserApi.getUserMap(anySet())).thenReturn(mapOf(101L, buildUser(101L)));
224 when(rtcParticipantMapper.updateByIdAndStatus(eq(11L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any())) 225 when(rtcParticipantMapper.updateByIdAndStatus(eq(11L), eq(ImRtcParticipantStatusEnum.INVITING.getStatus()), any()))
225 .thenReturn(1); 226 .thenReturn(1);
226 ImRtcCallDO call = buildCall("r1", 200L, ImConversationTypeEnum.GROUP, 999L); 227 ImRtcCallDO call = buildCall("r1", 200L, ImConversationTypeEnum.GROUP, 999L);
227 when(rtcCallMapper.selectByRoom("r1")).thenReturn(call); 228 when(rtcCallMapper.selectByRoom("r1")).thenReturn(call);
228 - when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(999L)).thenReturn(List.of(200L, 201L)); 229 + when(groupMemberService.getActiveGroupMemberUserIdsByGroupId(999L)).thenReturn(listOf(200L, 201L));
229 // 让 shouldCloseGroupRoom 返 false 230 // 让 shouldCloseGroupRoom 返 false
230 - when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(List.of( 231 + when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(listOf(
231 buildParticipant(20L, "r1", 200L, ImRtcParticipantStatusEnum.JOINED), 232 buildParticipant(20L, "r1", 200L, ImRtcParticipantStatusEnum.JOINED),
232 buildParticipant(21L, "r1", 201L, ImRtcParticipantStatusEnum.JOINED) 233 buildParticipant(21L, "r1", 201L, ImRtcParticipantStatusEnum.JOINED)
233 )); 234 ));
@@ -253,7 +254,7 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest { @@ -253,7 +254,7 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
253 ImRtcCallCreateReqVO reqVO = new ImRtcCallCreateReqVO(); 254 ImRtcCallCreateReqVO reqVO = new ImRtcCallCreateReqVO();
254 reqVO.setConversationType(ImConversationTypeEnum.GROUP.getType()); 255 reqVO.setConversationType(ImConversationTypeEnum.GROUP.getType());
255 reqVO.setGroupId(10L); 256 reqVO.setGroupId(10L);
256 - reqVO.setInviteeIds(Set.of(100L)); 257 + reqVO.setInviteeIds(setOf(100L));
257 258
258 ServiceException exception = assertThrows(ServiceException.class, 259 ServiceException exception = assertThrows(ServiceException.class,
259 () -> rtcCallService.createCall(100L, reqVO)); 260 () -> rtcCallService.createCall(100L, reqVO));
@@ -335,14 +336,14 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest { @@ -335,14 +336,14 @@ public class ImRtcCallServiceImplTest extends BaseMockitoUnitTest {
335 Callable<Void> callable = invocation.getArgument(1); 336 Callable<Void> callable = invocation.getArgument(1);
336 return callable.call(); 337 return callable.call();
337 }); 338 });
338 - when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(List.of( 339 + when(rtcParticipantMapper.selectListByRoom("r1")).thenReturn(listOf(
339 buildParticipant(10L, "r1", 200L, ImRtcParticipantStatusEnum.JOINED), 340 buildParticipant(10L, "r1", 200L, ImRtcParticipantStatusEnum.JOINED),
340 buildParticipant(11L, "r1", 201L, ImRtcParticipantStatusEnum.JOINED), 341 buildParticipant(11L, "r1", 201L, ImRtcParticipantStatusEnum.JOINED),
341 buildParticipant(12L, "r1", 202L, ImRtcParticipantStatusEnum.INVITING) 342 buildParticipant(12L, "r1", 202L, ImRtcParticipantStatusEnum.INVITING)
342 )); 343 ));
343 ImRtcCallInviteReqVO reqVO = new ImRtcCallInviteReqVO(); 344 ImRtcCallInviteReqVO reqVO = new ImRtcCallInviteReqVO();
344 reqVO.setRoom("r1"); 345 reqVO.setRoom("r1");
345 - reqVO.setInviteeIds(Set.of(203L)); 346 + reqVO.setInviteeIds(setOf(203L));
346 347
347 ServiceException exception = assertThrows(ServiceException.class, 348 ServiceException exception = assertThrows(ServiceException.class,
348 () -> rtcCallService.inviteCall(200L, reqVO)); 349 () -> rtcCallService.inviteCall(200L, reqVO));
yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/service/sensitiveword/ImSensitiveWordServiceImplTest.java
@@ -19,6 +19,7 @@ import java.util.List; @@ -19,6 +19,7 @@ import java.util.List;
19 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.MESSAGE_SENSITIVE_WORD_BLOCKED; 19 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.MESSAGE_SENSITIVE_WORD_BLOCKED;
20 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.SENSITIVE_WORD_DUPLICATED; 20 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.SENSITIVE_WORD_DUPLICATED;
21 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.SENSITIVE_WORD_NOT_EXISTS; 21 import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.SENSITIVE_WORD_NOT_EXISTS;
  22 +import static cn.iocoder.yudao.module.im.util.ImTestCollectionUtils.*;
22 import static org.junit.jupiter.api.Assertions.*; 23 import static org.junit.jupiter.api.Assertions.*;
23 import static org.mockito.Mockito.*; 24 import static org.mockito.Mockito.*;
24 25
@@ -44,7 +45,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest { @@ -44,7 +45,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest {
44 // mock 启用敏感词列表;LoadingCache 在首次 validateText 时懒加载,无需主动 init 45 // mock 启用敏感词列表;LoadingCache 在首次 validateText 时懒加载,无需主动 init
45 // 用 lenient 避免 null / empty 等不触发 cache load 的用例报 UnnecessaryStubbing 46 // 用 lenient 避免 null / empty 等不触发 cache load 的用例报 UnnecessaryStubbing
46 lenient().when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus())) 47 lenient().when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus()))
47 - .thenReturn(List.of( 48 + .thenReturn(listOf(
48 ImSensitiveWordDO.builder().id(1L).word("badword") 49 ImSensitiveWordDO.builder().id(1L).word("badword")
49 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 50 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
50 ImSensitiveWordDO.builder().id(2L).word("违禁词") 51 ImSensitiveWordDO.builder().id(2L).word("违禁词")
@@ -118,7 +119,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest { @@ -118,7 +119,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest {
118 119
119 // 准备:mapper 返回新词库(额外多一个 newbad),并让 createSensitiveWord 走通 120 // 准备:mapper 返回新词库(额外多一个 newbad),并让 createSensitiveWord 走通
120 when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus())) 121 when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus()))
121 - .thenReturn(List.of( 122 + .thenReturn(listOf(
122 ImSensitiveWordDO.builder().id(1L).word("badword") 123 ImSensitiveWordDO.builder().id(1L).word("badword")
123 .status(CommonStatusEnum.ENABLE.getStatus()).build(), 124 .status(CommonStatusEnum.ENABLE.getStatus()).build(),
124 ImSensitiveWordDO.builder().id(2L).word("违禁词") 125 ImSensitiveWordDO.builder().id(2L).word("违禁词")
@@ -178,7 +179,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest { @@ -178,7 +179,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest {
178 when(imSensitiveWordMapper.selectByWord("updatedbad")).thenReturn(null); 179 when(imSensitiveWordMapper.selectByWord("updatedbad")).thenReturn(null);
179 // 准备:reload 时返回新词库 180 // 准备:reload 时返回新词库
180 when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus())) 181 when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus()))
181 - .thenReturn(List.of( 182 + .thenReturn(listOf(
182 ImSensitiveWordDO.builder().id(1L).word("updatedbad") 183 ImSensitiveWordDO.builder().id(1L).word("updatedbad")
183 .status(CommonStatusEnum.ENABLE.getStatus()).build() 184 .status(CommonStatusEnum.ENABLE.getStatus()).build()
184 )); 185 ));
@@ -211,7 +212,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest { @@ -211,7 +212,7 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest {
211 .status(CommonStatusEnum.ENABLE.getStatus()).build()); 212 .status(CommonStatusEnum.ENABLE.getStatus()).build());
212 // 准备:reload 时返回剩余词库(只剩中文那条) 213 // 准备:reload 时返回剩余词库(只剩中文那条)
213 when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus())) 214 when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus()))
214 - .thenReturn(List.of( 215 + .thenReturn(listOf(
215 ImSensitiveWordDO.builder().id(2L).word("违禁词") 216 ImSensitiveWordDO.builder().id(2L).word("违禁词")
216 .status(CommonStatusEnum.ENABLE.getStatus()).build() 217 .status(CommonStatusEnum.ENABLE.getStatus()).build()
217 )); 218 ));
@@ -251,24 +252,24 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest { @@ -251,24 +252,24 @@ public class ImSensitiveWordServiceImplTest extends BaseMockitoUnitTest {
251 252
252 // 准备:reload 时返回空词库 253 // 准备:reload 时返回空词库
253 when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus())) 254 when(imSensitiveWordMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus()))
254 - .thenReturn(List.of()); 255 + .thenReturn(listOf());
255 256
256 // 调用:批量删除,触发 invalidate 257 // 调用:批量删除,触发 invalidate
257 - sensitiveWordService.deleteSensitiveWordList(List.of(1L, 2L)); 258 + sensitiveWordService.deleteSensitiveWordList(listOf(1L, 2L));
258 259
259 // 调用 + 断言:所有词都不再命中 260 // 调用 + 断言:所有词都不再命中
260 assertDoesNotThrow(() -> sensitiveWordService.validateText("contains badword here")); 261 assertDoesNotThrow(() -> sensitiveWordService.validateText("contains badword here"));
261 assertDoesNotThrow(() -> sensitiveWordService.validateText("这条消息里有违禁词哦")); 262 assertDoesNotThrow(() -> sensitiveWordService.validateText("这条消息里有违禁词哦"));
262 263
263 // 断言:deleteByIds 被调用 1 次;selectListByStatus 共 2 次 264 // 断言:deleteByIds 被调用 1 次;selectListByStatus 共 2 次
264 - verify(imSensitiveWordMapper, times(1)).deleteByIds(List.of(1L, 2L)); 265 + verify(imSensitiveWordMapper, times(1)).deleteByIds(listOf(1L, 2L));
265 verify(imSensitiveWordMapper, times(2)).selectListByStatus(CommonStatusEnum.ENABLE.getStatus()); 266 verify(imSensitiveWordMapper, times(2)).selectListByStatus(CommonStatusEnum.ENABLE.getStatus());
266 } 267 }
267 268
268 @Test 269 @Test
269 public void testDeleteSensitiveWordList_emptyIds_skip() { 270 public void testDeleteSensitiveWordList_emptyIds_skip() {
270 // 调用:空列表直接返回 271 // 调用:空列表直接返回
271 - sensitiveWordService.deleteSensitiveWordList(List.of()); 272 + sensitiveWordService.deleteSensitiveWordList(listOf());
272 273
273 // 断言:mapper 不被调用 274 // 断言:mapper 不被调用
274 verify(imSensitiveWordMapper, never()).deleteByIds(anyList()); 275 verify(imSensitiveWordMapper, never()).deleteByIds(anyList());
yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/service/websocket/ImWebSocketServiceImplTest.java
@@ -18,6 +18,7 @@ import java.util.Arrays; @@ -18,6 +18,7 @@ import java.util.Arrays;
18 import java.util.Collections; 18 import java.util.Collections;
19 import java.util.List; 19 import java.util.List;
20 20
  21 +import static cn.iocoder.yudao.module.im.util.ImTestCollectionUtils.*;
21 import static org.junit.jupiter.api.Assertions.assertEquals; 22 import static org.junit.jupiter.api.Assertions.assertEquals;
22 import static org.mockito.ArgumentMatchers.eq; 23 import static org.mockito.ArgumentMatchers.eq;
23 import static org.mockito.Mockito.*; 24 import static org.mockito.Mockito.*;
@@ -107,7 +108,7 @@ public class ImWebSocketServiceImplTest extends BaseMockitoUnitTest { @@ -107,7 +108,7 @@ public class ImWebSocketServiceImplTest extends BaseMockitoUnitTest {
107 dto.setGroupId(10L); 108 dto.setGroupId(10L);
108 dto.setSenderId(1L); 109 dto.setSenderId(1L);
109 110
110 - imWebSocketService.sendGroupMessageAsync(List.of(1L, 2L, 3L), dto); 111 + imWebSocketService.sendGroupMessageAsync(listOf(1L, 2L, 3L), dto);
111 112
112 verify(webSocketMessageSender).sendObject( 113 verify(webSocketMessageSender).sendObject(
113 eq(UserTypeEnum.ADMIN.getValue()), eq(1L), eq(ImGroupMessageDTO.TYPE), eq(dto)); 114 eq(UserTypeEnum.ADMIN.getValue()), eq(1L), eq(ImGroupMessageDTO.TYPE), eq(dto));
@@ -130,7 +131,7 @@ public class ImWebSocketServiceImplTest extends BaseMockitoUnitTest { @@ -130,7 +131,7 @@ public class ImWebSocketServiceImplTest extends BaseMockitoUnitTest {
130 doThrow(new RuntimeException("user offline")) 131 doThrow(new RuntimeException("user offline"))
131 .when(webSocketMessageSender).sendObject(anyInt(), eq(1L), anyString(), any()); 132 .when(webSocketMessageSender).sendObject(anyInt(), eq(1L), anyString(), any());
132 133
133 - imWebSocketService.sendGroupMessageAsync(List.of(1L, 2L, 3L), dto); 134 + imWebSocketService.sendGroupMessageAsync(listOf(1L, 2L, 3L), dto);
134 135
135 // 2L 和 3L 也都被推送 136 // 2L 和 3L 也都被推送
136 verify(webSocketMessageSender).sendObject(anyInt(), eq(2L), anyString(), any()); 137 verify(webSocketMessageSender).sendObject(anyInt(), eq(2L), anyString(), any());