From 6de15528a3ba8f9c87d9aaffe895e69fdcdc9026 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 16 十月 2026 21:28:43 +0800
Subject: [PATCH] fix(system): 修复用户导入「覆盖」分支不可达,导入测试对齐新模板列

---
 yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java |  117 ++++++++++++++++++++++++++++++++++------------------------
 1 files changed, 69 insertions(+), 48 deletions(-)

diff --git a/yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java b/yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
index 68c8510..804e510 100644
--- a/yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
+++ b/yudao-module-system/src/test/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImplTest.java
@@ -9,6 +9,7 @@
 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
 import cn.iocoder.yudao.module.infra.api.config.ConfigApi;
 import cn.iocoder.yudao.module.infra.api.file.FileApi;
+import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserImportExcelVO;
@@ -37,6 +38,7 @@
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.test.context.bean.override.mockito.MockitoBean;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
@@ -417,20 +419,20 @@
     @Test
     public void testImportUserList_01() {
         // 鍑嗗鍙傛暟
-        UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> {
-            o.setEmail(randomEmail());
-            o.setMobile(randomMobile());
-        });
+        UserImportExcelVO importUser = randomImportUser(o -> o.setUsername(randomString()));
+        // mock 閮ㄩ棬銆佸矖浣嶏紝璁┿�岄儴闂ㄣ�嶃�屽矖浣嶃�嶄袱鍒楄兘瑙f瀽鍒�
+        mockDeptAndPostList("鐮斿彂閮�", "鏅�氬憳宸�");
         // mock 鏂规硶锛屾ā鎷熷け璐�
         doThrow(new ServiceException(DEPT_NOT_FOUND)).when(deptService).validateDeptList(any());
 
         // 璋冪敤
         UserImportRespVO respVO = userService.importUserList(newArrayList(importUser), true);
-        // 鏂█
+        // 鏂█锛氬け璐ユ槑缁嗙殑 key 瀹氫綅鍒板叿浣撹
         assertEquals(0, respVO.getCreateUsernames().size());
         assertEquals(0, respVO.getUpdateUsernames().size());
         assertEquals(1, respVO.getFailureUsernames().size());
