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 b9160852..ace71e43 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 @@ -330,24 +330,25 @@ final class DefaultGraphQlTester implements GraphQlTester { private final JsonPathExpectationsHelper pathHelper; private DefaultPath(String path, ResponseDelegate delegate) { - Assert.notNull(path, "`path` is required"); Assert.notNull(delegate, "ResponseContainer is required"); + String fullPath = initFullPath(path); + this.path = path; this.delegate = delegate; - this.jsonPath = initJsonPath(path); - this.pathHelper = new JsonPathExpectationsHelper(this.jsonPath.getPath()); + this.jsonPath = JsonPath.compile(fullPath); + this.pathHelper = new JsonPathExpectationsHelper(fullPath); } - private static JsonPath initJsonPath(String path) { + private static String initFullPath(String path) { if (!StringUtils.hasText(path)) { path = "$.data"; } else if (!path.startsWith("$") && !path.startsWith("data.")) { path = "$.data." + path; } - return JsonPath.compile(path); + return path; } @Override 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 ebdc282d..7384ea17 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 @@ -48,9 +48,10 @@ public class GraphQlTesterTests extends GraphQlTesterTestSupport { GraphQlTester.Response response = graphQlTester().document(document).execute(); response.path("me.name").hasValue(); response.path("me.friends").hasValue(); + response.path("me[?(@.name == 'Luke Skywalker')].name").hasValue(); // gh-377 assertThatThrownBy(() -> response.path("hero").hasValue()) - .hasMessageContaining("No value at JSON path \"$['data']['hero']"); + .hasMessageContaining("No value at JSON path \"$.data.hero\""); assertThat(getActualRequestDocument()).contains(document); } @@ -152,7 +153,7 @@ public class GraphQlTesterTests extends GraphQlTesterTestSupport { "{" + " \"me\":{" + " \"name\":\"Luke Skywalker\"," - + " \"friends\":[{\"name\":\"Han Solo\"}, {\"name\":\"Leia Organa\"}]" + + + " \"friends\":[{\"name\":\"Han Solo\"}, {\"name\":\"Leia Organa\"}]" + " }" + "}");