diff --git a/spring-graphql/src/test/java/org/springframework/graphql/GraphQlTestUtils.java b/spring-graphql/src/test/java/org/springframework/graphql/GraphQlTestUtils.java index 5c62d807..39e356db 100644 --- a/spring-graphql/src/test/java/org/springframework/graphql/GraphQlTestUtils.java +++ b/spring-graphql/src/test/java/org/springframework/graphql/GraphQlTestUtils.java @@ -18,13 +18,18 @@ package org.springframework.graphql; import java.nio.charset.StandardCharsets; import java.util.Arrays; +import java.util.Map; +import graphql.ExecutionResult; import graphql.GraphQL; import graphql.schema.DataFetcher; import org.springframework.core.io.ByteArrayResource; import org.springframework.graphql.execution.DataFetcherExceptionResolver; import org.springframework.graphql.execution.GraphQlSource; +import org.springframework.lang.Nullable; + +import static org.assertj.core.api.Assertions.assertThat; /** * Utility methods for GraphQL tests. @@ -57,4 +62,19 @@ public abstract class GraphQlTestUtils { .configureRuntimeWiring(wiring -> wiring.type(typeName, (builder) -> builder.dataFetcher(fieldName, fetcher))); } + @SuppressWarnings("unchecked") + public static T checkErrorsAndGetData(@Nullable ExecutionResult result, String key) { + Map map = checkErrorsAndGetData(result); + return (T) map.get(key); + } + + @SuppressWarnings("unchecked") + public static T checkErrorsAndGetData(@Nullable ExecutionResult result) { + assertThat(result).isNotNull(); + assertThat(result.getErrors()).as("Errors present in GraphQL response").isEmpty(); + T data = result.getData(); + assertThat(data).isNotNull(); + return (T) data; + } + } diff --git a/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/BatchMappingInvocationTests.java b/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/BatchMappingInvocationTests.java index 4949f23a..e99cccdd 100644 --- a/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/BatchMappingInvocationTests.java +++ b/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/BatchMappingInvocationTests.java @@ -38,6 +38,7 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext import org.springframework.context.annotation.Bean; import org.springframework.core.io.ByteArrayResource; import org.springframework.graphql.GraphQlService; +import org.springframework.graphql.GraphQlTestUtils; import org.springframework.graphql.RequestInput; import org.springframework.graphql.data.method.annotation.BatchMapping; import org.springframework.graphql.data.method.annotation.QueryMapping; @@ -45,7 +46,6 @@ import org.springframework.graphql.execution.BatchLoaderRegistry; import org.springframework.graphql.execution.DefaultBatchLoaderRegistry; import org.springframework.graphql.execution.ExecutionGraphQlService; import org.springframework.graphql.execution.GraphQlSource; -import org.springframework.lang.Nullable; import org.springframework.stereotype.Controller; import static org.assertj.core.api.Assertions.assertThat; @@ -121,9 +121,7 @@ public class BatchMappingInvocationTests { .execute(new RequestInput(query, null, null)) .block(); - Map data = getData(result); - List> actualCourses = (List>) data.get("courses"); - + List> actualCourses = GraphQlTestUtils.checkErrorsAndGetData(result, "courses"); List courses = Course.allCourses(); assertThat(actualCourses).hasSize(courses.size()); @@ -155,8 +153,7 @@ public class BatchMappingInvocationTests { .execute(new RequestInput(query, null, null)) .block(); - Map data = getData(result); - List> actualCourses = (List>) data.get("courses"); + List> actualCourses = GraphQlTestUtils.checkErrorsAndGetData(result, "courses"); List courses = Course.allCourses(); assertThat(actualCourses).hasSize(courses.size()); @@ -185,14 +182,6 @@ public class BatchMappingInvocationTests { return applicationContext.getBean(ExecutionGraphQlService.class); } - private T getData(@Nullable ExecutionResult result) { - assertThat(result).isNotNull(); - assertThat(result.getErrors()).isEmpty(); - T data = result.getData(); - assertThat(data).isNotNull(); - return data; - } - private static class CourseController { diff --git a/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/SchemaMappingInvocationTests.java b/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/SchemaMappingInvocationTests.java index 79dbb091..a522a45f 100644 --- a/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/SchemaMappingInvocationTests.java +++ b/spring-graphql/src/test/java/org/springframework/graphql/data/method/annotation/support/SchemaMappingInvocationTests.java @@ -38,6 +38,7 @@ import org.springframework.graphql.Book; import org.springframework.graphql.BookCriteria; import org.springframework.graphql.BookSource; import org.springframework.graphql.GraphQlService; +import org.springframework.graphql.GraphQlTestUtils; import org.springframework.graphql.RequestInput; import org.springframework.graphql.data.method.annotation.Argument; import org.springframework.graphql.data.method.annotation.MutationMapping; @@ -48,7 +49,6 @@ import org.springframework.graphql.execution.BatchLoaderRegistry; import org.springframework.graphql.execution.DefaultBatchLoaderRegistry; import org.springframework.graphql.execution.ExecutionGraphQlService; import org.springframework.graphql.execution.GraphQlSource; -import org.springframework.lang.Nullable; import org.springframework.stereotype.Controller; import static org.assertj.core.api.Assertions.assertThat; @@ -77,13 +77,11 @@ public class SchemaMappingInvocationTests { .execute(new RequestInput(query, null, null)) .block(); - Map data = getData(result); - - Map book = getValue(data, "bookById"); + Map book = GraphQlTestUtils.checkErrorsAndGetData(result, "bookById"); assertThat(book.get("id")).isEqualTo("1"); assertThat(book.get("name")).isEqualTo("Nineteen Eighty-Four"); - Map author = getValue(book, "author"); + Map author = (Map) book.get("author"); assertThat(author.get("firstName")).isEqualTo("George"); assertThat(author.get("lastName")).isEqualTo("Orwell"); } @@ -101,8 +99,8 @@ public class SchemaMappingInvocationTests { .execute(new RequestInput(query, null, null)) .block(); - Map data = getData(result); - List> bookList = getValue(data, "booksByCriteria"); + List> bookList = GraphQlTestUtils.checkErrorsAndGetData(result, "booksByCriteria"); + assertThat(bookList).hasSize(2); assertThat(bookList.get(0).get("name")).isEqualTo("Nineteen Eighty-Four"); assertThat(bookList.get(1).get("name")).isEqualTo("Animal Farm"); @@ -129,9 +127,8 @@ public class SchemaMappingInvocationTests { .execute(requestInput) .block(); - Map data = getData(result); + Map author = GraphQlTestUtils.checkErrorsAndGetData(result, "authorById"); - Map author = getValue(data, "authorById"); assertThat(author.get("id")).isEqualTo("101"); assertThat(author.get("firstName")).isEqualTo("George"); assertThat(author.get("lastName")).isEqualTo("Orwell"); @@ -153,9 +150,7 @@ public class SchemaMappingInvocationTests { .execute(new RequestInput(operation, null, null)) .block(); - Map data = getData(result); - - Map author = getValue(data, "addAuthor"); + Map author = GraphQlTestUtils.checkErrorsAndGetData(result, "addAuthor"); assertThat(author.get("id")).isEqualTo("99"); assertThat(author.get("firstName")).isEqualTo("James"); assertThat(author.get("lastName")).isEqualTo("Joyce"); @@ -174,7 +169,7 @@ public class SchemaMappingInvocationTests { .execute(new RequestInput(operation, null, null)) .block(); - Publisher publisher = getData(result); + Publisher publisher = GraphQlTestUtils.checkErrorsAndGetData(result); Flux> bookFlux = Flux.from(publisher).map(rs -> { Map map = rs.getData(); @@ -202,19 +197,6 @@ public class SchemaMappingInvocationTests { return applicationContext.getBean(ExecutionGraphQlService.class); } - private T getData(@Nullable ExecutionResult result) { - assertThat(result).isNotNull(); - assertThat(result.getErrors()).isEmpty(); - T data = result.getData(); - assertThat(data).isNotNull(); - return data; - } - - @SuppressWarnings("unchecked") - private T getValue(Map data, String key) { - return (T) data.get(key); - } - @Configuration static class TestConfig {