Skip to content
This repository was archived by the owner on Oct 25, 2021. It is now read-only.

Commit 8fd3198

Browse files
committed
add tests for customizer
1 parent 790bff8 commit 8fd3198

File tree

8 files changed

+127
-3
lines changed

8 files changed

+127
-3
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ subprojects {
4343
springVersion = "5.1.2.RELEASE"
4444
springBootVersion = "2.1.0.RELEASE"
4545
jacksonVersion = "2.9.6"
46+
assertJVersion = "3.11.1"
4647
}
4748

4849
repositories {

graphql-java-spring-webflux/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ dependencies {
66
compile "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion"
77
compile "com.graphql-java:graphql-java:$graphqlJavaVersion"
88

9+
testCompile("org.assertj:assertj-core:$assertJVersion")
910
testCompile group: 'junit', name: 'junit', version: '4.12'
1011
testCompile "org.springframework:spring-test:$springVersion"
1112
testCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'

graphql-java-spring-webflux/src/main/java/graphql/spring/web/reactive/GraphQLInvocation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@
88
@PublicApi
99
public interface GraphQLInvocation {
1010

11-
Mono<ExecutionResult> invoke(GraphQLInvocationData invocationData, ServerWebExchange webRequest);
11+
Mono<ExecutionResult> invoke(GraphQLInvocationData invocationData, ServerWebExchange serverWebExchange);
1212

1313
}

graphql-java-spring-webflux/src/main/java/graphql/spring/web/reactive/components/DefaultGraphQLInvocation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
public class DefaultGraphQLInvocation implements GraphQLInvocation {
1818

1919
@Autowired
20-
private GraphQL graphQL;
20+
GraphQL graphQL;
2121

2222
@Autowired
2323
ExecutionInputCustomizer executionInputCustomizer;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package graphql.spring.web.reactive.components;
2+
3+
import graphql.ExecutionInput;
4+
import graphql.ExecutionResult;
5+
import graphql.GraphQL;
6+
import graphql.spring.web.reactive.ExecutionInputCustomizer;
7+
import graphql.spring.web.reactive.GraphQLInvocationData;
8+
import org.junit.Test;
9+
import org.mockito.ArgumentCaptor;
10+
import org.springframework.web.server.ServerWebExchange;
11+
import reactor.core.publisher.Mono;
12+
13+
import java.util.LinkedHashMap;
14+
import java.util.Map;
15+
16+
import static java.util.concurrent.CompletableFuture.completedFuture;
17+
import static org.assertj.core.api.Assertions.assertThat;
18+
import static org.mockito.ArgumentMatchers.any;
19+
import static org.mockito.Mockito.mock;
20+
import static org.mockito.Mockito.verify;
21+
import static org.mockito.Mockito.when;
22+
23+
public class DefaultGraphQLInvocationTest {
24+
25+
26+
@Test
27+
public void testCustomizerIsCalled() {
28+
29+
String query = "query myQuery {foo}";
30+
String operationName = "myQuery";
31+
Map<String, Object> variables = new LinkedHashMap<>();
32+
33+
DefaultGraphQLInvocation defaultGraphQLInvocation = new DefaultGraphQLInvocation();
34+
ExecutionInputCustomizer executionInputCustomizer = mock(ExecutionInputCustomizer.class);
35+
defaultGraphQLInvocation.executionInputCustomizer = executionInputCustomizer;
36+
GraphQL graphQL = mock(GraphQL.class);
37+
defaultGraphQLInvocation.graphQL = graphQL;
38+
ExecutionResult executionResult = mock(ExecutionResult.class);
39+
when(graphQL.executeAsync(any(ExecutionInput.class))).thenReturn(completedFuture(executionResult));
40+
41+
GraphQLInvocationData graphQLInvocationData = new GraphQLInvocationData(query, operationName, variables);
42+
ServerWebExchange serverWebExchange = mock(ServerWebExchange.class);
43+
44+
ArgumentCaptor<ExecutionInput> captor1 = ArgumentCaptor.forClass(ExecutionInput.class);
45+
ArgumentCaptor<ServerWebExchange> captor2 = ArgumentCaptor.forClass(ServerWebExchange.class);
46+
ExecutionInput executionInputResult = mock(ExecutionInput.class);
47+
when(executionInputCustomizer.customizeExecutionInput(captor1.capture(), captor2.capture())).thenReturn(Mono.just(executionInputResult));
48+
49+
Mono<ExecutionResult> invoke = defaultGraphQLInvocation.invoke(graphQLInvocationData, serverWebExchange);
50+
51+
assertThat(captor1.getValue().getQuery()).isEqualTo(query);
52+
assertThat(captor1.getValue().getOperationName()).isEqualTo(operationName);
53+
assertThat(captor1.getValue().getVariables()).isSameAs(variables);
54+
55+
invoke.block();
56+
57+
verify(graphQL).executeAsync(executionInputResult);
58+
59+
}
60+
61+
62+
}

graphql-java-spring-webmvc/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ dependencies {
66
compile "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion"
77
compile "com.graphql-java:graphql-java:$graphqlJavaVersion"
88

9+
testCompile("org.assertj:assertj-core:$assertJVersion")
910
testCompile group: 'junit', name: 'junit', version: '4.12'
1011
testCompile "org.springframework:spring-test:$springVersion"
1112
testCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'

graphql-java-spring-webmvc/src/main/java/graphql/spring/web/servlet/components/DefaultGraphQLInvocation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
public class DefaultGraphQLInvocation implements GraphQLInvocation {
1919

2020
@Autowired
21-
private GraphQL graphQL;
21+
GraphQL graphQL;
2222

2323
@Autowired
2424
ExecutionInputCustomizer executionInputCustomizer;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package graphql.spring.web.servlet.components;
2+
3+
import graphql.ExecutionInput;
4+
import graphql.ExecutionResult;
5+
import graphql.GraphQL;
6+
import graphql.spring.web.servlet.ExecutionInputCustomizer;
7+
import graphql.spring.web.servlet.GraphQLInvocationData;
8+
import org.junit.Test;
9+
import org.mockito.ArgumentCaptor;
10+
import org.springframework.web.context.request.WebRequest;
11+
12+
import java.util.LinkedHashMap;
13+
import java.util.Map;
14+
import java.util.concurrent.CompletableFuture;
15+
16+
import static java.util.concurrent.CompletableFuture.completedFuture;
17+
import static org.assertj.core.api.Assertions.assertThat;
18+
import static org.mockito.ArgumentMatchers.any;
19+
import static org.mockito.Mockito.mock;
20+
import static org.mockito.Mockito.verify;
21+
import static org.mockito.Mockito.when;
22+
23+
public class DefaultGraphQLInvocationTest {
24+
25+
26+
@Test
27+
public void testCustomizerIsCalled() {
28+
29+
String query = "query myQuery {foo}";
30+
String operationName = "myQuery";
31+
Map<String, Object> variables = new LinkedHashMap<>();
32+
33+
DefaultGraphQLInvocation defaultGraphQLInvocation = new DefaultGraphQLInvocation();
34+
ExecutionInputCustomizer executionInputCustomizer = mock(ExecutionInputCustomizer.class);
35+
defaultGraphQLInvocation.executionInputCustomizer = executionInputCustomizer;
36+
GraphQL graphQL = mock(GraphQL.class);
37+
defaultGraphQLInvocation.graphQL = graphQL;
38+
ExecutionResult executionResult = mock(ExecutionResult.class);
39+
when(graphQL.executeAsync(any(ExecutionInput.class))).thenReturn(completedFuture(executionResult));
40+
41+
GraphQLInvocationData graphQLInvocationData = new GraphQLInvocationData(query, operationName, variables);
42+
WebRequest webRequest = mock(WebRequest.class);
43+
44+
ArgumentCaptor<ExecutionInput> captor1 = ArgumentCaptor.forClass(ExecutionInput.class);
45+
ArgumentCaptor<WebRequest> captor2 = ArgumentCaptor.forClass(WebRequest.class);
46+
ExecutionInput executionInputResult = mock(ExecutionInput.class);
47+
when(executionInputCustomizer.customizeExecutionInput(captor1.capture(), captor2.capture())).thenReturn(completedFuture(executionInputResult));
48+
49+
CompletableFuture<ExecutionResult> invoke = defaultGraphQLInvocation.invoke(graphQLInvocationData, webRequest);
50+
51+
assertThat(captor1.getValue().getQuery()).isEqualTo(query);
52+
assertThat(captor1.getValue().getOperationName()).isEqualTo(operationName);
53+
assertThat(captor1.getValue().getVariables()).isSameAs(variables);
54+
55+
verify(graphQL).executeAsync(executionInputResult);
56+
57+
}
58+
59+
}

0 commit comments

Comments
 (0)