Skip to content

Commit 4854fec

Browse files
committed
Add nullability annotations to tests in module/spring-boot-graphql
See gh-47263
1 parent e83ad75 commit 4854fec

File tree

8 files changed

+45
-14
lines changed

8 files changed

+45
-14
lines changed

module/spring-boot-graphql/build.gradle

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,11 @@ dependencies {
5454
testImplementation("org.springframework.graphql:spring-graphql-test")
5555
testImplementation("org.springframework.security:spring-security-test")
5656

57+
testCompileOnly("com.google.code.findbugs:jsr305")
58+
5759
testRuntimeOnly("ch.qos.logback:logback-classic")
5860
}
61+
62+
tasks.named("compileTestJava") {
63+
options.nullability.checking = "tests"
64+
}

module/spring-boot-graphql/src/test/java/org/springframework/boot/graphql/autoconfigure/Book.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,19 @@
2626
public class Book {
2727

2828
@Id
29+
@SuppressWarnings("NullAway.Init")
2930
String id;
3031

32+
@SuppressWarnings("NullAway.Init")
3133
String name;
3234

35+
@SuppressWarnings("NullAway.Init")
3336
int pageCount;
3437

38+
@SuppressWarnings("NullAway.Init")
3539
String author;
3640

37-
public Book() {
41+
protected Book() {
3842
}
3943

4044
public Book(String id, String name, int pageCount, String author) {

module/spring-boot-graphql/src/test/java/org/springframework/boot/graphql/autoconfigure/DefaultGraphQlSchemaConditionTests.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.util.Collection;
2020

21+
import org.jspecify.annotations.Nullable;
2122
import org.junit.jupiter.api.Test;
2223

2324
import org.springframework.boot.autoconfigure.condition.ConditionEvaluationReport;
@@ -78,7 +79,7 @@ private void didMatch(AssertableApplicationContext context) {
7879
assertThat(context.getBean("success")).isEqualTo("success");
7980
}
8081

81-
private String conditionReportMessage(AssertableApplicationContext context) {
82+
private @Nullable String conditionReportMessage(AssertableApplicationContext context) {
8283
Collection<ConditionEvaluationReport.ConditionAndOutcomes> conditionAndOutcomes = ConditionEvaluationReport
8384
.get(context.getSourceApplicationContext().getBeanFactory())
8485
.getConditionAndOutcomesBySource()

module/spring-boot-graphql/src/test/java/org/springframework/boot/graphql/autoconfigure/GraphQlTestDataFetchers.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@
2020
import java.util.List;
2121

2222
import graphql.schema.DataFetcher;
23+
import org.jspecify.annotations.Nullable;
2324
import reactor.core.publisher.Flux;
2425

26+
import static org.assertj.core.api.Assertions.assertThat;
27+
2528
/**
2629
* Test utility class holding {@link DataFetcher} implementations.
2730
*
@@ -39,14 +42,22 @@ private GraphQlTestDataFetchers() {
3942
}
4043

4144
public static DataFetcher<Book> getBookByIdDataFetcher() {
42-
return (environment) -> getBookById(environment.getArgument("id"));
45+
return (environment) -> {
46+
String id = environment.getArgument("id");
47+
assertThat(id).isNotNull();
48+
return getBookById(id);
49+
};
4350
}
4451

4552
public static DataFetcher<Flux<Book>> getBooksOnSaleDataFetcher() {
46-
return (environment) -> getBooksOnSale(environment.getArgument("minPages"));
53+
return (environment) -> {
54+
Integer minPages = environment.getArgument("minPages");
55+
assertThat(minPages).isNotNull();
56+
return getBooksOnSale(minPages);
57+
};
4758
}
4859

49-
public static Book getBookById(String id) {
60+
public static @Nullable Book getBookById(String id) {
5061
return books.stream().filter((book) -> book.getId().equals(id)).findFirst().orElse(null);
5162
}
5263

module/spring-boot-graphql/src/test/java/org/springframework/boot/graphql/autoconfigure/reactive/GraphQlWebFluxAutoConfigurationTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import graphql.schema.idl.TypeRuntimeWiring;
2525
import org.junit.jupiter.api.Test;
26+
import reactor.core.publisher.Mono;
2627

2728
import org.springframework.aot.hint.RuntimeHints;
2829
import org.springframework.aot.hint.predicate.RuntimeHintsPredicates;
@@ -354,13 +355,13 @@ static class CustomRouterFunctions {
354355
@Bean
355356
@Order(-1)
356357
RouterFunction<?> before() {
357-
return (r) -> null;
358+
return (r) -> Mono.empty();
358359
}
359360

360361
@Bean
361362
@Order(1)
362363
RouterFunction<?> after() {
363-
return (r) -> null;
364+
return (r) -> Mono.empty();
364365
}
365366

366367
}

module/spring-boot-graphql/src/test/java/org/springframework/boot/graphql/autoconfigure/security/GraphQlWebFluxSecurityAutoConfigurationTests.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,11 @@ static class DataFetchersConfiguration {
153153

154154
@Bean
155155
RuntimeWiringConfigurer bookDataFetcher(BookService bookService) {
156-
return (builder) -> builder.type(TypeRuntimeWiring.newTypeWiring("Query")
157-
.dataFetcher("bookById", (env) -> bookService.getBookdById(env.getArgument("id"))));
156+
return (builder) -> builder.type(TypeRuntimeWiring.newTypeWiring("Query").dataFetcher("bookById", (env) -> {
157+
String id = env.getArgument("id");
158+
assertThat(id).isNotNull();
159+
return bookService.getBookdById(id);
160+
}));
158161
}
159162

160163
@Bean

module/spring-boot-graphql/src/test/java/org/springframework/boot/graphql/autoconfigure/security/GraphQlWebMvcSecurityAutoConfigurationTests.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import graphql.schema.idl.TypeRuntimeWiring;
2020
import org.assertj.core.api.ThrowingConsumer;
21+
import org.jspecify.annotations.Nullable;
2122
import org.junit.jupiter.api.Test;
2223

2324
import org.springframework.boot.autoconfigure.AutoConfigurations;
@@ -142,8 +143,11 @@ static class DataFetchersConfiguration {
142143

143144
@Bean
144145
RuntimeWiringConfigurer bookDataFetcher(BookService bookService) {
145-
return (builder) -> builder.type(TypeRuntimeWiring.newTypeWiring("Query")
146-
.dataFetcher("bookById", (env) -> bookService.getBookdById(env.getArgument("id"))));
146+
return (builder) -> builder.type(TypeRuntimeWiring.newTypeWiring("Query").dataFetcher("bookById", (env) -> {
147+
String id = env.getArgument("id");
148+
assertThat(id).isNotNull();
149+
return bookService.getBookdById(id);
150+
}));
147151
}
148152

149153
@Bean
@@ -156,7 +160,7 @@ BookService bookService() {
156160
static class BookService {
157161

158162
@PreAuthorize("hasRole('USER')")
159-
Book getBookdById(String id) {
163+
@Nullable Book getBookdById(String id) {
160164
return GraphQlTestDataFetchers.getBookById(id);
161165
}
162166

module/spring-boot-graphql/src/test/java/org/springframework/boot/graphql/autoconfigure/servlet/GraphQlWebMvcAutoConfigurationTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.time.Duration;
2020
import java.util.Map;
21+
import java.util.Optional;
2122

2223
import graphql.schema.idl.TypeRuntimeWiring;
2324
import org.assertj.core.api.ThrowingConsumer;
@@ -313,13 +314,13 @@ static class CustomRouterFunctions {
313314
@Bean
314315
@Order(-1)
315316
RouterFunction<?> before() {
316-
return (r) -> null;
317+
return (r) -> Optional.empty();
317318
}
318319

319320
@Bean
320321
@Order(1)
321322
RouterFunction<?> after() {
322-
return (r) -> null;
323+
return (r) -> Optional.empty();
323324
}
324325

325326
}

0 commit comments

Comments
 (0)