HTTP handlers set Locale in ExecutionInput
See gh-3
This commit is contained in:
@@ -20,6 +20,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
@@ -113,6 +114,12 @@ class DefaultGraphQlTester implements GraphQlTester {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultRequestSpec locale(Locale locale) {
|
||||
setLocale(locale);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResponseSpec execute() {
|
||||
return this.requestStrategy.execute(createRequestInput());
|
||||
|
||||
@@ -17,11 +17,13 @@
|
||||
package org.springframework.graphql.test.tester;
|
||||
|
||||
import java.net.URI;
|
||||
import java.util.Locale;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
import reactor.core.publisher.Flux;
|
||||
|
||||
import org.springframework.graphql.RequestInput;
|
||||
import org.springframework.graphql.web.WebInput;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.lang.Nullable;
|
||||
@@ -122,6 +124,12 @@ class DefaultWebGraphQlTester implements WebGraphQlTester {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WebRequestSpec locale(Locale locale) {
|
||||
setLocale(locale);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WebRequestSpec httpHeader(String headerName, String... headerValues) {
|
||||
for (String headerValue : headerValues) {
|
||||
@@ -152,7 +160,8 @@ class DefaultWebGraphQlTester implements WebGraphQlTester {
|
||||
}
|
||||
|
||||
private WebInput createWebInput() {
|
||||
return new WebInput(DEFAULT_URL, this.headers, createRequestInput().toMap(), null);
|
||||
RequestInput input = createRequestInput();
|
||||
return new WebInput(DEFAULT_URL, this.headers, input.toMap(), input.getLocale(), null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.graphql.test.tester;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
@@ -174,6 +175,13 @@ public interface GraphQlTester {
|
||||
*/
|
||||
T variable(String name, Object value);
|
||||
|
||||
/**
|
||||
* Set the locale to associate with the request.
|
||||
* @param locale the locale to use
|
||||
* @return this request spec
|
||||
*/
|
||||
T locale(Locale locale);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package org.springframework.graphql.test.tester;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.graphql.RequestInput;
|
||||
@@ -38,6 +39,9 @@ class GraphQlTesterRequestSpecSupport {
|
||||
|
||||
private final Map<String, Object> variables = new LinkedHashMap<>();
|
||||
|
||||
@Nullable
|
||||
private Locale locale;
|
||||
|
||||
|
||||
protected GraphQlTesterRequestSpecSupport(String query) {
|
||||
Assert.notNull(query, "`query` is required");
|
||||
@@ -53,12 +57,16 @@ class GraphQlTesterRequestSpecSupport {
|
||||
this.variables.put(name, value);
|
||||
}
|
||||
|
||||
protected void setLocale(Locale locale) {
|
||||
this.locale = locale;
|
||||
}
|
||||
|
||||
protected void verify(GraphQlTester.ResponseSpec responseSpec) {
|
||||
responseSpec.path("$.errors").valueIsEmpty();
|
||||
}
|
||||
|
||||
protected RequestInput createRequestInput() {
|
||||
return new RequestInput(this.query, this.operationName, this.variables);
|
||||
return new RequestInput(this.query, this.operationName, this.variables, this.locale);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@ package org.springframework.graphql.test.tester;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.Duration;
|
||||
import java.util.Collections;
|
||||
import java.util.Locale;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import com.jayway.jsonpath.Configuration;
|
||||
@@ -82,7 +84,13 @@ final class WebTestClientRequestStrategy extends RequestStrategySupport implemen
|
||||
FluxExchangeResult<TestExecutionResult> exchangeResult = this.client.post()
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.accept(MediaType.TEXT_EVENT_STREAM)
|
||||
.headers(headers -> headers.putAll(webInput.getHeaders()))
|
||||
.headers(headers -> {
|
||||
Locale locale = webInput.getLocale();
|
||||
if (locale != null) {
|
||||
headers.setAcceptLanguageAsLocales(Collections.singletonList(locale));
|
||||
}
|
||||
headers.putAll(webInput.getHeaders());
|
||||
})
|
||||
.bodyValue(webInput.toMap())
|
||||
.exchange()
|
||||
.expectStatus()
|
||||
|
||||
@@ -227,7 +227,7 @@ public class WebGraphQlTesterTests {
|
||||
|
||||
String content = request.getBody().readUtf8();
|
||||
Map<String, Object> map = new ObjectMapper().readValue(content, new TypeReference<Map<String, Object>>() {});
|
||||
WebInput webInput = new WebInput(request.getRequestUrl().uri(), headers, map, null);
|
||||
WebInput webInput = new WebInput(request.getRequestUrl().uri(), headers, map, null, null);
|
||||
|
||||
consumer.accept(webInput);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user