-
Notifications
You must be signed in to change notification settings - Fork 96
Expand file tree
/
Copy pathDelegatingDataLoaderTest.java
More file actions
64 lines (49 loc) · 2.52 KB
/
DelegatingDataLoaderTest.java
File metadata and controls
64 lines (49 loc) · 2.52 KB
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
63
64
package org.dataloader;
import org.dataloader.fixtures.TestKit;
import org.dataloader.fixtures.parameterized.DelegatingDataLoaderFactory;
import org.jspecify.annotations.NonNull;
import org.jspecify.annotations.Nullable;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import static org.awaitility.Awaitility.await;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
/**
* There are WAY more tests via the {@link DelegatingDataLoaderFactory}
* parameterized tests. All the basic {@link DataLoader} tests pass when wrapped in a {@link DelegatingDataLoader}
*/
public class DelegatingDataLoaderTest {
@Test
void canUnwrapDataLoaders() {
DataLoader<Object, Object> rawLoader = TestKit.idLoader();
DataLoader<Object, Object> delegateLoader = new DelegatingDataLoader<>(rawLoader);
assertThat(DelegatingDataLoader.unwrap(rawLoader), is(rawLoader));
assertThat(DelegatingDataLoader.unwrap(delegateLoader), is(rawLoader));
}
@Test
void canCreateAClassOk() {
DataLoader<String, String> rawLoader = TestKit.idLoader();
DelegatingDataLoader<String, String> delegatingDataLoader = new DelegatingDataLoader<>(rawLoader) {
@Override
public CompletableFuture<String> load(@NonNull String key, @Nullable Object keyContext) {
CompletableFuture<String> cf = super.load(key, keyContext);
return cf.thenApply(v -> "|" + v + "|");
}
};
assertThat(delegatingDataLoader.getDelegate(), is(rawLoader));
CompletableFuture<String> cfA = delegatingDataLoader.load("A");
CompletableFuture<String> cfB = delegatingDataLoader.load("B");
CompletableFuture<List<String>> cfCD = delegatingDataLoader.loadMany(List.of("C", "D"));
CompletableFuture<List<String>> dispatch = delegatingDataLoader.dispatch();
await().until(dispatch::isDone);
assertThat(cfA.join(), equalTo("|A|"));
assertThat(cfB.join(), equalTo("|B|"));
assertThat(cfCD.join(), equalTo(List.of("|C|", "|D|")));
assertThat(delegatingDataLoader.getIfPresent("A").isEmpty(), equalTo(false));
assertThat(delegatingDataLoader.getIfPresent("X").isEmpty(), equalTo(true));
assertThat(delegatingDataLoader.getIfCompleted("A").isEmpty(), equalTo(false));
assertThat(delegatingDataLoader.getIfCompleted("X").isEmpty(), equalTo(true));
}
}