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;
|
}
|
}
|