Skip to content

Commit 0600df7

Browse files
committed
test: 增加单元测试
1 parent 61d7215 commit 0600df7

File tree

3 files changed

+89
-0
lines changed

3 files changed

+89
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package me.lokic.dataloaderplus.core;
2+
3+
import me.lokic.dataloaderplus.core.kits.CompletableFutures;
4+
import me.lokic.dataloaderplus.core.service.UserNameBatchLoader;
5+
import me.lokic.dataloaderplus.core.service.UserService;
6+
import org.dataloader.BatchLoaderEnvironment;
7+
import org.dataloader.DataLoader;
8+
import org.junit.Test;
9+
import org.mockito.Mockito;
10+
11+
import java.util.ArrayList;
12+
import java.util.HashSet;
13+
import java.util.List;
14+
import java.util.Set;
15+
import java.util.concurrent.CompletableFuture;
16+
17+
public class DataLoaderTemplateTest {
18+
19+
20+
/**
21+
* 多次执行dataloader,方法{@link UserNameBatchLoader#load(Set, BatchLoaderEnvironment)} 调用一次
22+
*/
23+
@Test
24+
public void testBatchLoaderCallOneTimes() {
25+
26+
UserNameBatchLoader userNameBatchLoader = Mockito.spy(new UserNameBatchLoader());
27+
28+
DataLoader<?, ?> dataLoader = DataLoader.newMappedDataLoader(userNameBatchLoader, TemplateConfig.DEFAULT.getOptions());
29+
DataLoaderFactory factory = Mockito.mock(DataLoaderFactory.class);
30+
Mockito.doReturn(dataLoader).when(factory).create(Mockito.any(), Mockito.any());
31+
32+
DataLoaderTemplate template = new DataLoaderTemplate(TemplateConfig.builder().factory(factory).build());
33+
34+
UserService userService = ExDataLoaderRegistry.getService(UserService.class);
35+
36+
37+
template.using(registry -> {
38+
List<CompletableFuture<String>> li = new ArrayList<>();
39+
li.add(userService.getNameById("1"));
40+
li.add(userService.getNameById("2"));
41+
return CompletableFutures.sequence(li);
42+
});
43+
44+
Set<String> set = new HashSet<>();
45+
set.add("1");
46+
set.add("2");
47+
48+
Mockito.verify(userNameBatchLoader, Mockito.times(1))
49+
.load(Mockito.eq(set), Mockito.any());
50+
51+
}
52+
53+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package me.lokic.dataloaderplus.core.service;
2+
3+
import lombok.SneakyThrows;
4+
import lombok.extern.slf4j.Slf4j;
5+
import me.lokic.dataloaderplus.core.MultiKeyMappedBatchLoader;
6+
import org.dataloader.BatchLoaderEnvironment;
7+
8+
import java.util.Map;
9+
import java.util.Set;
10+
import java.util.concurrent.CompletableFuture;
11+
import java.util.concurrent.CompletionStage;
12+
import java.util.function.Function;
13+
import java.util.stream.Collectors;
14+
15+
@Slf4j
16+
public class UserNameBatchLoader implements MultiKeyMappedBatchLoader<String, String> {
17+
18+
@SneakyThrows
19+
@Override
20+
public CompletionStage<Map<String, String>> load(Set<String> set, BatchLoaderEnvironment batchLoaderEnvironment) {
21+
return CompletableFuture.supplyAsync(() -> set.stream().collect(Collectors.toMap(Function.identity(), x -> "name:" + x)));
22+
}
23+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package me.lokic.dataloaderplus.core.service;
2+
3+
import me.lokic.dataloaderplus.core.annotation.DataLoaderMethod;
4+
import me.lokic.dataloaderplus.core.annotation.DataLoaderService;
5+
6+
import java.util.concurrent.CompletableFuture;
7+
8+
@DataLoaderService
9+
public interface UserService {
10+
11+
@DataLoaderMethod(batchLoader = UserNameBatchLoader.class)
12+
CompletableFuture<String> getNameById(String id);
13+
}

0 commit comments

Comments
 (0)