Apply checkstyle changes to spring-graphql-test

See gh-943
This commit is contained in:
Brian Clozel
2024-04-04 22:06:11 +02:00
parent 4f1f0a2b20
commit 2a54ef486d
21 changed files with 95 additions and 74 deletions

View File

@@ -41,7 +41,6 @@ import org.springframework.util.IdGenerator;
* to a server-side GraphQL handler or service.
*
* @author Rossen Stoyanchev
* @since 1.0.0
*/
abstract class AbstractDirectGraphQlTransport implements GraphQlTransport {
@@ -56,7 +55,7 @@ abstract class AbstractDirectGraphQlTransport implements GraphQlTransport {
@SuppressWarnings({"ConstantConditions", "unchecked"})
@Override
public Flux<GraphQlResponse> executeSubscription(GraphQlRequest request) {
return executeInternal(toExecutionRequest(request)).flatMapMany(response -> {
return executeInternal(toExecutionRequest(request)).flatMapMany((response) -> {
try {
Object data = response.getData();
AssertionErrors.assertTrue("Not a Publisher: " + data, data instanceof Publisher);
@@ -64,7 +63,7 @@ abstract class AbstractDirectGraphQlTransport implements GraphQlTransport {
List<ResponseError> errors = response.getErrors();
AssertionErrors.assertTrue("Subscription errors: " + errors, CollectionUtils.isEmpty(errors));
return Flux.from((Publisher<ExecutionResult>) data).map(executionResult ->
return Flux.from((Publisher<ExecutionResult>) data).map((executionResult) ->
new DefaultExecutionGraphQlResponse(response.getExecutionInput(), executionResult));
}
catch (AssertionError ex) {

View File

@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.graphql.test.tester;
import java.time.Duration;
@@ -35,7 +36,6 @@ import org.springframework.graphql.ResponseError;
import org.springframework.graphql.client.AbstractGraphQlClientBuilder;
import org.springframework.graphql.client.GraphQlClient;
import org.springframework.graphql.client.GraphQlTransport;
import org.springframework.graphql.support.CachingDocumentSource;
import org.springframework.graphql.support.DocumentSource;
import org.springframework.graphql.support.ResourceDocumentSource;
import org.springframework.lang.Nullable;
@@ -51,6 +51,7 @@ import org.springframework.util.ClassUtils;
* agnostic {@code GraphQlTester}. A transport specific extension can then wrap
* this default tester by extending {@link AbstractDelegatingGraphQlTester}.
*
* @param <B> the type of builder
* @author Rossen Stoyanchev
* @since 1.0.0
* @see AbstractDelegatingGraphQlTester
@@ -86,7 +87,7 @@ public abstract class AbstractGraphQlTesterBuilder<B extends AbstractGraphQlTest
@Override
public B errorFilter(Predicate<ResponseError> predicate) {
this.errorFilter = (this.errorFilter != null ? errorFilter.and(predicate) : predicate);
this.errorFilter = (this.errorFilter != null) ? this.errorFilter.and(predicate) : predicate;
return self();
}
@@ -115,6 +116,7 @@ public abstract class AbstractGraphQlTesterBuilder<B extends AbstractGraphQlTest
/**
* Allow transport-specific subclass builders to register a JSON Path
* {@link MappingProvider} that matches the JSON encoding/decoding they use.
* @param configurer a function applied to the JSON Path configuration
*/
protected void configureJsonPathConfig(Function<Configuration, Configuration> configurer) {
this.jsonPathConfig = configurer.apply(this.jsonPathConfig);
@@ -123,6 +125,7 @@ public abstract class AbstractGraphQlTesterBuilder<B extends AbstractGraphQlTest
/**
* Build the default transport-agnostic client that subclasses can then wrap
* with {@link AbstractDelegatingGraphQlTester}.
* @param transport the graphql transport to use
*/
protected GraphQlTester buildGraphQlTester(GraphQlTransport transport) {
@@ -139,12 +142,12 @@ public abstract class AbstractGraphQlTesterBuilder<B extends AbstractGraphQlTest
* initialize new builder instances with, based on "this" builder.
*/
protected Consumer<AbstractGraphQlTesterBuilder<?>> getBuilderInitializer() {
return builder -> {
return (builder) -> {
if (this.errorFilter != null) {
builder.errorFilter(this.errorFilter);
}
builder.documentSource(this.documentSource);
builder.configureJsonPathConfig(config -> this.jsonPathConfig);
builder.configureJsonPathConfig((config) -> this.jsonPathConfig);
builder.responseTimeout(this.responseTimeout);
};
}
@@ -153,6 +156,7 @@ public abstract class AbstractGraphQlTesterBuilder<B extends AbstractGraphQlTest
* For cases where the Tester needs the {@link GraphQlTransport}, we can't use
* transports directly since they are package private, but we can adapt the corresponding
* {@link GraphQlClient} and adapt it to {@code GraphQlTransport}.
* @param client the graphql client to use for extracting the transport
*/
protected static GraphQlTransport asTransport(GraphQlClient client) {
return new GraphQlTransport() {
@@ -180,7 +184,7 @@ public abstract class AbstractGraphQlTesterBuilder<B extends AbstractGraphQlTest
}
private static class Jackson2Configurer {
private static final class Jackson2Configurer {
private static final Class<?> defaultJsonProviderType;

View File

@@ -37,7 +37,6 @@ import org.springframework.util.Assert;
* wraps an {@code ExecutionGraphQlService}.
*
* @author Rossen Stoyanchev
* @since 1.0.0
*/
final class DefaultExecutionGraphQlServiceTesterBuilder
extends AbstractGraphQlTesterBuilder<DefaultExecutionGraphQlServiceTesterBuilder>
@@ -95,7 +94,7 @@ final class DefaultExecutionGraphQlServiceTesterBuilder
private void registerJsonPathMappingProvider() {
if (this.encoder != null && this.decoder != null) {
configureJsonPathConfig(config -> {
configureJsonPathConfig((config) -> {
EncoderDecoderMappingProvider provider = new EncoderDecoderMappingProvider(
Collections.singletonList(this.encoder), Collections.singletonList(this.decoder));
return config.mappingProvider(provider);
@@ -111,7 +110,7 @@ final class DefaultExecutionGraphQlServiceTesterBuilder
/**
* Default {@link ExecutionGraphQlServiceTester} implementation.
*/
private static class DefaultExecutionGraphQlServiceTester
private static final class DefaultExecutionGraphQlServiceTester
extends AbstractDelegatingGraphQlTester implements ExecutionGraphQlServiceTester {
private final GraphQlServiceGraphQlTransport transport;

View File

@@ -153,7 +153,7 @@ final class DefaultGraphQlTester implements GraphQlTester {
@SuppressWarnings("ConstantConditions")
@Override
public Response execute() {
return transport.execute(request()).map(response -> mapResponse(response, request())).block(responseTimeout);
return DefaultGraphQlTester.this.transport.execute(request()).map((response) -> mapResponse(response, request())).block(DefaultGraphQlTester.this.responseTimeout);
}
@Override
@@ -163,7 +163,7 @@ final class DefaultGraphQlTester implements GraphQlTester {
@Override
public Subscription executeSubscription() {
return () -> transport.executeSubscription(request()).map(result -> mapResponse(result, request()));
return () -> DefaultGraphQlTester.this.transport.executeSubscription(request()).map((result) -> mapResponse(result, request()));
}
private GraphQlRequest request() {
@@ -171,7 +171,7 @@ final class DefaultGraphQlTester implements GraphQlTester {
}
private DefaultResponse mapResponse(GraphQlResponse response, GraphQlRequest request) {
return new DefaultResponse(response, errorFilter, assertDecorator(request), jsonPathConfig);
return new DefaultResponse(response, DefaultGraphQlTester.this.errorFilter, assertDecorator(request), DefaultGraphQlTester.this.jsonPathConfig);
}
private Consumer<Runnable> assertDecorator(GraphQlRequest request) {
@@ -191,7 +191,7 @@ final class DefaultGraphQlTester implements GraphQlTester {
/**
* Container for GraphQL response data and errors along with convenience methods.
*/
private final static class ResponseDelegate {
private static final class ResponseDelegate {
private final DocumentContext jsonDoc;
@@ -258,7 +258,7 @@ final class DefaultGraphQlTester implements GraphQlTester {
}
void consumeErrors(Consumer<List<ResponseError>> consumer) {
filterErrors(error -> true);
filterErrors((error) -> true);
consumer.accept(this.errors);
}
@@ -392,7 +392,7 @@ final class DefaultGraphQlTester implements GraphQlTester {
this.delegate.doAssert(() -> {
Object value = this.pathHelper.evaluateJsonPath(this.delegate.jsonContent());
AssertionErrors.assertNull(
"Expected null value at JSON path \"" + path + "\" but found " + value, value);
"Expected null value at JSON path \"" + this.path + "\" but found " + value, value);
});
return this;
}
@@ -464,7 +464,7 @@ final class DefaultGraphQlTester implements GraphQlTester {
}
private static String joinPaths(@Nullable String basePath, String path) {
return (basePath != null ? basePath + "." + path : path);
return (basePath != null) ? basePath + "." + path : path;
}
@@ -476,7 +476,7 @@ final class DefaultGraphQlTester implements GraphQlTester {
private final D entity;
protected DefaultEntity(TypeRefAdapter<D> typeAdapter) {
this.entity = delegate.read(jsonPath, typeAdapter);
this.entity = DefaultPath.this.delegate.read(DefaultPath.this.jsonPath, typeAdapter);
}
protected D getEntity() {
@@ -484,57 +484,57 @@ final class DefaultGraphQlTester implements GraphQlTester {
}
protected void doAssert(Runnable task) {
delegate.doAssert(task);
DefaultPath.this.delegate.doAssert(task);
}
protected String getPath() {
return path;
return DefaultPath.this.path;
}
@Override
public Path path(String path) {
return forPath(basePath, path, delegate);
return forPath(DefaultPath.this.basePath, path, DefaultPath.this.delegate);
}
@Override
public Path path(String path, Consumer<Path> pathConsumer) {
return forNestedPath(basePath, path, delegate, pathConsumer);
return forNestedPath(DefaultPath.this.basePath, path, DefaultPath.this.delegate, pathConsumer);
}
@Override
public <T extends S> T isEqualTo(Object expected) {
delegate.doAssert(() -> AssertionErrors.assertEquals(path, expected, this.entity));
DefaultPath.this.delegate.doAssert(() -> AssertionErrors.assertEquals(DefaultPath.this.path, expected, this.entity));
return self();
}
@Override
public <T extends S> T isNotEqualTo(Object other) {
delegate.doAssert(() -> AssertionErrors.assertNotEquals(path, other, this.entity));
DefaultPath.this.delegate.doAssert(() -> AssertionErrors.assertNotEquals(DefaultPath.this.path, other, this.entity));
return self();
}
@Override
public <T extends S> T isSameAs(Object expected) {
delegate.doAssert(() -> AssertionErrors.assertTrue(path, expected == this.entity));
DefaultPath.this.delegate.doAssert(() -> AssertionErrors.assertTrue(DefaultPath.this.path, expected == this.entity));
return self();
}
@Override
public <T extends S> T isNotSameAs(Object other) {
delegate.doAssert(() -> AssertionErrors.assertTrue(path, other != this.entity));
DefaultPath.this.delegate.doAssert(() -> AssertionErrors.assertTrue(DefaultPath.this.path, other != this.entity));
return self();
}
@Override
public <T extends S> T matches(Predicate<D> predicate) {
delegate
.doAssert(() -> AssertionErrors.assertTrue(path, predicate.test(this.entity)));
DefaultPath.this.delegate
.doAssert(() -> AssertionErrors.assertTrue(DefaultPath.this.path, predicate.test(this.entity)));
return self();
}
@Override
public <T extends S> T satisfies(Consumer<D> consumer) {
delegate.doAssert(() -> consumer.accept(this.entity));
DefaultPath.this.delegate.doAssert(() -> consumer.accept(this.entity));
return self();
}
@@ -557,7 +557,7 @@ final class DefaultGraphQlTester implements GraphQlTester {
private final class DefaultEntityList<E>
extends DefaultEntity<List<E>, EntityList<E>> implements EntityList<E> {
public DefaultEntityList(TypeRefAdapter<List<E>> typeAdapter) {
DefaultEntityList(TypeRefAdapter<List<E>> typeAdapter) {
super(typeAdapter);
}

View File

@@ -33,7 +33,6 @@ import org.springframework.web.util.UriComponentsBuilder;
* {@link WebTestClient.Builder}.
*
* @author Rossen Stoyanchev
* @since 1.0.0
*/
final class DefaultHttpGraphQlTesterBuilder
extends AbstractGraphQlTesterBuilder<DefaultHttpGraphQlTesterBuilder>
@@ -93,8 +92,8 @@ final class DefaultHttpGraphQlTesterBuilder
}
private void registerJsonPathMappingProvider() {
this.webTestClientBuilder.codecs(codecConfigurer ->
configureJsonPathConfig(config -> {
this.webTestClientBuilder.codecs((codecConfigurer) ->
configureJsonPathConfig((config) -> {
EncoderDecoderMappingProvider provider = new EncoderDecoderMappingProvider(codecConfigurer);
return config.mappingProvider(provider);
}));
@@ -105,7 +104,7 @@ final class DefaultHttpGraphQlTesterBuilder
* Default {@link HttpGraphQlTester} that builds and uses a {@link WebTestClient}
* for request execution.
*/
private static class DefaultHttpGraphQlTester extends AbstractDelegatingGraphQlTester implements HttpGraphQlTester {
private static final class DefaultHttpGraphQlTester extends AbstractDelegatingGraphQlTester implements HttpGraphQlTester {
private final WebTestClient webTestClient;

View File

@@ -113,9 +113,9 @@ public class DefaultRSocketGraphQlTesterBuilder
}
private void registerJsonPathMappingProvider() {
this.rsocketGraphQlClientBuilder.rsocketRequester(builder ->
builder.rsocketStrategies(strategiesBuilder ->
configureJsonPathConfig(config -> {
this.rsocketGraphQlClientBuilder.rsocketRequester((builder) ->
builder.rsocketStrategies((strategiesBuilder) ->
configureJsonPathConfig((config) -> {
RSocketStrategies strategies = strategiesBuilder.build();
List<Encoder<?>> encoders = strategies.encoders();
List<Decoder<?>> decoders = strategies.decoders();

View File

@@ -27,7 +27,6 @@ import org.springframework.util.Assert;
* Default {@link GraphQlTester.Builder} with a given, externally prepared transport.
*
* @author Rossen Stoyanchev
* @since 1.0.0
*/
final class DefaultTransportGraphQlTesterBuilder
extends AbstractGraphQlTesterBuilder<DefaultTransportGraphQlTesterBuilder> {
@@ -50,7 +49,7 @@ final class DefaultTransportGraphQlTesterBuilder
/**
* {@link GraphQlTester} with a given transport.
*/
private static class DefaultTransportGraphQlTester extends AbstractDelegatingGraphQlTester {
private static final class DefaultTransportGraphQlTester extends AbstractDelegatingGraphQlTester {
private final GraphQlTransport transport;

View File

@@ -34,7 +34,6 @@ import org.springframework.web.util.DefaultUriBuilderFactory;
* {@link WebGraphQlHandler} for request execution.
*
* @author Rossen Stoyanchev
* @since 1.0.0
*/
final class DefaultWebGraphQlTesterBuilder
extends AbstractGraphQlTesterBuilder<DefaultWebGraphQlTesterBuilder>
@@ -104,7 +103,7 @@ final class DefaultWebGraphQlTesterBuilder
}
private void registerJsonPathMappingProvider() {
configureJsonPathConfig(jsonPathConfig -> {
configureJsonPathConfig((jsonPathConfig) -> {
EncoderDecoderMappingProvider provider = new EncoderDecoderMappingProvider(this.codecConfigurer);
return jsonPathConfig.mappingProvider(provider);
});
@@ -114,7 +113,7 @@ final class DefaultWebGraphQlTesterBuilder
/**
* Default {@link WebGraphQlTester} implementation.
*/
private static class DefaultWebGraphQlTester extends AbstractDelegatingGraphQlTester implements WebGraphQlTester {
private static final class DefaultWebGraphQlTester extends AbstractDelegatingGraphQlTester implements WebGraphQlTester {
private final WebGraphQlHandlerGraphQlTransport transport;

View File

@@ -34,7 +34,6 @@ import org.springframework.web.reactive.socket.client.WebSocketClient;
* {@link WebSocketGraphQlClient.Builder}.
*
* @author Rossen Stoyanchev
* @since 1.0.0
*/
final class DefaultWebSocketGraphQlTesterBuilder
extends AbstractGraphQlTesterBuilder<DefaultWebSocketGraphQlTesterBuilder>
@@ -108,8 +107,8 @@ final class DefaultWebSocketGraphQlTesterBuilder
}
private void registerJsonPathMappingProvider() {
this.graphQlClientBuilder.codecConfigurer(codecConfigurer -> {
configureJsonPathConfig(jsonPathConfig -> {
this.graphQlClientBuilder.codecConfigurer((codecConfigurer) -> {
configureJsonPathConfig((jsonPathConfig) -> {
EncoderDecoderMappingProvider provider = new EncoderDecoderMappingProvider(codecConfigurer);
return jsonPathConfig.mappingProvider(provider);
});
@@ -120,7 +119,7 @@ final class DefaultWebSocketGraphQlTesterBuilder
/**
* Default {@link WebSocketGraphQlTester} implementation.
*/
private static class DefaultWebSocketGraphQlTester extends AbstractDelegatingGraphQlTester implements WebSocketGraphQlTester {
private static final class DefaultWebSocketGraphQlTester extends AbstractDelegatingGraphQlTester implements WebSocketGraphQlTester {
private final WebSocketGraphQlClient client;

View File

@@ -45,7 +45,6 @@ import org.springframework.util.MimeTypeUtils;
* JSON Path {@link MappingProvider} that uses {@link Encoder} and {@link Decoder}.
*
* @author Rossen Stoyanchev
* @since 1.0.0
*/
final class EncoderDecoderMappingProvider implements MappingProvider {
@@ -60,29 +59,29 @@ final class EncoderDecoderMappingProvider implements MappingProvider {
/**
* Create an instance with a {@link CodecConfigurer}.
*/
public EncoderDecoderMappingProvider(CodecConfigurer configurer) {
EncoderDecoderMappingProvider(CodecConfigurer configurer) {
this.encoder = findJsonEncoder(configurer);
this.decoder = findJsonDecoder(configurer);
}
/**
* Create an instance with a List of encoders and decoders>
* Create an instance with a List of encoders and decoders.
*/
public EncoderDecoderMappingProvider(List<Encoder<?>> encoders, List<Decoder<?>> decoders) {
EncoderDecoderMappingProvider(List<Encoder<?>> encoders, List<Decoder<?>> decoders) {
this.encoder = findJsonEncoder(encoders);
this.decoder = findJsonDecoder(decoders);
}
private static Encoder<?> findJsonEncoder(CodecConfigurer configurer) {
return findJsonEncoder(configurer.getWriters().stream()
.filter(writer -> writer instanceof EncoderHttpMessageWriter)
.map(writer -> ((EncoderHttpMessageWriter<?>) writer).getEncoder()));
.filter((writer) -> writer instanceof EncoderHttpMessageWriter)
.map((writer) -> ((EncoderHttpMessageWriter<?>) writer).getEncoder()));
}
private static Decoder<?> findJsonDecoder(CodecConfigurer configurer) {
return findJsonDecoder(configurer.getReaders().stream()
.filter(reader -> reader instanceof DecoderHttpMessageReader)
.map(reader -> ((DecoderHttpMessageReader<?>) reader).getDecoder()));
.filter((reader) -> reader instanceof DecoderHttpMessageReader)
.map((reader) -> ((DecoderHttpMessageReader<?>) reader).getDecoder()));
}
private static Encoder<?> findJsonEncoder(List<Encoder<?>> encoders) {
@@ -95,14 +94,14 @@ final class EncoderDecoderMappingProvider implements MappingProvider {
private static Encoder<?> findJsonEncoder(Stream<Encoder<?>> stream) {
return stream
.filter(encoder -> encoder.canEncode(MAP_TYPE, MediaType.APPLICATION_JSON))
.filter((encoder) -> encoder.canEncode(MAP_TYPE, MediaType.APPLICATION_JSON))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("No JSON Encoder"));
}
private static Decoder<?> findJsonDecoder(Stream<Decoder<?>> decoderStream) {
return decoderStream
.filter(decoder -> decoder.canDecode(MAP_TYPE, MediaType.APPLICATION_JSON))
.filter((decoder) -> decoder.canDecode(MAP_TYPE, MediaType.APPLICATION_JSON))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("No JSON Decoder"));
}

View File

@@ -40,6 +40,7 @@ public interface ExecutionGraphQlServiceTester extends GraphQlTester {
/**
* Create a {@link ExecutionGraphQlServiceTester} instance.
* @param service the GraphQL service to use
*/
static ExecutionGraphQlServiceTester create(ExecutionGraphQlService service) {
return builder(service).build();
@@ -47,6 +48,7 @@ public interface ExecutionGraphQlServiceTester extends GraphQlTester {
/**
* Return a builder for {@link ExecutionGraphQlServiceTester}.
* @param service the GraphQL service to use
*/
static ExecutionGraphQlServiceTester.Builder<?> builder(ExecutionGraphQlService service) {
return new DefaultExecutionGraphQlServiceTesterBuilder(service);
@@ -55,12 +57,14 @@ public interface ExecutionGraphQlServiceTester extends GraphQlTester {
/**
* Default {@link ExecutionGraphQlServiceTester.Builder} implementation.
* @param <B> the type of builder
*/
interface Builder<B extends Builder<B>> extends GraphQlTester.Builder<B> {
/**
* Provide a {@code BiFunction} to help initialize the
* {@link ExecutionInput} with.
* @param configurer the function that initializes the execution input
* @since 1.1.2
* @see org.springframework.graphql.ExecutionGraphQlRequest#configureExecutionInput(BiFunction)
*/
@@ -69,12 +73,14 @@ public interface ExecutionGraphQlServiceTester extends GraphQlTester {
/**
* Configure the JSON encoder to use for mapping response data to
* higher level objects.
* @param encoder the JSON encoder to use
*/
B encoder(Encoder<?> encoder);
/**
* Configure the JSON decoder to use for mapping response data to
* higher level objects.
* @param decoder the JSON decoder to use
*/
B decoder(Decoder<?> decoder);

View File

@@ -34,7 +34,6 @@ import org.springframework.util.Assert;
* {@code GraphQlTransport} that calls directly a {@link ExecutionGraphQlService}.
*
* @author Rossen Stoyanchev
* @since 1.0.0
*/
final class GraphQlServiceGraphQlTransport extends AbstractDirectGraphQlTransport {
@@ -53,11 +52,11 @@ final class GraphQlServiceGraphQlTransport extends AbstractDirectGraphQlTranspor
}
public ExecutionGraphQlService getGraphQlService() {
ExecutionGraphQlService getGraphQlService() {
return this.graphQlService;
}
public List<BiFunction<ExecutionInput, ExecutionInput.Builder, ExecutionInput>> getExecutionInputConfigurers() {
List<BiFunction<ExecutionInput, ExecutionInput.Builder, ExecutionInput>> getExecutionInputConfigurers() {
return this.executionInputConfigurers;
}

View File

@@ -66,6 +66,7 @@ public interface GraphQlTester {
* Variant of {@link #document(String)} that uses the given key to resolve
* the GraphQL document from a file with the help of the configured
* {@link Builder#documentSource(DocumentSource) DocumentSource}.
* @param documentName the name of the document to send
* @return spec for response assertions
* @throws IllegalArgumentException if the documentName cannot be resolved
* @throws AssertionError if the response status is not 200 (OK)
@@ -94,6 +95,7 @@ public interface GraphQlTester {
/**
* A builder to create a {@link GraphQlTester} instance.
* @param <B> the type of builder
*/
interface Builder<B extends Builder<B>> {
@@ -111,6 +113,7 @@ public interface GraphQlTester {
* <p>By default, this is set to {@link ResourceDocumentSource} with
* classpath location {@code "graphql-test/"} and
* {@link ResourceDocumentSource#FILE_EXTENSIONS} as extensions.
* @param contentLoader the document content loader
*/
B documentSource(DocumentSource contentLoader);
@@ -130,6 +133,7 @@ public interface GraphQlTester {
/**
* Declare options to gather input for a GraphQL request and execute it.
* @param <T> the type of request
*/
interface Request<T extends Request<T>> {
@@ -311,7 +315,7 @@ public interface GraphQlTester {
}
/**
* Contains a decoded entity and provides options to assert it
* Contains a decoded entity and provides options to assert it.
*
* @param <D> the entity type
* @param <S> the {@code Entity} spec type
@@ -320,6 +324,7 @@ public interface GraphQlTester {
/**
* Verify the decoded entity is equal to the given value.
* @param <T> the {@code Entity} spec type
* @param expected the expected value
* @return the {@code Entity} spec for further assertions
*/
@@ -327,6 +332,7 @@ public interface GraphQlTester {
/**
* Verify the decoded entity is not equal to the given value.
* @param <T> the {@code Entity} spec type
* @param other the value to check against
* @return the {@code Entity} spec for further assertions
*/
@@ -334,6 +340,7 @@ public interface GraphQlTester {
/**
* Verify the decoded entity is the same instance as the given value.
* @param <T> the {@code Entity} spec type
* @param expected the expected value
* @return the {@code Entity} spec for further assertions
*/
@@ -341,6 +348,7 @@ public interface GraphQlTester {
/**
* Verify the decoded entity is not the same instance as the given value.
* @param <T> the {@code Entity} spec type
* @param other the value to check against
* @return the {@code Entity} spec for further assertions
*/
@@ -348,6 +356,7 @@ public interface GraphQlTester {
/**
* Verify the decoded entity matches the given predicate.
* @param <T> the {@code Entity} spec type
* @param predicate the predicate to apply
* @return the {@code Entity} spec for further assertions
*/
@@ -355,6 +364,7 @@ public interface GraphQlTester {
/**
* Verify the entity with the given {@link Consumer}.
* @param <T> the {@code Entity} spec type
* @param consumer the consumer to apply
* @return the {@code Entity} spec for further assertions
*/

View File

@@ -37,6 +37,7 @@ public interface HttpGraphQlTester extends WebGraphQlTester {
/**
* Create an {@link HttpGraphQlTester} that uses the given {@link WebTestClient}.
* @param webTestClient the {@code WebTestClient} to use
*/
static HttpGraphQlTester create(WebTestClient webTestClient) {
return builder(webTestClient.mutate()).build();
@@ -45,6 +46,7 @@ public interface HttpGraphQlTester extends WebGraphQlTester {
/**
* Return a builder to initialize an {@link HttpGraphQlTester} by creating
* the underlying {@link WebTestClient} through the given builder.
* @param webTestClientBuilder the {@code WebTestClient} builder to use
*/
static HttpGraphQlTester.Builder<?> builder(WebTestClient.Builder webTestClientBuilder) {
return new DefaultHttpGraphQlTesterBuilder(webTestClientBuilder);
@@ -53,6 +55,7 @@ public interface HttpGraphQlTester extends WebGraphQlTester {
/**
* Builder for the GraphQL over HTTP tester.
* @param <B> the type of builder
*/
interface Builder<B extends Builder<B>> extends WebGraphQlTester.Builder<B> {
@@ -60,6 +63,7 @@ public interface HttpGraphQlTester extends WebGraphQlTester {
* Customize the {@code WebTestClient} to use.
* <p>Note that some properties of {@code WebTestClient.Builder} like the
* base URL, headers, and codecs can be customized through this builder.
* @param webClient a consumer that customizes the {@code WebClient} builder
* @see #url(String)
* @see #header(String, String...)
* @see #codecConfigurer(Consumer)

View File

@@ -64,6 +64,7 @@ public interface RSocketGraphQlTester extends GraphQlTester {
/**
* Start with a given {@link #builder()}.
* @param requesterBuilder the builder to use as a baseline
*/
static RSocketGraphQlTester.Builder<?> builder(RSocketRequester.Builder requesterBuilder) {
return new DefaultRSocketGraphQlTesterBuilder(requesterBuilder);
@@ -72,6 +73,7 @@ public interface RSocketGraphQlTester extends GraphQlTester {
/**
* Builder for a GraphQL over RSocket tester.
* @param <B> the type of builder
*/
interface Builder<B extends Builder<B>> extends GraphQlTester.Builder<B> {
@@ -119,11 +121,12 @@ public interface RSocketGraphQlTester extends GraphQlTester {
* <p>Note that some properties of {@code RSocketRequester.Builder} like the
* data MimeType, and the underlying RSocket transport can be customized
* through this builder.
* @param requester a consumer that customizes the {@code RSocketRequester} through its builder
* @return the same builder instance
* @see #dataMimeType(MimeType)
* @see #tcp(String, int)
* @see #webSocket(URI)
* @see #clientTransport(ClientTransport)
* @return the same builder instance
*/
B rsocketRequester(Consumer<RSocketRequester.Builder> requester);

View File

@@ -35,7 +35,6 @@ import org.springframework.lang.Nullable;
* {@code GraphQlTransport} that calls directly a {@link WebGraphQlHandler}.
*
* @author Rossen Stoyanchev
* @since 1.0.0
*/
final class WebGraphQlHandlerGraphQlTransport extends AbstractDirectGraphQlTransport {
@@ -51,26 +50,26 @@ final class WebGraphQlHandlerGraphQlTransport extends AbstractDirectGraphQlTrans
WebGraphQlHandlerGraphQlTransport(
@Nullable URI url, HttpHeaders headers, WebGraphQlHandler handler, CodecConfigurer configurer) {
this.url = (url != null ? url : URI.create(""));
this.url = (url != null) ? url : URI.create("");
this.headers.addAll(headers);
this.graphQlHandler = handler;
this.codecConfigurer = configurer;
}
public URI getUrl() {
URI getUrl() {
return this.url;
}
public HttpHeaders getHeaders() {
HttpHeaders getHeaders() {
return this.headers;
}
public WebGraphQlHandler getGraphQlHandler() {
WebGraphQlHandler getGraphQlHandler() {
return this.graphQlHandler;
}
public CodecConfigurer getCodecConfigurer() {
CodecConfigurer getCodecConfigurer() {
return this.codecConfigurer;
}

View File

@@ -43,6 +43,7 @@ public interface WebGraphQlTester extends GraphQlTester {
/**
* Create a {@link WebGraphQlTester} instance.
* @param graphQlHandler the web GraphQL handler to be tested
*/
static WebGraphQlTester create(WebGraphQlHandler graphQlHandler) {
return builder(graphQlHandler).build();
@@ -59,6 +60,7 @@ public interface WebGraphQlTester extends GraphQlTester {
/**
* Common builder for Web {@code GraphQlTester} extensions.
* @param <B> the type of builder
*/
interface Builder<B extends Builder<B>> extends GraphQlTester.Builder<B> {
@@ -91,6 +93,7 @@ public interface WebGraphQlTester extends GraphQlTester {
/**
* Configure the underlying {@code CodecConfigurer} to use for all JSON
* encoding and decoding needs.
* @param codecsConsumer a consumer that customizes the configured codecs
*/
B codecConfigurer(Consumer<CodecConfigurer> codecsConsumer);

View File

@@ -77,6 +77,7 @@ public interface WebSocketGraphQlTester extends WebGraphQlTester {
/**
* Builder for a GraphQL over WebSocket tester.
* @param <B> the type of builder
*/
interface Builder<B extends Builder<B>> extends WebGraphQlTester.Builder<B> {

View File

@@ -34,12 +34,11 @@ import org.springframework.util.Assert;
* {@code GraphQlTransport} for GraphQL over HTTP via {@link WebTestClient}.
*
* @author Rossen Stoyanchev
* @since 1.0.0
*/
final class WebTestClientTransport implements GraphQlTransport {
private static final ParameterizedTypeReference<Map<String, Object>> MAP_TYPE =
new ParameterizedTypeReference<Map<String, Object>>() {};
new ParameterizedTypeReference<Map<String, Object>>() { };
private final WebTestClient webTestClient;
@@ -65,7 +64,7 @@ final class WebTestClientTransport implements GraphQlTransport {
.returnResult()
.getResponseBody();
responseMap = (responseMap != null ? responseMap : Collections.emptyMap());
responseMap = (responseMap != null) ? responseMap : Collections.emptyMap();
GraphQlResponse response = GraphQlTransport.createResponse(responseMap);
return Mono.just(response);
}

View File

@@ -139,7 +139,7 @@ public class GraphQlTesterTests extends GraphQlTesterTestSupport {
assertThat(actual.getName()).isEqualTo("Luke Skywalker");
response.path("")
.entity(new ParameterizedTypeReference<Map<String, MovieCharacter>>() {})
.entity(new ParameterizedTypeReference<Map<String, MovieCharacter>>() { })
.isEqualTo(Collections.singletonMap("me", luke));
assertThat(getActualRequestDocument()).contains(document);
@@ -186,7 +186,7 @@ public class GraphQlTesterTests extends GraphQlTesterTestSupport {
"Request: document='{me {name, friends}}'");
response.path("me.friends")
.entityList(new ParameterizedTypeReference<MovieCharacter>() {})
.entityList(new ParameterizedTypeReference<MovieCharacter>() { })
.containsExactly(han, leia);
assertThat(getActualRequestDocument()).contains(document);

View File

@@ -117,7 +117,7 @@ public class RSocketGraphQlTesterBuilderTests {
assertThat(testDecoder.getLastValue()).isEqualTo(character);
}
private static class BuilderSetup {
private final MockExecutionGraphQlService graphQlService = new MockExecutionGraphQlService();