diff --git a/graphql-dgs-example-shared/src/main/resources/schema/schema.graphqls b/graphql-dgs-example-shared/src/main/resources/schema/schema.graphqls index a03f3c5b5..4c49da282 100644 --- a/graphql-dgs-example-shared/src/main/resources/schema/schema.graphqls +++ b/graphql-dgs-example-shared/src/main/resources/schema/schema.graphqls @@ -87,7 +87,6 @@ type Stock { price: Float } -scalar Upload scalar LocalTime directive @connection on OBJECT diff --git a/graphql-dgs-example-shared/src/test/java/com/netflix/graphql/dgs/example/shared/ExampleSpringBootTest.java b/graphql-dgs-example-shared/src/test/java/com/netflix/graphql/dgs/example/shared/ExampleSpringBootTest.java index 3c9b7d2f9..0a91c33e2 100644 --- a/graphql-dgs-example-shared/src/test/java/com/netflix/graphql/dgs/example/shared/ExampleSpringBootTest.java +++ b/graphql-dgs-example-shared/src/test/java/com/netflix/graphql/dgs/example/shared/ExampleSpringBootTest.java @@ -23,7 +23,9 @@ import com.netflix.graphql.dgs.pagination.DgsPaginationAutoConfiguration; import com.netflix.graphql.dgs.scalars.UploadScalar; import com.netflix.graphql.dgs.test.EnableDgsTest; +import name.nkonev.multipart.springboot.graphql.server.SchemaAutoconfiguration; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -32,7 +34,8 @@ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) -@SpringBootTest(classes = {HelloDataFetcher.class, MovieDataFetcher.class, ConcurrentDataFetcher.class, RequestHeadersDataFetcher.class, RatingMutation.class, CurrentTimeDateFetcher.class, DgsExtendedScalarsAutoConfiguration.class, DgsPaginationAutoConfiguration.class, MessageDataLoaderWithDispatchPredicate.class, UploadScalar.class}) +@SpringBootTest(classes = {HelloDataFetcher.class, MovieDataFetcher.class, ConcurrentDataFetcher.class, RequestHeadersDataFetcher.class, RatingMutation.class, CurrentTimeDateFetcher.class, MessageDataLoaderWithDispatchPredicate.class, UploadScalar.class}) @EnableDgsTest +@Import({DgsExtendedScalarsAutoConfiguration.class, DgsPaginationAutoConfiguration.class, SchemaAutoconfiguration.class}) public @interface ExampleSpringBootTest { } diff --git a/graphql-dgs-example-shared/src/test/java/com/netflix/graphql/dgs/example/shared/datafetcher/SubscriptionDataFetcherTest.java b/graphql-dgs-example-shared/src/test/java/com/netflix/graphql/dgs/example/shared/datafetcher/SubscriptionDataFetcherTest.java index 13a972066..3f40fef43 100644 --- a/graphql-dgs-example-shared/src/test/java/com/netflix/graphql/dgs/example/shared/datafetcher/SubscriptionDataFetcherTest.java +++ b/graphql-dgs-example-shared/src/test/java/com/netflix/graphql/dgs/example/shared/datafetcher/SubscriptionDataFetcherTest.java @@ -24,32 +24,33 @@ import com.netflix.graphql.dgs.scalars.UploadScalar; import com.netflix.graphql.dgs.test.EnableDgsTest; import graphql.ExecutionResult; +import name.nkonev.multipart.springboot.graphql.server.SchemaAutoconfiguration; import org.junit.jupiter.api.Test; import org.reactivestreams.Publisher; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; import reactor.test.StepVerifier; -import reactor.test.scheduler.VirtualTimeScheduler; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; -@SpringBootTest(classes = {SubscriptionDataFetcher.class, DgsExtendedScalarsAutoConfiguration.class, DgsPaginationAutoConfiguration.class, UploadScalar.class}) +@SpringBootTest(classes = {SubscriptionDataFetcher.class, UploadScalar.class}) @EnableDgsTest +@Import({DgsExtendedScalarsAutoConfiguration.class, SchemaAutoconfiguration.class, DgsPaginationAutoConfiguration.class}) class SubscriptionDataFetcherTest { @Autowired - DgsQueryExecutor queryExecutor; + private DgsQueryExecutor queryExecutor; - ObjectMapper objectMapper = new ObjectMapper(); + private final ObjectMapper objectMapper = new ObjectMapper(); @Test void stocks() { ExecutionResult executionResult = queryExecutor.execute("subscription Stocks { stocks { name, price } }"); Publisher publisher = executionResult.getData(); - VirtualTimeScheduler virtualTimeScheduler = VirtualTimeScheduler.create(); StepVerifier.withVirtualTime(() -> publisher, 3) .expectSubscription() .thenRequest(3) diff --git a/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/DgsTestSliceWithMockMvcAndHttpGraphQlTesterTest.java b/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/DgsTestSliceWithMockMvcAndHttpGraphQlTesterTest.java index ff6b2515e..dd14e5863 100644 --- a/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/DgsTestSliceWithMockMvcAndHttpGraphQlTesterTest.java +++ b/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/DgsTestSliceWithMockMvcAndHttpGraphQlTesterTest.java @@ -16,10 +16,6 @@ package com.netflix.graphql.dgs.example.datafetcher; -import com.netflix.graphql.dgs.autoconfig.DgsExtendedScalarsAutoConfiguration; -import com.netflix.graphql.dgs.example.shared.dataLoader.MessageDataLoader; -import com.netflix.graphql.dgs.pagination.DgsPaginationAutoConfiguration; -import com.netflix.graphql.dgs.scalars.UploadScalar; import com.netflix.graphql.dgs.test.EnableDgsMockMvcTest; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/GreetingTest.java b/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/GreetingTest.java index 738941514..ccecf7d98 100644 --- a/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/GreetingTest.java +++ b/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/GreetingTest.java @@ -26,9 +26,11 @@ import com.netflix.graphql.dgs.test.EnableDgsTest; import graphql.ExecutionResult; import jakarta.servlet.http.Cookie; +import name.nkonev.multipart.springboot.graphql.server.SchemaAutoconfiguration; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; import org.springframework.http.HttpHeaders; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.web.context.request.ServletWebRequest; diff --git a/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/TestAppTestSlice.java b/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/TestAppTestSlice.java index a4a30a162..77f5a85f2 100644 --- a/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/TestAppTestSlice.java +++ b/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/TestAppTestSlice.java @@ -25,6 +25,7 @@ import com.netflix.graphql.dgs.example.shared.instrumentation.ExampleInstrumentationDependingOnContextContributor; import com.netflix.graphql.dgs.pagination.DgsPaginationAutoConfiguration; import com.netflix.graphql.dgs.scalars.UploadScalar; +import name.nkonev.multipart.springboot.graphql.server.SchemaAutoconfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.context.annotation.Import; @@ -42,6 +43,6 @@ ExampleInstrumentationDependingOnContextContributor.class, MyContextBuilder.class }) -@ImportAutoConfiguration({DgsPaginationAutoConfiguration.class, DgsExtendedScalarsAutoConfiguration.class}) +@ImportAutoConfiguration({DgsPaginationAutoConfiguration.class, DgsExtendedScalarsAutoConfiguration.class, SchemaAutoconfiguration.class}) public @interface TestAppTestSlice { } diff --git a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/DgsGraphQLSourceBuilder.kt b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/DgsGraphQLSourceBuilder.kt index 2298feea3..09008f635 100644 --- a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/DgsGraphQLSourceBuilder.kt +++ b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/DgsGraphQLSourceBuilder.kt @@ -47,7 +47,7 @@ class DgsGraphQLSourceBuilder( private val typeDefinitionConfigurers = mutableListOf() private val runtimeWiringConfigurers = mutableListOf() - private val schemaResources: Set = LinkedHashSet() + private val schemaResources = mutableSetOf() @Nullable private var typeResolver: TypeResolver? = null @@ -64,18 +64,18 @@ class DgsGraphQLSourceBuilder( return schema.graphQLSchema } - override fun schemaResources(vararg resources: Resource?): SchemaResourceBuilder { - schemaResources.plus(listOf(*resources)) + override fun schemaResources(vararg resources: Resource): SchemaResourceBuilder { + schemaResources += resources return this } override fun configureTypeDefinitions(configurer: TypeDefinitionConfigurer): SchemaResourceBuilder { - this.typeDefinitionConfigurers.add(configurer) + this.typeDefinitionConfigurers += configurer return this } override fun configureRuntimeWiring(configurer: RuntimeWiringConfigurer): SchemaResourceBuilder { - this.runtimeWiringConfigurers.add(configurer) + this.runtimeWiringConfigurers += configurer return this } @@ -112,14 +112,14 @@ class DgsGraphQLSourceBuilder( override fun getReturnType(): ResolvableType = ResolvableType.forMethodReturnType(dataFetcher.method) - override fun getArguments(): Map { - return dataFetcher.method.parameters + override fun getArguments(): Map = + dataFetcher.method.parameters + .asSequence() .filter { it.isAnnotationPresent(InputArgument::class.java) } .associate { val name = it.getAnnotation(InputArgument::class.java).name.ifEmpty { it.name } - return@associate name to ResolvableType.forClass(it.type) + name to ResolvableType.forClass(it.type) } - } } private fun wrapDataFetchers(dataFetchers: List): Map>> {