Refactoring in DefaultGraphQlTester
Align with similar changes in GraphQlClient.
This commit is contained in:
@@ -113,7 +113,7 @@ public abstract class AbstractGraphQlTesterBuilder<B extends AbstractGraphQlTest
|
||||
}
|
||||
|
||||
return new DefaultGraphQlTester(transport, this.errorFilter,
|
||||
this.jsonPathConfig, this.documentSource, this.responseTimeout, getBuilderInitializer());
|
||||
this.jsonPathConfig, this.documentSource, this.responseTimeout);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -70,28 +70,23 @@ final class DefaultGraphQlTester implements GraphQlTester {
|
||||
|
||||
private final Duration responseTimeout;
|
||||
|
||||
private final Consumer<AbstractGraphQlTesterBuilder<?>> builderInitializer;
|
||||
|
||||
|
||||
/**
|
||||
* Package private constructor for use from {@link AbstractGraphQlTesterBuilder}.
|
||||
*/
|
||||
DefaultGraphQlTester(
|
||||
GraphQlTransport transport, @Nullable Predicate<ResponseError> errorFilter,
|
||||
Configuration jsonPathConfig, DocumentSource documentSource, Duration timeout,
|
||||
Consumer<AbstractGraphQlTesterBuilder<?>> builderInitializer) {
|
||||
Configuration jsonPathConfig, DocumentSource documentSource, Duration timeout) {
|
||||
|
||||
Assert.notNull(transport, "GraphQlTransport is required");
|
||||
Assert.notNull(jsonPathConfig, "JSONPath Configuration is required");
|
||||
Assert.notNull(documentSource, "DocumentSource is required");
|
||||
Assert.notNull(builderInitializer, "`builderInitializer` is required");
|
||||
|
||||
this.transport = transport;
|
||||
this.errorFilter = errorFilter;
|
||||
this.jsonPathConfig = jsonPathConfig;
|
||||
this.documentSource = documentSource;
|
||||
this.responseTimeout = timeout;
|
||||
this.builderInitializer = builderInitializer;
|
||||
}
|
||||
|
||||
|
||||
@@ -107,30 +102,14 @@ final class DefaultGraphQlTester implements GraphQlTester {
|
||||
return document(document);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder mutate() {
|
||||
Builder builder = new Builder(this.transport);
|
||||
this.builderInitializer.accept(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Default {@link GraphQlTester.Builder} with a given transport.
|
||||
* The default tester is unaware of transport details, and cannot implement
|
||||
* mutate directly. It should be wrapped from transport aware extensions via
|
||||
* {@link AbstractDelegatingGraphQlTester} that also implement mutate.
|
||||
*/
|
||||
static final class Builder extends AbstractGraphQlTesterBuilder<Builder> {
|
||||
|
||||
private final GraphQlTransport transport;
|
||||
|
||||
Builder(GraphQlTransport transport) {
|
||||
this.transport = transport;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GraphQlTester build() {
|
||||
return super.buildGraphQlTester(this.transport);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder<?> mutate() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.graphql.test.tester;
|
||||
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.springframework.graphql.client.GraphQlTransport;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
/**
|
||||
* {@link GraphQlTester} with a given, externally prepared transport.
|
||||
*
|
||||
* @author Rossen Stoyanchev
|
||||
* @since 1.0.0
|
||||
*/
|
||||
final class GenericGraphQlTester extends AbstractDelegatingGraphQlTester {
|
||||
|
||||
private final GraphQlTransport transport;
|
||||
|
||||
private final Consumer<AbstractGraphQlTesterBuilder<?>> builderInitializer;
|
||||
|
||||
|
||||
GenericGraphQlTester(
|
||||
GraphQlTester delegate, GraphQlTransport transport,
|
||||
Consumer<AbstractGraphQlTesterBuilder<?>> builderInitializer) {
|
||||
|
||||
super(delegate);
|
||||
Assert.notNull(transport, "GraphQlTransport is required");
|
||||
Assert.notNull(builderInitializer, "'builderInitializer' is required");
|
||||
this.transport = transport;
|
||||
this.builderInitializer = builderInitializer;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Builder mutate() {
|
||||
Builder builder = new Builder(this.transport);
|
||||
this.builderInitializer.accept(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Default {@link GraphQlTester.Builder} with a given transport.
|
||||
*/
|
||||
static final class Builder extends AbstractGraphQlTesterBuilder<Builder> {
|
||||
|
||||
private final GraphQlTransport transport;
|
||||
|
||||
Builder(GraphQlTransport transport) {
|
||||
this.transport = transport;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GraphQlTester build() {
|
||||
GraphQlTester tester = super.buildGraphQlTester(this.transport);
|
||||
return new GenericGraphQlTester(tester, this.transport, getBuilderInitializer());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -88,7 +88,7 @@ public interface GraphQlTester {
|
||||
* @return the builder for further initialization
|
||||
*/
|
||||
static GraphQlTester.Builder<?> builder(GraphQlTransport transport) {
|
||||
return new DefaultGraphQlTester.Builder(transport);
|
||||
return new GenericGraphQlTester.Builder(transport);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -70,9 +70,9 @@ final class DefaultGraphQlClient implements GraphQlClient {
|
||||
}
|
||||
|
||||
/**
|
||||
* The default client is unaware of transport details, and doesn't implement
|
||||
* this method. It should always be wrapped via with a transport specific
|
||||
* {@link AbstractDelegatingGraphQlClient} that implements mutation.
|
||||
* The default client is unaware of transport details, and cannot implement
|
||||
* mutate directly. It should be wrapped from transport aware extensions via
|
||||
* {@link AbstractDelegatingGraphQlClient} that also implement mutate.
|
||||
*/
|
||||
@Override
|
||||
public Builder<?> mutate() {
|
||||
|
||||
@@ -49,7 +49,7 @@ final class GenericGraphQlClient extends AbstractDelegatingGraphQlClient {
|
||||
|
||||
@Override
|
||||
public Builder mutate() {
|
||||
Builder builder = new Builder(transport);
|
||||
Builder builder = new Builder(this.transport);
|
||||
this.builderInitializer.accept(builder);
|
||||
return builder;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user