Skip to content
This repository was archived by the owner on Dec 19, 2023. It is now read-only.

Commit 838f20a

Browse files
committed
Increase coverage webflux starter
1 parent 9400de3 commit 838f20a

File tree

10 files changed

+103
-1
lines changed

10 files changed

+103
-1
lines changed

graphql-kickstart-spring-boot-autoconfigure-webflux/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@ dependencies {
55
implementation "org.springframework.boot:spring-boot-autoconfigure"
66
implementation "com.graphql-java-kickstart:graphql-java-kickstart:$LIB_GRAPHQL_SERVLET_VER"
77
implementation "org.springframework.boot:spring-boot-starter-webflux"
8+
9+
testImplementation "org.springframework.boot:spring-boot-starter-test"
10+
testImplementation(project(":graphql-kickstart-spring-boot-starter-tools"))
811
}

graphql-kickstart-spring-boot-autoconfigure-webflux/src/main/java/graphql/kickstart/spring/webflux/boot/GraphQLSpringWebfluxAutoConfiguration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package graphql.kickstart.spring.webflux.boot;
22

33
import static graphql.kickstart.execution.GraphQLObjectMapper.newBuilder;
4+
import static org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type.REACTIVE;
45

56
import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentationOptions;
67
import graphql.kickstart.execution.BatchedDataLoaderGraphQLBuilder;
@@ -39,6 +40,7 @@
3940
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
4041
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
4142
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
43+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
4244
import org.springframework.context.annotation.Bean;
4345
import org.springframework.context.annotation.Configuration;
4446
import org.springframework.context.annotation.Import;
@@ -50,6 +52,7 @@
5052
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
5153
@Slf4j
5254
@Configuration
55+
@ConditionalOnWebApplication(type = REACTIVE)
5356
@ConditionalOnBean(GraphQLSchema.class)
5457
@AutoConfigureAfter(GraphQLJavaToolsAutoConfiguration.class)
5558
@Import({GraphQLController.class, ReactiveWebSocketSubscriptionsHandler.class})

graphql-kickstart-spring-boot-autoconfigure-webflux/src/main/java/graphql/kickstart/spring/webflux/boot/MonoAutoConfiguration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
package graphql.kickstart.spring.webflux.boot;
22

3+
import static org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type.REACTIVE;
4+
35
import graphql.kickstart.tools.SchemaParser;
46
import graphql.kickstart.tools.SchemaParserOptions.GenericWrapper;
57
import graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration;
68
import java.util.List;
79
import org.springframework.beans.factory.annotation.Autowired;
810
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
911
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
12+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
1013
import org.springframework.context.annotation.Bean;
1114
import org.springframework.context.annotation.Configuration;
1215
import reactor.core.publisher.Mono;
1316

1417
@Configuration
1518
@ConditionalOnClass(SchemaParser.class)
19+
@ConditionalOnWebApplication(type = REACTIVE)
1620
@AutoConfigureBefore(GraphQLJavaToolsAutoConfiguration.class)
1721
public class MonoAutoConfiguration {
1822

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package graphql.kickstart.spring.webflux.boot;
2+
3+
import graphql.kickstart.tools.GraphQLQueryResolver;
4+
import org.springframework.stereotype.Component;
5+
import reactor.core.publisher.Mono;
6+
7+
@Component
8+
class HelloQuery implements GraphQLQueryResolver {
9+
10+
public Mono<String> hello() {
11+
return Mono.just("Hello world");
12+
}
13+
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package graphql.kickstart.spring.webflux.boot;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.io.IOException;
6+
import lombok.RequiredArgsConstructor;
7+
import lombok.val;
8+
import org.junit.jupiter.api.Test;
9+
import org.junit.jupiter.api.extension.ExtendWith;
10+
import org.springframework.beans.factory.annotation.Autowired;
11+
import org.springframework.boot.test.context.SpringBootTest;
12+
import org.springframework.http.MediaType;
13+
import org.springframework.test.context.junit.jupiter.SpringExtension;
14+
import org.springframework.test.web.reactive.server.WebTestClient;
15+
16+
@SuppressWarnings("ALL")
17+
@RequiredArgsConstructor
18+
@ExtendWith(SpringExtension.class)
19+
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
20+
class MonoAutoConfigurationTest {
21+
22+
@Autowired
23+
private WebTestClient webTestClient;
24+
25+
@Test
26+
void monoWrapper() throws IOException {
27+
val result = webTestClient.post()
28+
.uri("/graphql")
29+
.contentType(MediaType.APPLICATION_JSON)
30+
.bodyValue("{ \"query\": \"query { hello } \"}")
31+
.exchange()
32+
.returnResult(String.class);
33+
val response = result.getResponseBody().blockFirst();
34+
assertThat(response).isEqualTo("{\"data\":{\"hello\":\"Hello world\"}}");
35+
}
36+
37+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package graphql.kickstart.spring.webflux.boot;
2+
3+
import graphql.kickstart.tools.GraphQLSubscriptionResolver;
4+
import graphql.schema.DataFetchingEnvironment;
5+
import java.time.Duration;
6+
import org.reactivestreams.Publisher;
7+
import org.springframework.stereotype.Service;
8+
import reactor.core.publisher.Flux;
9+
10+
@Service
11+
class MySubscriptionResolver implements GraphQLSubscriptionResolver {
12+
13+
Publisher<Integer> hello(DataFetchingEnvironment env) {
14+
return Flux.range(0, 100).delayElements(Duration.ofSeconds(1));
15+
}
16+
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package graphql.kickstart.spring.webflux.boot;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class WebfluxApplication {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(WebfluxApplication.class, args);
11+
}
12+
13+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
query {
2+
hello
3+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
type Query {
2+
hello: String
3+
}
4+
5+
type Subscription {
6+
hello: Int
7+
}

graphql-spring-boot-autoconfigure/src/main/java/graphql/kickstart/spring/web/boot/GraphQLWebAutoConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
7373
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
7474
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
75+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
7576
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
7677
import org.springframework.boot.context.properties.ConfigurationProperties;
7778
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -92,7 +93,7 @@
9293
@Slf4j
9394
@Configuration
9495
@RequiredArgsConstructor
95-
@ConditionalOnWebApplication
96+
@ConditionalOnWebApplication(type = Type.SERVLET)
9697
@ConditionalOnClass(DispatcherServlet.class)
9798
@Conditional(OnSchemaOrSchemaProviderBean.class)
9899
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")

0 commit comments

Comments
 (0)