From c97e4853054df759d22c87e6fd208cd5b7a0b11b Mon Sep 17 00:00:00 2001
From: zhuangtianxiang <2913129173@qq.com>
Date: Tue, 7 Jan 2025 16:32:45 +0800
Subject: [PATCH] =?UTF-8?q?test(system):=20=E9=87=8D=E6=9E=84=E7=B3=BB?=
 =?UTF-8?q?=E7=BB=9F=E6=A8=A1=E5=9D=97=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- 更新了 Dept、Role 和 User 相关的测试用例
- 优化了测试数据的初始化和清理逻辑
- 调整了部分测试方法的实现方式,提高了可读性和维护性
- 移除了未使用的测试用例和冗余代码
---
 .../modules/iot/tsl/query/EventQuery.java     |   2 +-
 .../modules/iot/tsl/query/PropertyQuery.java  |   4 +-
 .../modules/iot/tsl/query/ServeQuery.java     |   2 +-
 .../system/controller/RoleController.java     |   2 +-
 .../gateway/modules/system/dto/RoleDto.java   |   8 +-
 .../modules/system/service/RoleService.java   |   2 -
 .../zsc/edu/gateway/MockMvcConfigBase.java    |   1 +
 .../rest/system/DeptControllerTest.java       |  54 ++-------
 .../rest/system/RoleControllerTest.java       | 105 ++++++------------
 .../service/system/DeptServiceTest.java       |  90 ++++++---------
 .../service/system/RoleServiceTest.java       |  60 +++++-----
 .../service/system/UserServiceTest.java       | 105 ++++++++++++++++--
 12 files changed, 203 insertions(+), 232 deletions(-)

diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/EventQuery.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/EventQuery.java
index 712815b..29af395 100644
--- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/EventQuery.java
+++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/EventQuery.java
@@ -40,7 +40,7 @@ public class EventQuery {
     public LambdaQueryWrapper<Event> wrapper() {
         LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
         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(Objects.nonNull(this.productId), Event::getProductId, this.productId);
         return queryWrapper;
diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/PropertyQuery.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/PropertyQuery.java
index 336c775..e8ca24b 100644
--- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/PropertyQuery.java
+++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/PropertyQuery.java
@@ -37,8 +37,8 @@ public class PropertyQuery {
     public LambdaQueryWrapper<Property> wrapper() {
         LambdaQueryWrapper<Property> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(this.type != null, Property::getIoType, this.type);
-        queryWrapper.eq(StringUtils.hasText(this.identifier), Property::getIdentifier, this.identifier);
-        queryWrapper.like(Objects.nonNull(this.productId), Property::getProductId, this.productId);
+        queryWrapper.like(StringUtils.hasText(this.identifier), Property::getIdentifier, this.identifier);
+        queryWrapper.eq(Objects.nonNull(this.productId), Property::getProductId, this.productId);
         queryWrapper.like(StringUtils.hasText(this.name), Property::getName, this.name);
         return queryWrapper;
     }
diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/ServeQuery.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/ServeQuery.java
index 002a616..b459df3 100644
--- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/ServeQuery.java
+++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/query/ServeQuery.java
@@ -32,7 +32,7 @@ public class ServeQuery {
     public LambdaQueryWrapper<Serve> wrapper() {
         LambdaQueryWrapper<Serve> queryWrapper = new LambdaQueryWrapper<>();
         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);
         return queryWrapper;
     }
diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/controller/RoleController.java b/src/main/java/com/zsc/edu/gateway/modules/system/controller/RoleController.java
index f26594e..223aedb 100644
--- a/src/main/java/com/zsc/edu/gateway/modules/system/controller/RoleController.java
+++ b/src/main/java/com/zsc/edu/gateway/modules/system/controller/RoleController.java
@@ -66,7 +66,7 @@ public class RoleController {
     public Boolean update(@RequestBody RoleDto dto, @PathVariable("id") Long id) {
 //        Role role = roleMapper.toEntity(dto);
 //        role.setId(id);
-        return service.updateRole(dto, id);
+        return service.edit(dto, id);
     }
 
     /**
diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/dto/RoleDto.java b/src/main/java/com/zsc/edu/gateway/modules/system/dto/RoleDto.java
index 10646f3..e844a8c 100644
--- a/src/main/java/com/zsc/edu/gateway/modules/system/dto/RoleDto.java
+++ b/src/main/java/com/zsc/edu/gateway/modules/system/dto/RoleDto.java
@@ -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);
-    }
 
 }
diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/service/RoleService.java b/src/main/java/com/zsc/edu/gateway/modules/system/service/RoleService.java
index 585bd3e..42c6766 100644
--- a/src/main/java/com/zsc/edu/gateway/modules/system/service/RoleService.java
+++ b/src/main/java/com/zsc/edu/gateway/modules/system/service/RoleService.java
@@ -29,7 +29,5 @@ public interface RoleService extends IService<Role> {
 
     Boolean delete(Long id);
 
-    Boolean updateRole(RoleDto dto, Long id);
-
     Boolean saveRoleAuths(Long roleId, Set<AuthorityCreateDto> authorities);
 }
diff --git a/src/test/java/com/zsc/edu/gateway/MockMvcConfigBase.java b/src/test/java/com/zsc/edu/gateway/MockMvcConfigBase.java
index 2f9cbcb..a7936af 100644
--- a/src/test/java/com/zsc/edu/gateway/MockMvcConfigBase.java
+++ b/src/test/java/com/zsc/edu/gateway/MockMvcConfigBase.java
@@ -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.mapper.RoleMapper;
 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 jakarta.annotation.Resource;
 import org.junit.jupiter.api.BeforeAll;
diff --git a/src/test/java/com/zsc/edu/gateway/rest/system/DeptControllerTest.java b/src/test/java/com/zsc/edu/gateway/rest/system/DeptControllerTest.java
index 9406180..68e18b4 100644
--- a/src/test/java/com/zsc/edu/gateway/rest/system/DeptControllerTest.java
+++ b/src/test/java/com/zsc/edu/gateway/rest/system/DeptControllerTest.java
@@ -1,6 +1,8 @@
 package com.zsc.edu.gateway.rest.system;
 
 //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.domain.system.DeptBuilder;
 import com.zsc.edu.gateway.modules.system.controller.DeptController;
@@ -63,11 +65,16 @@ public class DeptControllerTest extends MockMvcConfigBase {
     @Test
     void list() throws Exception {
         List<Dept> depts = Lists.newArrayList(dept1, dept2);
-        when(service.list()).thenReturn(depts);
-        mockMvc.perform(get("/api/rest/dept").with(user(userDetails)))
-                .andExpect(status().isOk())
+        Page<Dept> pageResult = new Page<>();
+        pageResult.setRecords(depts);
+        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());
-        verify(service).list();
+        verify(service).page(any(Page.class), any());
     }
 
     @Test
@@ -84,43 +91,4 @@ public class DeptControllerTest extends MockMvcConfigBase {
                 .andExpect(status().isOk()).andDo(print());
         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());
-//    }
-
 }
diff --git a/src/test/java/com/zsc/edu/gateway/rest/system/RoleControllerTest.java b/src/test/java/com/zsc/edu/gateway/rest/system/RoleControllerTest.java
index 95a42fd..e15d9fe 100644
--- a/src/test/java/com/zsc/edu/gateway/rest/system/RoleControllerTest.java
+++ b/src/test/java/com/zsc/edu/gateway/rest/system/RoleControllerTest.java
@@ -1,14 +1,17 @@
 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.domain.system.RoleBuilder;
 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.entity.Role;
+import com.zsc.edu.gateway.modules.system.service.RoleAuthService;
 import com.zsc.edu.gateway.modules.system.service.RoleService;
 import org.assertj.core.util.Lists;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.mockito.Spy;
 import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
 import org.springframework.http.MediaType;
@@ -20,116 +23,70 @@ import static org.mockito.Mockito.verify;
 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.user;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-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.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
 @WebMvcTest(RoleController.class)
 public class RoleControllerTest extends MockMvcConfigBase {
+    @Spy
     private static Role role1;
 
     private static Role role2;
 
     @MockBean
     private RoleService service;
+    @MockBean
+    private RoleAuthService authService;
 
     @BeforeAll
     static void beforeAll() {
         role1 = RoleBuilder.aRole().name("管理员").build();
+        role1.setId(1L);
         role2 = RoleBuilder.aRole().name("普通用户").build();
+        role2.setId(2L);
     }
 
     @Test
-    void create() throws Exception{
+    void create() throws Exception {
         RoleDto dto = new RoleDto();
-        dto.name  = role1.getName();
+        dto.setName(role1.getName());
         when(service.create(any())).thenReturn(role1);
         mockMvc.perform(post("/api/rest/role")
                 .with(csrf().asHeader())
                 .with(user(userDetails))
                 .contentType(MediaType.APPLICATION_JSON)
                 .content(objectMapper.writeValueAsString(dto))
-            ).andExpect(status().isOk()).andDo(print());
+        ).andExpect(status().isOk()).andDo(print());
         verify(service).create(any());
     }
 
     @Test
     void list() throws Exception {
-        List<Role> Roles = Lists.newArrayList(role1, role2);
-        when(service.list()).thenReturn(Roles);
-        mockMvc.perform(get("/api/rest/role").with(user(userDetails)))
-                .andExpect(status().isOk())
+        List<Role> roles = Lists.newArrayList(role1, role2);
+        Page<Role> pageResult = new Page<>();
+        pageResult.setRecords(roles);
+        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());
-        verify(service).list();
+        verify(service).page(any(Page.class), any());
     }
 
     @Test
     void update() throws Exception {
         RoleDto dto = new RoleDto();
-        dto.name  = role1.getName();
-        when(service.update(any(), any())).thenReturn(true);
-        mockMvc.perform(patch("/api/rest/role/{id}", role1.id)
-                    .with(csrf().asHeader())
-                    .with(user(userDetails))
-                    .contentType(MediaType.APPLICATION_JSON)
-                    .content(objectMapper.writeValueAsString(dto))
-                )
-                .andExpect(status().isOk()).andDo(print());
-        verify(service).update(any(), any());
+        dto.setName(role1.getName());
+        when(service.edit(any(), any())).thenReturn(true);
+        mockMvc.perform(patch("/api/rest/role/{id}", role1.getId())
+                .with(csrf().asHeader())
+                .with(user(userDetails))
+                .contentType(MediaType.APPLICATION_JSON)
+                .content(objectMapper.writeValueAsString(dto))
+        ).andExpect(status().isOk()).andDo(print());
+        verify(service).edit(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());
-//    }
-
 }
diff --git a/src/test/java/com/zsc/edu/gateway/service/system/DeptServiceTest.java b/src/test/java/com/zsc/edu/gateway/service/system/DeptServiceTest.java
index c2a8640..658a851 100644
--- a/src/test/java/com/zsc/edu/gateway/service/system/DeptServiceTest.java
+++ b/src/test/java/com/zsc/edu/gateway/service/system/DeptServiceTest.java
@@ -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.QueryWrapper;
+import com.zsc.edu.gateway.common.util.TreeUtil;
 import com.zsc.edu.gateway.domain.system.DeptBuilder;
 import com.zsc.edu.gateway.exception.ConstraintException;
 import com.zsc.edu.gateway.modules.system.dto.DeptDto;
@@ -17,6 +18,9 @@ import org.springframework.dao.DuplicateKeyException;
 
 import jakarta.annotation.Resource;
 
+import java.util.HashSet;
+import java.util.List;
+
 import static org.junit.jupiter.api.Assertions.*;
 
 /**
@@ -40,73 +44,51 @@ class DeptServiceTest {
 
     @BeforeEach
     void setUp() {
-        dept1 = DeptBuilder.aDept().name("测试部门1").build();
+        dept1 = DeptBuilder.aDept().name("A测试部门1").build();
+        dept1.setId(121L);
         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);
-        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);
-        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);
     }
 
     @AfterEach
     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
     void list() {
         LambdaQueryWrapper<Dept> queryWrapper = new LambdaQueryWrapper<>();
-        assertEquals(1, service.list(queryWrapper.like(Dept::getName, "测试部门1")).size());
-//        assertEquals(1, service.list(queryWrapper.eq(Dept::getName, dept1.getName())).size());
+        assertEquals(4, service.list(queryWrapper.like(Dept::getName, "A测试部门")).size());
+        assertEquals(1, service.list(queryWrapper.eq(Dept::getName, dept1.getName())).size());
 //        assertEquals(4, service.list().size());
     }
 
-//    @Test
-//    void listTree() {
-//        Dept result = service.listTree(dept1.id);
-//        int count = result.children.size();
-//        assertEquals(2, count);
-//    }
 
     @Test
     void createAdmin() {
-        Dept dept  = new Dept();
-        dept.setName("东菱经销商3");
-        dept.setRemark("remark...");
-        dept.setPid(dept1.id);
-        service.save(dept);
-        assertEquals(5, service.list().size());
+        DeptDto dto = new DeptDto();
+        dto.setName("A东菱经销商3");
+        dto.setRemark("remark...");
+        dto.setPid(dept1.id);
+        service.create(dto);
+        assertEquals(5, service.list(new LambdaQueryWrapper<Dept>().like(Dept::getName, "A")).size());
         // 不能创建其他已存在的同名同代码部门
         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
     void updateAdmin() {
         DeptDto dto = new DeptDto();
-        dto.setName("东菱经销商5");
+        dto.setName("A东菱经销商5");
         dto.setRemark("remark...");
         assertTrue(service.edit(dto, dept2.id));
         Dept tmp = service.getOne(new LambdaQueryWrapper<Dept>().eq(Dept::getName, dto.getName()));
@@ -118,21 +100,19 @@ class DeptServiceTest {
     }
 
 
-//    @Test
-//    void tree() {
-//        Dept result = service.listTree(dept3.id);
-//        HashSet<Long> deptPath = DeptTreeUtil.getDeptPath(result);
-//        System.out.println(deptPath);
-//        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 tree() {
+        List<Dept> results = service.listTree(dept3.id);
+        System.out.println(results);
+        assertEquals(1, results.size());
+    }
 
+    @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);
+    }
 
 }
diff --git a/src/test/java/com/zsc/edu/gateway/service/system/RoleServiceTest.java b/src/test/java/com/zsc/edu/gateway/service/system/RoleServiceTest.java
index 14a6ae3..896be5e 100644
--- a/src/test/java/com/zsc/edu/gateway/service/system/RoleServiceTest.java
+++ b/src/test/java/com/zsc/edu/gateway/service/system/RoleServiceTest.java
@@ -1,11 +1,17 @@
 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.exception.ConstraintException;
 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.repo.AuthorityRepository;
 import com.zsc.edu.gateway.modules.system.repo.RoleRepository;
 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.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -32,59 +38,45 @@ class RoleServiceTest {
     private Role role1;
     private Role role2;
 
-    private Role Role3;
-    private Role Role4;
-//    @Resource
-    private AuthorityRepository authorityRepository;
+    @BeforeEach
+    void setUp() {
+        role1 = RoleBuilder.aRole().name("A超级管理员").build();
+        repo.insert(role1);
+        role2 = RoleBuilder.aRole().name("A普通用户").build();
+        repo.insert(role2);
+    }
 
-//    @BeforeEach
-//    void setUp() {
-//        role1 = RoleBuilder.aRole().name("超级管理员").build();
-//        repo.insert(role1);
-//        role2 = RoleBuilder.aRole().name("普通用户").build();
-//        repo.insert(role2);
-//    }
-//
-//    @AfterEach
-//    void tearDown() {
-//        repo.delete(new QueryWrapper<>());
-//    }
+    @AfterEach
+    void tearDown() {
+        repo.delete(new LambdaQueryWrapper<Role>().in(Role::getName, "A超级管理员", "A普通用户", "A公司CEO", "A项目经理", "A超级管理员2"));
+    }
 
     @Test
     void list() {
-        assertEquals(1, service.list().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(2, service.list(new LambdaQueryWrapper<Role>().like(Role::getName, "A")).size());
+        assertEquals(1, service.list(new LambdaQueryWrapper<Role>().eq(Role::getName, role1.getName())).size());
+//        assertEquals(1, service.list().size());
     }
 
     @Test
     void create() {
-//        Role Role  = new Role();
-//        Role.setName("东菱经销商5");
-//        Role.setRemark("remark...");
-//        Role.setPid(Role1.id);
         RoleDto dto = new RoleDto();
-        dto.setName("东菱经销商5");
+        dto.setName("A公司CEO");
         dto.setRemark("remark...");
-        dto.setAuthorities(new HashSet<>(Arrays.asList(authorityRepository.selectOne(null))));
+        dto.setAuthorities(null);
         Role Role = service.create(dto);
         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
     void update() {
         RoleDto dto = new RoleDto();
-        dto.setName("超级管理员2");
+        dto.setName("A超级管理员2");
         dto.setRemark("remark...");
-        dto.setAuthorities(authorityRepository.selectAuthoritiesByRoleId(1L));
+        dto.setAuthorities(null);
         assertTrue(service.edit(dto, role2.id));
     }
-
-    @Test
-    void roleVo(){
-        repo.deleteById(role1.id);
-    }
 }
diff --git a/src/test/java/com/zsc/edu/gateway/service/system/UserServiceTest.java b/src/test/java/com/zsc/edu/gateway/service/system/UserServiceTest.java
index f18ea3e..0f400cc 100644
--- a/src/test/java/com/zsc/edu/gateway/service/system/UserServiceTest.java
+++ b/src/test/java/com/zsc/edu/gateway/service/system/UserServiceTest.java
@@ -1,17 +1,32 @@
 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.Role;
 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.RoleAuthoritiesRepository;
 import com.zsc.edu.gateway.modules.system.repo.UserRepository;
+import com.zsc.edu.gateway.modules.system.service.UserService;
 import jakarta.annotation.Resource;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.security.crypto.password.PasswordEncoder;
 
 import java.util.Set;
 
+import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * @author ftz
  * 创建时间:29/12/2023 上午11:21
@@ -21,26 +36,92 @@ public class UserServiceTest {
     @Resource
     private RoleAuthoritiesRepository roleAuthoritiesRepository;
     @Resource
-    private  UserRepository userRepository;
+    private UserService service;
+    @Resource
+    private UserRepository repo;
     @Resource
     private AuthorityRepository authorityRepository;
 
     @Resource
     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
-    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");
+//        Set<Authority> authorities= authorityRepository.selectAuthoritiesByRoleId(user.getRoleId());
+//        user.role.authorities=authorities;
 //        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);
+//    }
 }