Commit 52ddafb14a5d97b65a138e00a91a594c41cee290

Authored by YunaiV
1 parent 04a05af1

style(im): 对齐频道消息 Mapper 单测风格和清理方式

yudao-module-im/src/test/java/cn/iocoder/yudao/module/im/dal/mysql/message/ImChannelMessageMapperTest.java
... ... @@ -4,46 +4,60 @@ import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
4 4 import cn.iocoder.yudao.module.im.dal.dataobject.message.ImChannelMessageDO;
5 5 import jakarta.annotation.Resource;
6 6 import org.junit.jupiter.api.Test;
7   -import org.springframework.test.context.jdbc.Sql;
8 7  
9 8 import java.time.LocalDateTime;
  9 +import java.util.Arrays;
  10 +import java.util.Collections;
10 11 import java.util.List;
11 12  
  13 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
12 14 import static org.junit.jupiter.api.Assertions.assertEquals;
13 15  
14   -@Sql(statements = "DELETE FROM im_channel_message", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)
  16 +/**
  17 + * {@link ImChannelMessageMapper} 的单元测试
  18 + *
  19 + * @author 芋道源码
  20 + */
15 21 public class ImChannelMessageMapperTest extends BaseDbUnitTest {
16 22  
17 23 @Resource
18   - private ImChannelMessageMapper mapper;
  24 + private ImChannelMessageMapper channelMessageMapper;
19 25  
20 26 @Test
21   - public void testSelectListByUserAndMinId_includesBroadcastAndMatchingRecipients() {
22   - ImChannelMessageDO nullRecipients = insertMessage(null);
23   - ImChannelMessageDO emptyRecipients = insertMessage(List.of());
24   - ImChannelMessageDO matchingRecipients = insertMessage(List.of(1L, 2L));
25   - insertMessage(List.of(2L, 11L)); // 用户 1 不应误命中用户 11
26   - ImChannelMessageDO deleted = insertMessage(List.of(1L));
27   - mapper.deleteById(deleted.getId());
28   -
29   - List<ImChannelMessageDO> result = mapper.selectListByUserAndMinId(1L, 0L, 100);
30   -
31   - assertEquals(List.of(nullRecipients.getId(), emptyRecipients.getId(), matchingRecipients.getId()),
32   - result.stream().map(ImChannelMessageDO::getId).toList());
  27 + public void testSelectListByUserAndMinId_broadcastAndMatched() {
  28 + // mock 数据:全员(null)
  29 + ImChannelMessageDO nullReceiverMessage = createChannelMessage(null);
  30 + // mock 数据:全员(空列表)
  31 + ImChannelMessageDO emptyReceiverMessage = createChannelMessage(Collections.emptyList());
  32 + // mock 数据:定向,包含用户 1
  33 + ImChannelMessageDO matchedMessage = createChannelMessage(Arrays.asList(1L, 2L));
  34 + // mock 数据:定向,不包含用户 1(用户 1 不应误命中用户 11)
  35 + createChannelMessage(Arrays.asList(2L, 11L));
  36 + // mock 数据:已删除
  37 + ImChannelMessageDO deletedMessage = createChannelMessage(Collections.singletonList(1L));
  38 + channelMessageMapper.deleteById(deletedMessage.getId());
  39 +
  40 + // 调用
  41 + List<ImChannelMessageDO> list = channelMessageMapper.selectListByUserAndMinId(1L, 0L, 100);
  42 + // 断言
  43 + assertEquals(Arrays.asList(nullReceiverMessage.getId(), emptyReceiverMessage.getId(), matchedMessage.getId()),
  44 + convertList(list, ImChannelMessageDO::getId));
33 45 }
34 46  
35 47 @Test
36   - public void testSelectListByUserAndMinId_respectsCursorAndLimit() {
37   - ImChannelMessageDO cursor = insertMessage(null);
38   - ImChannelMessageDO next = insertMessage(List.of());
39   - insertMessage(List.of(1L));
40   -
41   - List<ImChannelMessageDO> result = mapper.selectListByUserAndMinId(1L, cursor.getId(), 1);
  48 + public void testSelectListByUserAndMinId_cursorAndLimit() {
  49 + // mock 数据
  50 + ImChannelMessageDO cursorMessage = createChannelMessage(null);
  51 + ImChannelMessageDO nextMessage = createChannelMessage(Collections.emptyList());
  52 + createChannelMessage(Collections.singletonList(1L));
42 53  
43   - assertEquals(List.of(next.getId()), result.stream().map(ImChannelMessageDO::getId).toList());
  54 + // 调用:从游标之后拉取 1 条
  55 + List<ImChannelMessageDO> list = channelMessageMapper.selectListByUserAndMinId(1L, cursorMessage.getId(), 1);
  56 + // 断言
  57 + assertEquals(Collections.singletonList(nextMessage.getId()), convertList(list, ImChannelMessageDO::getId));
44 58 }
45 59  
46   - private ImChannelMessageDO insertMessage(List<Long> receiverUserIds) {
  60 + private ImChannelMessageDO createChannelMessage(List<Long> receiverUserIds) {
47 61 ImChannelMessageDO message = ImChannelMessageDO.builder()
48 62 .channelId(10L)
49 63 .materialId(20L)
... ... @@ -52,7 +66,7 @@ public class ImChannelMessageMapperTest extends BaseDbUnitTest {
52 66 .receiverUserIds(receiverUserIds)
53 67 .sendTime(LocalDateTime.now())
54 68 .build();
55   - mapper.insert(message);
  69 + channelMessageMapper.insert(message);
56 70 return message;
57 71 }
58 72  
... ...
yudao-module-im/src/test/resources/sql/clean.sql
1 1 DELETE FROM "im_private_message";
2 2 DELETE FROM "im_group_message";
  3 +DELETE FROM "im_channel_message";
3 4 DELETE FROM "im_conversation_read";
4 5 DELETE FROM "im_group";
5 6 DELETE FROM "im_group_member";
... ...