test(system): 重构系统模块测试用例

- 更新了 Dept、Role 和 User 相关的测试用例
- 优化了测试数据的初始化和清理逻辑
- 调整了部分测试方法的实现方式,提高了可读性和维护性
- 移除了未使用的测试用例和冗余代码
This commit is contained in:
zhuangtianxiang 2025-01-07 16:32:45 +08:00
parent 6161f8abfb
commit c97e485305
12 changed files with 203 additions and 232 deletions

View File

@ -40,7 +40,7 @@ public class EventQuery {
public LambdaQueryWrapper<Event> wrapper() { public LambdaQueryWrapper<Event> wrapper() {
LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.hasText(this.name), Event::getName, this.name); queryWrapper.like(StringUtils.hasText(this.name), Event::getName, this.name);
queryWrapper.eq(StringUtils.hasText(this.identifier), Event::getIdentifier, this.identifier); queryWrapper.like(StringUtils.hasText(this.identifier), Event::getIdentifier, this.identifier);
queryWrapper.eq(StringUtils.hasText(this.level), Event::getType, this.level); queryWrapper.eq(StringUtils.hasText(this.level), Event::getType, this.level);
queryWrapper.eq(Objects.nonNull(this.productId), Event::getProductId, this.productId); queryWrapper.eq(Objects.nonNull(this.productId), Event::getProductId, this.productId);
return queryWrapper; return queryWrapper;

View File

@ -37,8 +37,8 @@ public class PropertyQuery {
public LambdaQueryWrapper<Property> wrapper() { public LambdaQueryWrapper<Property> wrapper() {
LambdaQueryWrapper<Property> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Property> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(this.type != null, Property::getIoType, this.type); queryWrapper.eq(this.type != null, Property::getIoType, this.type);
queryWrapper.eq(StringUtils.hasText(this.identifier), Property::getIdentifier, this.identifier); queryWrapper.like(StringUtils.hasText(this.identifier), Property::getIdentifier, this.identifier);
queryWrapper.like(Objects.nonNull(this.productId), Property::getProductId, this.productId); queryWrapper.eq(Objects.nonNull(this.productId), Property::getProductId, this.productId);
queryWrapper.like(StringUtils.hasText(this.name), Property::getName, this.name); queryWrapper.like(StringUtils.hasText(this.name), Property::getName, this.name);
return queryWrapper; return queryWrapper;
} }

View File

@ -32,7 +32,7 @@ public class ServeQuery {
public LambdaQueryWrapper<Serve> wrapper() { public LambdaQueryWrapper<Serve> wrapper() {
LambdaQueryWrapper<Serve> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Serve> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(StringUtils.hasText(this.name), Serve::getName, this.name); queryWrapper.like(StringUtils.hasText(this.name), Serve::getName, this.name);
queryWrapper.eq(StringUtils.hasText(this.identifier), Serve::getIdentifier, this.identifier); queryWrapper.like(StringUtils.hasText(this.identifier), Serve::getIdentifier, this.identifier);
queryWrapper.eq(Objects.nonNull(this.productId), Serve::getProductId, this.productId); queryWrapper.eq(Objects.nonNull(this.productId), Serve::getProductId, this.productId);
return queryWrapper; return queryWrapper;
} }

View File

@ -66,7 +66,7 @@ public class RoleController {
public Boolean update(@RequestBody RoleDto dto, @PathVariable("id") Long id) { public Boolean update(@RequestBody RoleDto dto, @PathVariable("id") Long id) {
// Role role = roleMapper.toEntity(dto); // Role role = roleMapper.toEntity(dto);
// role.setId(id); // role.setId(id);
return service.updateRole(dto, id); return service.edit(dto, id);
} }
/** /**

View File

@ -35,13 +35,7 @@ public class RoleDto {
/** /**
* 权限列表 * 权限列表
*/ */
public Set<Authority> authorities; public Set<AuthorityCreateDto> authorities;
public LambdaUpdateWrapper<Role> updateWrapper(Long id) {
LambdaUpdateWrapper<Role> update = new LambdaUpdateWrapper<>();
return update.eq(Role::getId, id)
.set(Role::getName, name)
.set(StringUtils.hasText(remark), Role::getRemark, remark);
}
} }

View File

@ -29,7 +29,5 @@ public interface RoleService extends IService<Role> {
Boolean delete(Long id); Boolean delete(Long id);
Boolean updateRole(RoleDto dto, Long id);
Boolean saveRoleAuths(Long roleId, Set<AuthorityCreateDto> authorities); Boolean saveRoleAuths(Long roleId, Set<AuthorityCreateDto> authorities);
} }

View File

@ -12,6 +12,7 @@ import com.zsc.edu.gateway.modules.system.entity.Role;
import com.zsc.edu.gateway.modules.system.entity.User; import com.zsc.edu.gateway.modules.system.entity.User;
import com.zsc.edu.gateway.modules.system.mapper.RoleMapper; import com.zsc.edu.gateway.modules.system.mapper.RoleMapper;
import com.zsc.edu.gateway.modules.system.mapper.UserMapper; import com.zsc.edu.gateway.modules.system.mapper.UserMapper;
import com.zsc.edu.gateway.modules.system.service.RoleService;
import com.zsc.edu.gateway.modules.system.service.UserService; import com.zsc.edu.gateway.modules.system.service.UserService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;

View File

@ -1,6 +1,8 @@
package com.zsc.edu.gateway.rest.system; package com.zsc.edu.gateway.rest.system;
//import com.zsc.edu.gateway.MockMvcConfigBase; //import com.zsc.edu.gateway.MockMvcConfigBase;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zsc.edu.gateway.MockMvcConfigBase; import com.zsc.edu.gateway.MockMvcConfigBase;
import com.zsc.edu.gateway.domain.system.DeptBuilder; import com.zsc.edu.gateway.domain.system.DeptBuilder;
import com.zsc.edu.gateway.modules.system.controller.DeptController; import com.zsc.edu.gateway.modules.system.controller.DeptController;
@ -63,11 +65,16 @@ public class DeptControllerTest extends MockMvcConfigBase {
@Test @Test
void list() throws Exception { void list() throws Exception {
List<Dept> depts = Lists.newArrayList(dept1, dept2); List<Dept> depts = Lists.newArrayList(dept1, dept2);
when(service.list()).thenReturn(depts); Page<Dept> pageResult = new Page<>();
mockMvc.perform(get("/api/rest/dept").with(user(userDetails))) pageResult.setRecords(depts);
.andExpect(status().isOk()) pageResult.setTotal(depts.size());
when(service.page(any(Page.class), any())).thenReturn(pageResult);
mockMvc.perform(get("/api/rest/dept")
.with(user(userDetails))
).andExpect(status().isOk())
.andDo(print()); .andDo(print());
verify(service).list(); verify(service).page(any(Page.class), any());
} }
@Test @Test
@ -84,43 +91,4 @@ public class DeptControllerTest extends MockMvcConfigBase {
.andExpect(status().isOk()).andDo(print()); .andExpect(status().isOk()).andDo(print());
verify(service).edit(any(), any()); verify(service).edit(any(), any());
} }
//
// @Test
// void remove() throws Exception {
// when(service.deleteById(anyLong())).thenReturn(lampGroup1);
// mockMvc.perform(delete("/api/rest/lamp-group/{id}", lampGroup1.id)
// .with(csrf().asHeader())
// .with(user(userDetails))
// )
// .andExpect(status().isOk())
// .andDo(document("lamp-group/delete"));
// verify(service).deleteById(anyLong());
// }
//
// @Test
// void detail() throws Exception {
// when(service.detail(anyLong())).thenReturn(lampGroup1);
// mockMvc.perform(get("/api/rest/lamp-group/{id}", lampGroup1.id)
// .with(user(userDetails))
// )
// .andExpect(status().isOk())
// .andDo(document("lamp-group/detail"));
// verify(service).detail(anyLong());
// }
//
// @Test
// void batchDelete() throws Exception {
// Long[] ids = new Long[]{1l, 2l, 3l, 4l, 5l, 6l, 7l, 8l, 9l, 10l, 11l, 12l};
// when(service.batchDelete(any())).thenReturn(ids);
// mockMvc.perform(post("/api/rest/lamp-group/batchRemove")
// .contentType(MediaType.APPLICATION_JSON)
// .content(objectMapper.writeValueAsString(ids))
// .with(csrf().asHeader())
// .with(user(userDetails))
// )
// .andExpect(status().isOk())
// .andDo(document("lamp-group/batchRemove"));
// verify(service).batchDelete(any());
// }
} }

