tj
2025-06-05 2d549a04870d1315868a7cf19952b64e8071e711
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package com.cloudroam.service.impl;
 
import com.cloudroam.bo.GroupPermissionBO;
import com.cloudroam.mapper.*;
import com.cloudroam.model.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.cloudroam.mapper.*;
import com.cloudroam.model.*;
import com.cloudroam.mapper.*;
import com.cloudroam.model.*;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.ArrayList;
import java.util.List;
 
import static org.junit.jupiter.api.Assertions.*;
 
 
@SpringBootTest
@Transactional
@Rollback
@Slf4j
@ActiveProfiles("test")
public class GroupServiceImplTest {
 
    @Autowired
    private GroupServiceImpl groupService;
 
    @Autowired
    private UserMapper userMapper;
 
    @Autowired
    private GroupMapper groupMapper;
 
    @Autowired
    private UserGroupMapper userGroupMapper;
 
    @Autowired
    private PermissionMapper permissionMapper;
 
    @Autowired
    private GroupPermissionMapper groupPermissionMapper;
 
    public Integer mockData() {
        UserDO user = UserDO.builder().nickname("pedro大大").username("pedro大大").build();
        GroupDO group1 = GroupDO.builder().name("测试分组12").info("just for test").build();
        GroupDO group2 = GroupDO.builder().name("测试分组11").info("just for test").build();
        userMapper.insert(user);
        groupMapper.insert(group1);
        groupMapper.insert(group2);
        List<UserGroupDO> relations = new ArrayList<>();
        UserGroupDO relation1 = new UserGroupDO(user.getId(), group1.getId());
        UserGroupDO relation2 = new UserGroupDO(user.getId(), group2.getId());
        relations.add(relation1);
        relations.add(relation2);
        userGroupMapper.insertBatch(relations);
        return user.getId();
    }
 
    public GroupDO mockData1() {
        GroupDO group = GroupDO.builder().name("测试分组12").info("just for test").build();
        groupMapper.insert(group);
        return group;
    }
 
    public Integer mockData2() {
        GroupDO group = GroupDO.builder().name("测试分组1").info("just for test").build();
        PermissionDO permission1 = PermissionDO.builder().name("权限1").module("炉石传说").build();
        PermissionDO permission2 = PermissionDO.builder().name("权限2").module("炉石传说").build();
        groupMapper.insert(group);
        permissionMapper.insert(permission1);
        permissionMapper.insert(permission2);
        List<GroupPermissionDO> relations = new ArrayList<>();
        GroupPermissionDO relation1 = new GroupPermissionDO(group.getId(), permission1.getId());
        GroupPermissionDO relation2 = new GroupPermissionDO(group.getId(), permission2.getId());
        relations.add(relation1);
        relations.add(relation2);
        groupPermissionMapper.insertBatch(relations);
        return group.getId();
    }
 
 
    @Test
    public void getUserGroupsByUserId() {
        Integer id = mockData();
        List<GroupDO> groups = groupService.getUserGroupsByUserId(id);
        assertTrue(groups.size() > 0);
        boolean anyMatch = groups.stream().anyMatch(it -> it.getName().equals("测试分组12"));
        assertTrue(anyMatch);
    }
 
    @Test
    public void getUserGroupIdsByUserId() {
        Integer id = mockData();
        List<Integer> ids = groupService.getUserGroupIdsByUserId(id);
        assertTrue(ids.size() > 0);
    }
 
    @Test
    public void findGroupsByPage() {
        Integer id = mockData();
        IPage<GroupDO> groups = groupService.getGroupPage(0, 10);
        assertTrue(groups.getTotal() > 0);
        assertTrue(groups.getRecords().size() > 0);
        assertEquals(0, groups.getCurrent());
        boolean anyMatch = groups.getRecords().stream().anyMatch(it -> it.getName().equals("测试分组12"));
        assertTrue(anyMatch);
    }
 
    @Test
    public void checkGroupExistById() {
        GroupDO group = mockData1();
        boolean exist = groupService.checkGroupExistById(group.getId());
        assertTrue(exist);
    }
 
    @Test
    public void getGroupAndPermissions() {
        Integer id = mockData2();
        GroupPermissionBO groupAndPermissions = groupService.getGroupAndPermissions(id);
        assertEquals("测试分组1", groupAndPermissions.getName());
        boolean anyMatch = groupAndPermissions.getPermissions().stream().anyMatch(permission ->
                permission.getName().equals("权限2"));
        assertTrue(anyMatch);
    }
 
    @Test
    public void checkGroupExistByName() {
        GroupDO group = mockData1();
        boolean exist = groupService.checkGroupExistByName(group.getName());
        assertTrue(exist);
    }
 
    @Test
    public void checkIsRootByUserId() {
        Integer userId = mockData();
        boolean exist = groupService.checkIsRootByUserId(userId);
        assertFalse(exist);
    }
}