From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsPermission/DmsUserDisplayNameResolverTest.java |   62 +++++++++++++++++++++++++++++++
 1 files changed, 62 insertions(+), 0 deletions(-)

diff --git a/jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsPermission/DmsUserDisplayNameResolverTest.java b/jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsPermission/DmsUserDisplayNameResolverTest.java
new file mode 100644
index 0000000..53a2f62
--- /dev/null
+++ b/jnpf-dms/jnpf-dms-biz/src/test/java/jnpf/dmsPermission/DmsUserDisplayNameResolverTest.java
@@ -0,0 +1,62 @@
+package jnpf.dmsPermission;
+
+import jnpf.permission.UserApi;
+import jnpf.permission.entity.UserEntity;
+import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.mockito.ArgumentMatchers.anyList;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+class DmsUserDisplayNameResolverTest {
+
+    @Test
+    void resolvesDistinctUsersInOneBatchAndFormatsAvailableFields() {
+        UserApi userApi = mock(UserApi.class);
+        DmsUserDisplayNameResolver resolver = new DmsUserDisplayNameResolver(userApi);
+        when(userApi.getUserName(anyList())).thenReturn(Arrays.asList(
+                user("user-1", "寮犱笁", "zhangsan"),
+                user("user-2", "鏉庡洓", null),
+                user("user-3", null, "wangwu"),
+                user("user-4", "  ", "  ")));
+
+        Map<String, String> result = resolver.resolve(Arrays.asList(
+                "user-1", " user-1 ", "user-2", "user-3", "user-4", null));
+
+        assertEquals("寮犱笁锛坺hangsan锛�", result.get("user-1"));
+        assertEquals("鏉庡洓", result.get("user-2"));
+        assertEquals("wangwu", result.get("user-3"));
+        assertFalse(result.containsKey("user-4"));
+        ArgumentCaptor<List<String>> ids = ArgumentCaptor.forClass(List.class);
+        verify(userApi).getUserName(ids.capture());
+        assertEquals(Arrays.asList("user-1", "user-2", "user-3", "user-4"), ids.getValue());
+    }
+
+    @Test
+    void returnsEmptyMapWhenUserServiceIsUnavailable() {
+        UserApi userApi = mock(UserApi.class);
+        DmsUserDisplayNameResolver resolver = new DmsUserDisplayNameResolver(userApi);
+        when(userApi.getUserName(anyList())).thenThrow(new IllegalStateException("unavailable"));
+
+        Map<String, String> result = resolver.resolve(Collections.singletonList("user-1"));
+
+        assertEquals(Collections.emptyMap(), result);
+    }
+
+    private UserEntity user(String id, String realName, String account) {
+        UserEntity result = new UserEntity();
+        result.setId(id);
+        result.setRealName(realName);
+        result.setAccount(account);
+        return result;
+    }
+}

--
Gitblit v1.8.0