刘光辉
昨天 bb638871a7fb692d80f1b7a758f991dc0879002c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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("张三(zhangsan)", 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;
    }
}