-        assertEquals(DEPT_NOT_FOUND.getMsg(), respVO.getFailureUsernames().get(importUser.getUsername()));
+        assertEquals(DEPT_NOT_FOUND.getMsg(),
+                respVO.getFailureUsernames().get(buildRowKey(1, importUser.getUsername())));
     }
 
     /**
@@ -439,18 +441,9 @@
     @Test
     public void testImportUserList_02() {
         // 鍑嗗鍙傛暟
-        UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> {
-            o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 淇濊瘉 status 鐨勮寖鍥�
-            o.setSex(randomEle(SexEnum.values()).getSex()); // 淇濊瘉 sex 鐨勮寖鍥�
-            o.setEmail(randomEmail());
-            o.setMobile(randomMobile());
-        });
-        // mock deptService 鐨勬柟娉�
-        DeptDO dept = randomPojo(DeptDO.class, o -> {
-            o.setId(importUser.getDeptId());
-            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
-        });
-        when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
+        UserImportExcelVO importUser = randomImportUser(o -> o.setUsername(randomString()));
+        // mock 閮ㄩ棬銆佸矖浣�
+        Long deptId = mockDeptAndPostList("鐮斿彂閮�", "鏅�氬憳宸�");
         // mock passwordEncoder 鐨勬柟娉�
         when(passwordEncoder.encode(eq("yudaoyuanma"))).thenReturn("java");
 
@@ -459,8 +452,10 @@
         // 鏂█
         assertEquals(1, respVO.getCreateUsernames().size());
         AdminUserDO user = userMapper.selectByUsername(respVO.getCreateUsernames().get(0));
-        assertPojoEquals(importUser, user);
+        assertPojoEquals(importUser, user, "dept", "post", "password"); // dept銆乸ost 鍦ㄥ簱閲屽瓨鐨勬槸缂栧彿
         assertEquals("java", user.getPassword());
+        assertEquals(deptId, user.getDeptId()); //銆岄儴闂ㄣ�嶅垪濉殑鍚嶇О缈昏瘧鎴愪簡閮ㄩ棬缂栧彿
+        assertEquals(1, userPostMapper.selectListByUserId(user.getId()).size()); //銆屽矖浣嶃�嶅垪鍚屾鍐欏叆浜嗙敤鎴�-宀椾綅鍏宠仈
         assertEquals(0, respVO.getUpdateUsernames().size());
         assertEquals(0, respVO.getFailureUsernames().size());
     }
@@ -474,27 +469,20 @@
         AdminUserDO dbUser = randomAdminUserDO();
         userMapper.insert(dbUser);
         // 鍑嗗鍙傛暟
-        UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> {
-            o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 淇濊瘉 status 鐨勮寖鍥�
-            o.setSex(randomEle(SexEnum.values()).getSex()); // 淇濊瘉 sex 鐨勮寖鍥�
-            o.setUsername(dbUser.getUsername());
-            o.setEmail(randomEmail());
-            o.setMobile(randomMobile());
-        });
-        // mock deptService 鐨勬柟娉�
-        DeptDO dept = randomPojo(DeptDO.class, o -> {
-            o.setId(importUser.getDeptId());
-            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
-        });
-        when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
+        UserImportExcelVO importUser = randomImportUser(o -> o.setUsername(dbUser.getUsername()));
+        // mock 閮ㄩ棬銆佸矖浣�
+        mockDeptAndPostList("鐮斿彂閮�", "鏅�氬憳宸�");
 
         // 璋冪敤
         UserImportRespVO respVO = userService.importUserList(newArrayList(importUser), false);
-        // 鏂█
+        // 鏂█锛氭彁绀洪噷瑕佸憡璇夌敤鎴锋�庝箞鏀癸紙鍕鹃�夎鐩栨垨鎹㈣处鍙凤級
         assertEquals(0, respVO.getCreateUsernames().size());
         assertEquals(0, respVO.getUpdateUsernames().size());
         assertEquals(1, respVO.getFailureUsernames().size());
-        assertEquals(USER_USERNAME_EXISTS.getMsg(), respVO.getFailureUsernames().get(importUser.getUsername()));
+        String failureMessage = respVO.getFailureUsernames().get(buildRowKey(1, dbUser.getUsername()));
+        assertNotNull(failureMessage);
+        assertTrue(failureMessage.startsWith("鐢ㄦ埛璐﹀彿宸插瓨鍦�"));
+        assertTrue(failureMessage.contains("鏄惁瑕嗙洊"));
     }
 
     /**
@@ -506,19 +494,9 @@
         AdminUserDO dbUser = randomAdminUserDO();
         userMapper.insert(dbUser);
         // 鍑嗗鍙傛暟
-        UserImportExcelVO importUser = randomPojo(UserImportExcelVO.class, o -> {
-            o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 淇濊瘉 status 鐨勮寖鍥�
-            o.setSex(randomEle(SexEnum.values()).getSex()); // 淇濊瘉 sex 鐨勮寖鍥�
-            o.setUsername(dbUser.getUsername());
-            o.setEmail(randomEmail());
-            o.setMobile(randomMobile());
-        });
-        // mock deptService 鐨勬柟娉�
-        DeptDO dept = randomPojo(DeptDO.class, o -> {
-            o.setId(importUser.getDeptId());
-            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
-        });
-        when(deptService.getDept(eq(dept.getId()))).thenReturn(dept);
+        UserImportExcelVO importUser = randomImportUser(o -> o.setUsername(dbUser.getUsername()));
+        // mock 閮ㄩ棬銆佸矖浣�
+        Long deptId = mockDeptAndPostList("鐮斿彂閮�", "鏅�氬憳宸�");
 
         // 璋冪敤
         UserImportRespVO respVO = userService.importUserList(newArrayList(importUser), true);
@@ -526,10 +504,53 @@
         assertEquals(0, respVO.getCreateUsernames().size());
         assertEquals(1, respVO.getUpdateUsernames().size());
         AdminUserDO user = userMapper.selectByUsername(respVO.getUpdateUsernames().get(0));
-        assertPojoEquals(importUser, user);
+        assertPojoEquals(importUser, user, "dept", "post", "password"); // dept銆乸ost 鍦ㄥ簱閲屽瓨鐨勬槸缂栧彿
+        assertEquals(deptId, user.getDeptId());
+        assertEquals(dbUser.getPassword(), user.getPassword()); // 瑕嗙洊鏃朵笉鑳芥妸鍦ㄧ敤璐﹀彿鐨勫瘑鐮佹敼鎺�
+        assertEquals(1, userPostMapper.selectListByUserId(user.getId()).size());
         assertEquals(0, respVO.getFailureUsernames().size());
     }
 
+    /**
+     * 鐢熸垚涓�涓�岄儴闂ㄣ�佸矖浣嶃�佸瘑鐮併�嶉兘濉ソ鐨勫鍏ヨ锛�
+     * 閮ㄩ棬銆佸矖浣嶅~鐨勬槸鍚嶇О锛堢敤浜庢牎楠屽悕绉扮炕璇戞垚缂栧彿锛夛紝瀵嗙爜鐣欑┖锛堢敤浜庢牎楠岃蛋绯荤粺閰嶇疆鐨勫垵濮嬪瘑鐮侊級
+     */
+    private UserImportExcelVO randomImportUser(Consumer<UserImportExcelVO> consumer) {
+        return randomPojo(UserImportExcelVO.class, o -> {
+            o.setStatus(randomEle(CommonStatusEnum.values()).getStatus()); // 淇濊瘉 status 鐨勮寖鍥�
+            o.setSex(randomEle(SexEnum.values()).getSex()); // 淇濊瘉 sex 鐨勮寖鍥�
+            o.setEmail(randomEmail());
+            o.setMobile(randomMobile());
+            o.setDept("鐮斿彂閮�");
+            o.setPost("鏅�氬憳宸�");
+            o.setPassword(null);
+            consumer.accept(o);
+        });
+    }
+
+    /** mock 閮ㄩ棬銆佸矖浣嶇殑鍒楄〃鏌ヨ锛岃銆岄儴闂ㄣ�嶃�屽矖浣嶃�嶄袱鍒楀~鍐欑殑鍚嶇О鑳借В鏋愬埌锛涜繑鍥為儴闂ㄧ殑缂栧彿 */
+    private Long mockDeptAndPostList(String deptName, String... postNames) {
+        DeptDO dept = randomPojo(DeptDO.class, o -> {
+            o.setName(deptName);
+            o.setStatus(CommonStatusEnum.ENABLE.getStatus());
+        });
+        when(deptService.getDeptList(any(DeptListReqVO.class))).thenReturn(newArrayList(dept));
+        List<PostDO> posts = new ArrayList<>();
+        for (String postName : postNames) {
+            posts.add(randomPojo(PostDO.class, o -> {
+                o.setName(postName);
+                o.setStatus(CommonStatusEnum.ENABLE.getStatus());
+            }));
+        }
+        when(postService.getPostList(any(), any())).thenReturn(posts);
+        return dept.getId();
+    }
+
+    /** 澶辫触鏄庣粏鐨� key锛氫笌 AdminUserServiceImpl#importUserList 閲屾嫾鐨勮鍙锋枃妗堜繚鎸佷竴鑷� */
+    private String buildRowKey(int rowIndex, String username) {
+        return "绗� " + rowIndex + " 琛屻��" + username + "銆�";
+    }
+
     @Test
     public void testValidateUserExists_notExists() {
         assertServiceException(() -> userService.validateUserExists(randomLongId()), USER_NOT_EXISTS);

--
Gitblit v1.9.3