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