From 411f2cb58ed5ad347c4046d06190f501bcbdfd87 Mon Sep 17 00:00:00 2001 From: kutlueren Date: Wed, 15 May 2024 16:20:31 +0200 Subject: [PATCH 1/3] implement variable method to take a map as parameter --- .../test/tester/DefaultGraphQlTester.java | 6 +++ .../graphql/test/tester/GraphQlTester.java | 10 ++++ .../test/tester/GraphQlTesterTests.java | 47 +++++++++++++++---- 3 files changed, 55 insertions(+), 8 deletions(-) diff --git a/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/DefaultGraphQlTester.java b/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/DefaultGraphQlTester.java index 98d5bb8d2..c6c37d111 100644 --- a/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/DefaultGraphQlTester.java +++ b/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/DefaultGraphQlTester.java @@ -144,6 +144,12 @@ public DefaultRequest variable(String name, @Nullable Object value) { return this; } + @Override + public DefaultRequest variable(Map values) { + this.variables.putAll(values); + return this; + } + @Override public DefaultRequest extension(String name, @Nullable Object value) { this.extensions.put(name, value); diff --git a/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/GraphQlTester.java b/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/GraphQlTester.java index 4c09da830..4b76d4677 100644 --- a/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/GraphQlTester.java +++ b/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/GraphQlTester.java @@ -18,6 +18,7 @@ import java.time.Duration; import java.util.List; +import java.util.Map; import java.util.function.Consumer; import java.util.function.Predicate; @@ -153,6 +154,15 @@ interface Request> { */ T variable(String name, @Nullable Object value); + /** + * Add variables. + * @param values the variables to be set + * the variable of the values, possibly {@code null} since GraphQL + * supports providing null value vs not providing a value at all. + * @return this request spec + */ + T variable(Map values); + /** * Add a value for a protocol extension. * @param name the protocol extension name diff --git a/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java b/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java index 3fc7fb76e..5ba7bff3b 100644 --- a/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java +++ b/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java @@ -16,9 +16,7 @@ package org.springframework.graphql.test.tester; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.atomic.AtomicReference; import graphql.GraphqlErrorBuilder; @@ -151,11 +149,11 @@ void entityList() { String document = "{me {name, friends}}"; getGraphQlService().setDataAsJson(document, "{" + - " \"me\":{" + - " \"name\":\"Luke Skywalker\"," - + " \"friends\":[{\"name\":\"Han Solo\"}, {\"name\":\"Leia Organa\"}]" + - " }" + - "}"); + " \"me\":{" + + " \"name\":\"Luke Skywalker\"," + + " \"friends\":[{\"name\":\"Han Solo\"}, {\"name\":\"Leia Organa\"}]" + + " }" + + "}"); GraphQlTester.Response response = graphQlTester().document(document).execute(); @@ -240,6 +238,39 @@ void operationNameAndVariables() { assertThat(request.getVariables()).containsEntry("keyOnly", null); } + @Test + void operationNameAndVariablesAsMap() { + + String document = "query HeroNameAndFriends($episode: Episode) {" + + " hero(episode: $episode) {" + + " name" + + " }" + + "}"; + + getGraphQlService().setDataAsJson(document, "{\"hero\": {\"name\":\"R2-D2\"}}"); + + Map variableMap = new LinkedHashMap<>(); + + variableMap.put("episode", Optional.of("JEDI")); + variableMap.put("foo", Optional.of("bar")); + variableMap.put("keyOnly", Optional.ofNullable(null)); + + GraphQlTester.Response response = graphQlTester().document(document) + .operationName("HeroNameAndFriends") + .variable(variableMap) + .execute(); + + response.path("hero").entity(MovieCharacter.class).isEqualTo(MovieCharacter.create("R2-D2")); + + ExecutionGraphQlRequest request = getGraphQlService().getGraphQlRequest(); + assertThat(request.getDocument()).contains(document); + assertThat(request.getOperationName()).isEqualTo("HeroNameAndFriends"); + assertThat(request.getVariables()).hasSize(3); + assertThat(request.getVariables()).containsEntry("episode", Optional.of("JEDI")); + assertThat(request.getVariables()).containsEntry("foo", Optional.of("bar")); + assertThat(request.getVariables()).containsEntry("keyOnly", Optional.ofNullable(null)); + } + @Test void protocolExtensions() { String document = "{me {name, friends}}"; From 70ebf839d6fdc02027f8793bf1053c602ba74f34 Mon Sep 17 00:00:00 2001 From: kutlueren Date: Wed, 15 May 2024 16:32:12 +0200 Subject: [PATCH 2/3] remove wildcard import --- .../graphql/test/tester/GraphQlTesterTests.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java b/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java index 5ba7bff3b..5d8c96828 100644 --- a/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java +++ b/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java @@ -16,7 +16,10 @@ package org.springframework.graphql.test.tester; -import java.util.*; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.concurrent.atomic.AtomicReference; import graphql.GraphqlErrorBuilder; From 2f858739d357b766634f95b5c6f8493821acc024 Mon Sep 17 00:00:00 2001 From: Kutlu EREN Date: Wed, 15 May 2024 16:35:34 +0200 Subject: [PATCH 3/3] remove indendation --- .../graphql/test/tester/GraphQlTesterTests.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java b/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java index 5d8c96828..d7c640f45 100644 --- a/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java +++ b/spring-graphql-test/src/test/java/org/springframework/graphql/test/tester/GraphQlTesterTests.java @@ -152,11 +152,11 @@ void entityList() { String document = "{me {name, friends}}"; getGraphQlService().setDataAsJson(document, "{" + - " \"me\":{" + - " \"name\":\"Luke Skywalker\"," - + " \"friends\":[{\"name\":\"Han Solo\"}, {\"name\":\"Leia Organa\"}]" + - " }" + - "}"); + " \"me\":{" + + " \"name\":\"Luke Skywalker\"," + + " \"friends\":[{\"name\":\"Han Solo\"}, {\"name\":\"Leia Organa\"}]" + + " }" + + "}"); GraphQlTester.Response response = graphQlTester().document(document).execute();