View File

@ -1,14 +1,17 @@
package com.zsc.edu.gateway.rest.system; package com.zsc.edu.gateway.rest.system;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zsc.edu.gateway.MockMvcConfigBase; import com.zsc.edu.gateway.MockMvcConfigBase;
import com.zsc.edu.gateway.domain.system.RoleBuilder; import com.zsc.edu.gateway.domain.system.RoleBuilder;
import com.zsc.edu.gateway.modules.system.controller.RoleController; import com.zsc.edu.gateway.modules.system.controller.RoleController;
import com.zsc.edu.gateway.modules.system.dto.RoleDto; import com.zsc.edu.gateway.modules.system.dto.RoleDto;
import com.zsc.edu.gateway.modules.system.entity.Role; import com.zsc.edu.gateway.modules.system.entity.Role;
import com.zsc.edu.gateway.modules.system.service.RoleAuthService;
import com.zsc.edu.gateway.modules.system.service.RoleService; import com.zsc.edu.gateway.modules.system.service.RoleService;
import org.assertj.core.util.Lists; import org.assertj.core.util.Lists;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.Spy;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
@ -20,31 +23,34 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@WebMvcTest(RoleController.class) @WebMvcTest(RoleController.class)
public class RoleControllerTest extends MockMvcConfigBase { public class RoleControllerTest extends MockMvcConfigBase {
@Spy
private static Role role1; private static Role role1;
private static Role role2; private static Role role2;
@MockBean @MockBean
private RoleService service; private RoleService service;
@MockBean
private RoleAuthService authService;
@BeforeAll @BeforeAll
static void beforeAll() { static void beforeAll() {
role1 = RoleBuilder.aRole().name("管理员").build(); role1 = RoleBuilder.aRole().name("管理员").build();
role1.setId(1L);
role2 = RoleBuilder.aRole().name("普通用户").build(); role2 = RoleBuilder.aRole().name("普通用户").build();
role2.setId(2L);
} }
@Test @Test
void create() throws Exception { void create() throws Exception {
RoleDto dto = new RoleDto(); RoleDto dto = new RoleDto();
dto.name = role1.getName(); dto.setName(role1.getName());
when(service.create(any())).thenReturn(role1); when(service.create(any())).thenReturn(role1);
mockMvc.perform(post("/api/rest/role") mockMvc.perform(post("/api/rest/role")
.with(csrf().asHeader()) .with(csrf().asHeader())
@ -57,79 +63,30 @@ public class RoleControllerTest extends MockMvcConfigBase {
@Test @Test
void list() throws Exception { void list() throws Exception {
List<Role> Roles = Lists.newArrayList(role1, role2); List<Role> roles = Lists.newArrayList(role1, role2);
when(service.list()).thenReturn(Roles); Page<Role> pageResult = new Page<>();
mockMvc.perform(get("/api/rest/role").with(user(userDetails))) pageResult.setRecords(roles);
.andExpect(status().isOk()) pageResult.setTotal((long) roles.size());
when(service.page(any(Page.class), any())).thenReturn(pageResult);
mockMvc.perform(get("/api/rest/role")
.with(user(userDetails))
).andExpect(status().isOk())
.andDo(print()); .andDo(print());
verify(service).list(); verify(service).page(any(Page.class), any());
} }
@Test @Test
void update() throws Exception { void update() throws Exception {
RoleDto dto = new RoleDto(); RoleDto dto = new RoleDto();
dto.name = role1.getName(); dto.setName(role1.getName());
when(service.update(any(), any())).thenReturn(true); when(service.edit(any(), any())).thenReturn(true);
mockMvc.perform(patch("/api/rest/role/{id}", role1.id) mockMvc.perform(patch("/api/rest/role/{id}", role1.getId())
.with(csrf().asHeader()) .with(csrf().asHeader())
.with(user(userDetails)) .with(user(userDetails))
.contentType(MediaType.APPLICATION_JSON) .contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(dto)) .content(objectMapper.writeValueAsString(dto))
) ).andExpect(status().isOk()).andDo(print());
.andExpect(status().isOk()).andDo(print()); verify(service).edit(any(), any());
verify(service).update(any(), any());
} }
// @Test
// void update() throws Exception {
// AuthorityDto dto = new AuthorityDto();
// dto.name = aut1.getName();
// when(service.update((AuthorityDto) any(), any())).thenReturn(true);
// mockMvc.perform(patch("/api/rest/auth/{id}", aut1.id)
// .with(csrf().asHeader())
// .with(user(userDetails))
// .contentType(MediaType.APPLICATION_JSON)
// .content(objectMapper.writeValueAsString(dto))
// )
// .andExpect(status().isOk()).andDo(print());
// verify(service).update((AuthorityDto) any(), any());
// }
//
// @Test
// void remove() throws Exception {
// when(service.deleteById(anyLong())).thenReturn(lampGroup1);
// mockMvc.perform(delete("/api/rest/lamp-group/{id}", lampGroup1.id)
// .with(csrf().asHeader())
// .with(user(userDetails))
// )
// .andExpect(status().isOk())
// .andDo(document("lamp-group/delete"));
// verify(service).deleteById(anyLong());
// }
//
// @Test
// void detail() throws Exception {
// when(service.detail(anyLong())).thenReturn(lampGroup1);
// mockMvc.perform(get("/api/rest/lamp-group/{id}", lampGroup1.id)
// .with(user(userDetails))
// )
// .andExpect(status().isOk())
// .andDo(document("lamp-group/detail"));
// verify(service).detail(anyLong());
// }
//
// @Test
// void batchDelete() throws Exception {
// Long[] ids = new Long[]{1l, 2l, 3l, 4l, 5l, 6l, 7l, 8l, 9l, 10l, 11l, 12l};
// when(service.batchDelete(any())).thenReturn(ids);
// mockMvc.perform(post("/api/rest/lamp-group/batchRemove")
// .contentType(MediaType.APPLICATION_JSON)
// .content(objectMapper.writeValueAsString(ids))
// .with(csrf().asHeader())
// .with(user(userDetails))
// )
// .andExpect(status().isOk())
// .andDo(document("lamp-group/batchRemove"));
// verify(service).batchDelete(any());
// }
} }

View File

@ -2,6 +2,7 @@ package com.zsc.edu.gateway.service.system;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zsc.edu.gateway.common.util.TreeUtil;
import com.zsc.edu.gateway.domain.system.DeptBuilder; import com.zsc.edu.gateway.domain.system.DeptBuilder;
import com.zsc.edu.gateway.exception.ConstraintException; import com.zsc.edu.gateway.exception.ConstraintException;
import com.zsc.edu.gateway.modules.system.dto.DeptDto; import com.zsc.edu.gateway.modules.system.dto.DeptDto;
@ -17,6 +18,9 @@ import org.springframework.dao.DuplicateKeyException;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import java.util.HashSet;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
/** /**
@ -40,73 +44,51 @@ class DeptServiceTest {
@BeforeEach @BeforeEach
void setUp() { void setUp() {
dept1 = DeptBuilder.aDept().name("测试部门1").build(); dept1 = DeptBuilder.aDept().name("A测试部门1").build();
dept1.setId(121L);
repo.insert(dept1); repo.insert(dept1);
dept2 = DeptBuilder.aDept().name("测试部门2").pid(dept1.id).build(); dept2 = DeptBuilder.aDept().name("A测试部门2").pid(dept1.id).build();
dept2.setId(122L);
repo.insert(dept2); repo.insert(dept2);
dept3 = DeptBuilder.aDept().name("测试部门3").pid(dept1.id).build(); dept3 = DeptBuilder.aDept().name("A测试部门3").pid(dept1.id).build();
dept3.setId(123L);
repo.insert(dept3); repo.insert(dept3);
dept4 = DeptBuilder.aDept().name("测试部门4").pid(dept3.id).build(); dept4 = DeptBuilder.aDept().name("A测试部门4").pid(dept3.id).build();
dept4.setId(124L);
repo.insert(dept4); repo.insert(dept4);
} }
@AfterEach @AfterEach
void tearDown() { void tearDown() {
repo.delete(new QueryWrapper<>()); repo.delete(new LambdaQueryWrapper<Dept>().in(Dept::getName, "A测试部门1", "A测试部门2", "A测试部门3", "A测试部门4", "A东菱经销商3", "A东菱经销商5"));
} }
@Test @Test
void list() { void list() {
LambdaQueryWrapper<Dept> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<Dept> queryWrapper = new LambdaQueryWrapper<>();
assertEquals(1, service.list(queryWrapper.like(Dept::getName, "测试部门1")).size()); assertEquals(4, service.list(queryWrapper.like(Dept::getName, "A测试部门")).size());
// assertEquals(1, service.list(queryWrapper.eq(Dept::getName, dept1.getName())).size()); assertEquals(1, service.list(queryWrapper.eq(Dept::getName, dept1.getName())).size());
// assertEquals(4, service.list().size()); // assertEquals(4, service.list().size());
} }
// @Test
// void listTree() {
// Dept result = service.listTree(dept1.id);
// int count = result.children.size();
// assertEquals(2, count);
// }
@Test @Test
void createAdmin() { void createAdmin() {
Dept dept = new Dept(); DeptDto dto = new DeptDto();
dept.setName("东菱经销商3"); dto.setName("A东菱经销商3");
dept.setRemark("remark..."); dto.setRemark("remark...");
dept.setPid(dept1.id); dto.setPid(dept1.id);
service.save(dept); service.create(dto);
assertEquals(5, service.list().size()); assertEquals(5, service.list(new LambdaQueryWrapper<Dept>().like(Dept::getName, "A")).size());
// 不能创建其他已存在的同名同代码部门 // 不能创建其他已存在的同名同代码部门
assertThrows(DuplicateKeyException.class, () -> service.save(dept1)); assertThrows(DuplicateKeyException.class, () -> service.save(dept1));
} }
@Test
void create() {
// Dept dept = new Dept();
// dept.setName("东菱经销商5");
// dept.setRemark("remark...");
// dept.setPid(dept1.id);
DeptDto dto = new DeptDto();
dto.setName("东菱经销商5");
dto.setRemark("remark...");
dto.setPid(dept1.id);
DeptDto dto2 = new DeptDto();
dto2.setName(dept2.getName());
dto2.setRemark("remark...");
dto2.setPid(dept1.id);
Dept dept = service.create(dto);
assertNotNull(dept.getId());
assertEquals(6, service.list().size());
// 不能创建其他已存在的同名同代码部门
assertThrows(ConstraintException.class, () -> service.create(dto2));
}
@Test @Test
void updateAdmin() { void updateAdmin() {
DeptDto dto = new DeptDto(); DeptDto dto = new DeptDto();
dto.setName("东菱经销商5"); dto.setName("A东菱经销商5");
dto.setRemark("remark..."); dto.setRemark("remark...");
assertTrue(service.edit(dto, dept2.id)); assertTrue(service.edit(dto, dept2.id));
Dept tmp = service.getOne(new LambdaQueryWrapper<Dept>().eq(Dept::getName, dto.getName())); Dept tmp = service.getOne(new LambdaQueryWrapper<Dept>().eq(Dept::getName, dto.getName()));
@ -118,21 +100,19 @@ class DeptServiceTest {
} }
// @Test @Test
// void tree() { void tree() {
// Dept result = service.listTree(dept3.id); List<Dept> results = service.listTree(dept3.id);
// HashSet<Long> deptPath = DeptTreeUtil.getDeptPath(result); System.out.println(results);
// System.out.println(deptPath); assertEquals(1, results.size());
// assertEquals(2, deptPath.size()); }
// }
// @Test
// void findTreeChild() {
// Dept result = service.listTree(dept1.id);
// Dept childNode = DeptTreeUtil.getChildNode(result.children, dept2.id);
// System.out.println(childNode.id);
// assertEquals(dept2.id, childNode.id);
// }
@Test
void findTreeChild() {
List<Dept> childNode = service.listTree(dept3.id);
Dept dept = childNode.get(0);
System.out.println(dept.id);
assertEquals(dept3.id, dept.id);
}
} }

View File

@ -1,11 +1,17 @@
package com.zsc.edu.gateway.service.system; package com.zsc.edu.gateway.service.system;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zsc.edu.gateway.domain.system.RoleBuilder;
import com.zsc.edu.gateway.exception.ConstraintException;
import com.zsc.edu.gateway.modules.system.dto.RoleDto; import com.zsc.edu.gateway.modules.system.dto.RoleDto;
import com.zsc.edu.gateway.modules.system.entity.Dept;
import com.zsc.edu.gateway.modules.system.entity.Role; import com.zsc.edu.gateway.modules.system.entity.Role;
import com.zsc.edu.gateway.modules.system.repo.AuthorityRepository; import com.zsc.edu.gateway.modules.system.repo.AuthorityRepository;
import com.zsc.edu.gateway.modules.system.repo.RoleRepository; import com.zsc.edu.gateway.modules.system.repo.RoleRepository;
import com.zsc.edu.gateway.modules.system.service.RoleService; import com.zsc.edu.gateway.modules.system.service.RoleService;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
@ -32,59 +38,45 @@ class RoleServiceTest {
private Role role1; private Role role1;
private Role role2; private Role role2;
private Role Role3; @BeforeEach
private Role Role4; void setUp() {
// @Resource role1 = RoleBuilder.aRole().name("A超级管理员").build();
private AuthorityRepository authorityRepository; repo.insert(role1);
role2 = RoleBuilder.aRole().name("A普通用户").build();
repo.insert(role2);
}
// @BeforeEach @AfterEach
// void setUp() { void tearDown() {
// role1 = RoleBuilder.aRole().name("超级管理员").build(); repo.delete(new LambdaQueryWrapper<Role>().in(Role::getName, "A超级管理员", "A普通用户", "A公司CEO", "A项目经理", "A超级管理员2"));
// repo.insert(role1); }
// role2 = RoleBuilder.aRole().name("普通用户").build();
// repo.insert(role2);
// }
//
// @AfterEach
// void tearDown() {
// repo.delete(new QueryWrapper<>());
// }
@Test @Test
void list() { void list() {
assertEquals(1, service.list().size()); assertEquals(2, service.list(new LambdaQueryWrapper<Role>().like(Role::getName, "A")).size());
assertEquals(0, service.list(new LambdaQueryWrapper<Role>().like(Role::getName, "普通用户")).size()); assertEquals(1, service.list(new LambdaQueryWrapper<Role>().eq(Role::getName, role1.getName())).size());
// assertEquals(1, service.list(new LambdaQueryWrapper<Role>().eq(Role::getName, role1.getName())).size()); // assertEquals(1, service.list().size());
} }
@Test @Test
void create() { void create() {
// Role Role = new Role();
// Role.setName("东菱经销商5");
// Role.setRemark("remark...");
// Role.setPid(Role1.id);
RoleDto dto = new RoleDto(); RoleDto dto = new RoleDto();
dto.setName("东菱经销商5"); dto.setName("A公司CEO");
dto.setRemark("remark..."); dto.setRemark("remark...");
dto.setAuthorities(new HashSet<>(Arrays.asList(authorityRepository.selectOne(null)))); dto.setAuthorities(null);
Role Role = service.create(dto); Role Role = service.create(dto);
assertNotNull(Role.getId()); assertNotNull(Role.getId());
assertEquals(3, service.list().size()); assertEquals(3, service.list(new QueryWrapper<Role>().like("name", "A")).size());
// 不能创建其他已存在的同名同代码部门 // 不能创建其他已存在的同名同代码部门
// assertThrows(ConstraintException.class, () -> service.create(dto2)); assertThrows(ConstraintException.class, () -> service.create(new RoleDto(role1.getName(), "remark...", null)));
} }
@Test @Test
void update() { void update() {
RoleDto dto = new RoleDto(); RoleDto dto = new RoleDto();
dto.setName("超级管理员2"); dto.setName("A超级管理员2");
dto.setRemark("remark..."); dto.setRemark("remark...");
dto.setAuthorities(authorityRepository.selectAuthoritiesByRoleId(1L)); dto.setAuthorities(null);
assertTrue(service.edit(dto, role2.id)); assertTrue(service.edit(dto, role2.id));
} }
@Test
void roleVo(){
repo.deleteById(role1.id);
}
} }

View File

@ -1,17 +1,32 @@
package com.zsc.edu.gateway.service.system; package com.zsc.edu.gateway.service.system;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zsc.edu.gateway.domain.system.RoleBuilder;
import com.zsc.edu.gateway.domain.system.UserBuilder;
import com.zsc.edu.gateway.exception.ConstraintException;
import com.zsc.edu.gateway.modules.system.dto.RoleDto;
import com.zsc.edu.gateway.modules.system.dto.UserCreateDto;
import com.zsc.edu.gateway.modules.system.dto.UserUpdateDto;
import com.zsc.edu.gateway.modules.system.entity.Authority; import com.zsc.edu.gateway.modules.system.entity.Authority;
import com.zsc.edu.gateway.modules.system.entity.Role;
import com.zsc.edu.gateway.modules.system.entity.User; import com.zsc.edu.gateway.modules.system.entity.User;
import com.zsc.edu.gateway.modules.system.repo.AuthorityRepository; import com.zsc.edu.gateway.modules.system.repo.AuthorityRepository;
import com.zsc.edu.gateway.modules.system.repo.RoleAuthoritiesRepository; import com.zsc.edu.gateway.modules.system.repo.RoleAuthoritiesRepository;
import com.zsc.edu.gateway.modules.system.repo.UserRepository; import com.zsc.edu.gateway.modules.system.repo.UserRepository;
import com.zsc.edu.gateway.modules.system.service.UserService;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import java.util.Set; import java.util.Set;
import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertTrue;
/** /**
* @author ftz * @author ftz
* 创建时间:29/12/2023 上午11:21 * 创建时间:29/12/2023 上午11:21
@ -21,26 +36,92 @@ public class UserServiceTest {
@Resource @Resource
private RoleAuthoritiesRepository roleAuthoritiesRepository; private RoleAuthoritiesRepository roleAuthoritiesRepository;
@Resource @Resource
private UserRepository userRepository; private UserService service;
@Resource
private UserRepository repo;
@Resource @Resource
private AuthorityRepository authorityRepository; private AuthorityRepository authorityRepository;
@Resource @Resource
private PasswordEncoder passwordEncoder; private PasswordEncoder passwordEncoder;
@Test
void test() {
User user=userRepository.selectByUsername("admin");
Set<Authority> authorities= authorityRepository.selectAuthoritiesByRoleId(user.getRoleId());
user.role.authorities=authorities;
System.out.println(user);
private User user1;
private User user2;
private User user3;
@BeforeEach
void setUp() {
user1 = UserBuilder.anUser().username("A张三").password("123456").enable(true).build();
repo.insert(user1);
user2 = UserBuilder.anUser().username("A李四").password("123456").enable(true).build();
repo.insert(user2);
user3 = UserBuilder.anUser().username("A王五").password("123456").enable(true).build();
repo.insert(user3);
} }
@AfterEach
void tearDown() {
repo.delete(new LambdaQueryWrapper<User>().in(User::getUsername, "A张三", "A李四", "A王五", "A赵六", "A陈七", "A刘八"));
}
@Test @Test
void test1() { void list() {
assertEquals(3, service.list(new LambdaQueryWrapper<User>().like(User::getUsername, "A")).size());
assertEquals(1, service.list(new LambdaQueryWrapper<User>().eq(User::getUsername, user1.getUsername())).size());
// assertEquals(1, service.list().size());
}
@Test
void create() {
UserCreateDto dto = new UserCreateDto();
dto.setUsername("A赵六");
dto.setRemark("remark...");
dto.setPassword("654321");
dto.setDeptId(1L);
dto.setEnable(true);
dto.setRoleId(1L);
dto.setEmail("@123.com");
dto.setPhone("14315367689");
assertTrue(service.create(dto));
assertEquals(4, service.list(new QueryWrapper<User>().like("username", "A")).size());
}
@Test
void update() {
UserUpdateDto dto = new UserUpdateDto();
dto.setEnable(false);
dto.setRemark("remark...");
dto.setPhone("16786899221");
dto.setEmail("@abc.com");
assertTrue(service.update(dto, user2.id));
UserUpdateDto dto2 = new UserUpdateDto("16786899221", "@141.com", true, 1L,
"admin", "admin", "admin", 1L, "remark...");
UserUpdateDto dto3 = new UserUpdateDto("16783399221", "@abc.com", true, 1L,
"admin", "admin", "admin", 1L, "remark...");
// 不能创建其他已存在的电话和邮箱
assertThrows(ConstraintException.class, () -> service.update(dto2, user2.getId()));
assertThrows(ConstraintException.class, () -> service.update(dto3, user2.getId()));
}
@Test
void updatePassword() {
assertTrue(service.updatePassword("777777", user3.id));
}
// @Test
// void test() {
// User user=userRepository.selectByUsername("admin"); // User user=userRepository.selectByUsername("admin");
// Set<Authority> authorities= authorityRepository.selectAuthoritiesByRoleId(user.getRoleId());
// user.role.authorities=authorities;
// System.out.println(user); // System.out.println(user);
//
String admin = passwordEncoder.encode("admin"); // }
System.out.println(admin); // @Test
} // void test1() {
//// User user=userRepository.selectByUsername("admin");
//// System.out.println(user);
// String admin = passwordEncoder.encode("admin");
// System.out.println(admin);
// }
} }