Add nullability annotations to tests in module/spring-boot-data-mongodb
See gh-47263
This commit is contained in:
parent
5c0d2ee180
commit
09967b1a5d
|
@ -39,6 +39,7 @@ dependencies {
|
|||
optional("org.mongodb:mongodb-driver-sync")
|
||||
|
||||
testCompileOnly("com.fasterxml.jackson.core:jackson-annotations")
|
||||
testCompileOnly("com.google.code.findbugs:jsr305")
|
||||
|
||||
testImplementation(project(":core:spring-boot-test"))
|
||||
testImplementation(project(":test-support:spring-boot-test-support"))
|
||||
|
@ -47,3 +48,7 @@ dependencies {
|
|||
|
||||
testRuntimeOnly("ch.qos.logback:logback-classic")
|
||||
}
|
||||
|
||||
tasks.named("compileTestJava") {
|
||||
options.nullability.checking = "tests"
|
||||
}
|
||||
|
|
|
@ -26,6 +26,7 @@ import com.mongodb.client.MongoClients;
|
|||
import com.mongodb.client.MongoCollection;
|
||||
import com.mongodb.client.gridfs.GridFSBucket;
|
||||
import org.assertj.core.api.InstanceOfAssertFactories;
|
||||
import org.jspecify.annotations.Nullable;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.beans.factory.BeanCreationException;
|
||||
|
@ -84,13 +85,11 @@ class DataMongoAutoConfigurationTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
void whenGridFsDatabaseIsConfiguredThenGridFsTemplateIsAutoConfiguredAndUsesIt() {
|
||||
this.contextRunner.withPropertyValues("spring.data.mongodb.gridfs.database:grid").run((context) -> {
|
||||
assertThat(context).hasSingleBean(GridFsTemplate.class);
|
||||
GridFsTemplate template = context.getBean(GridFsTemplate.class);
|
||||
GridFSBucket bucket = ((Supplier<GridFSBucket>) ReflectionTestUtils.getField(template, "bucketSupplier"))
|
||||
.get();
|
||||
GridFSBucket bucket = getBucket(template);
|
||||
assertThat(bucket).extracting("filesCollection", InstanceOfAssertFactories.type(MongoCollection.class))
|
||||
.extracting((collection) -> collection.getNamespace().getDatabaseName())
|
||||
.isEqualTo("grid");
|
||||
|
@ -98,13 +97,11 @@ class DataMongoAutoConfigurationTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
void whenGridFsBucketIsConfiguredThenGridFsTemplateIsAutoConfiguredAndUsesIt() {
|
||||
this.contextRunner.withPropertyValues("spring.data.mongodb.gridfs.bucket:test-bucket").run((context) -> {
|
||||
assertThat(context).hasSingleBean(GridFsTemplate.class);
|
||||
GridFsTemplate template = context.getBean(GridFsTemplate.class);
|
||||
GridFSBucket bucket = ((Supplier<GridFSBucket>) ReflectionTestUtils.getField(template, "bucketSupplier"))
|
||||
.get();
|
||||
GridFSBucket bucket = getBucket(template);
|
||||
assertThat(bucket.getBucketName()).isEqualTo("test-bucket");
|
||||
});
|
||||
}
|
||||
|
@ -169,8 +166,7 @@ class DataMongoAutoConfigurationTests {
|
|||
void defaultFieldNamingStrategy() {
|
||||
this.contextRunner.run((context) -> {
|
||||
MongoMappingContext mappingContext = context.getBean(MongoMappingContext.class);
|
||||
FieldNamingStrategy fieldNamingStrategy = (FieldNamingStrategy) ReflectionTestUtils.getField(mappingContext,
|
||||
"fieldNamingStrategy");
|
||||
FieldNamingStrategy fieldNamingStrategy = getFieldNamingStrategy(mappingContext);
|
||||
assertThat(fieldNamingStrategy.getClass()).isEqualTo(PropertyNameFieldNamingStrategy.class);
|
||||
});
|
||||
}
|
||||
|
@ -182,8 +178,7 @@ class DataMongoAutoConfigurationTests {
|
|||
+ CamelCaseAbbreviatingFieldNamingStrategy.class.getName())
|
||||
.run((context) -> {
|
||||
MongoMappingContext mappingContext = context.getBean(MongoMappingContext.class);
|
||||
FieldNamingStrategy fieldNamingStrategy = (FieldNamingStrategy) ReflectionTestUtils
|
||||
.getField(mappingContext, "fieldNamingStrategy");
|
||||
FieldNamingStrategy fieldNamingStrategy = getFieldNamingStrategy(mappingContext);
|
||||
assertThat(fieldNamingStrategy.getClass()).isEqualTo(CamelCaseAbbreviatingFieldNamingStrategy.class);
|
||||
});
|
||||
}
|
||||
|
@ -216,6 +211,7 @@ class DataMongoAutoConfigurationTests {
|
|||
this.contextRunner.withUserConfiguration(EntityScanConfig.class).run((context) -> {
|
||||
MongoMappingContext mappingContext = context.getBean(MongoMappingContext.class);
|
||||
ManagedTypes managedTypes = (ManagedTypes) ReflectionTestUtils.getField(mappingContext, "managedTypes");
|
||||
assertThat(managedTypes).isNotNull();
|
||||
assertThat(managedTypes.toList()).containsOnly(City.class, Country.class);
|
||||
});
|
||||
|
||||
|
@ -226,7 +222,9 @@ class DataMongoAutoConfigurationTests {
|
|||
this.contextRunner.run((context) -> {
|
||||
MongoMappingContext mappingContext = context.getBean(MongoMappingContext.class);
|
||||
MongoPersistentEntity<?> entity = mappingContext.getPersistentEntity(Sample.class);
|
||||
assertThat(entity).isNotNull();
|
||||
MongoPersistentProperty dateProperty = entity.getPersistentProperty("date");
|
||||
assertThat(dateProperty).isNotNull();
|
||||
assertThat(dateProperty.isEntity()).isFalse();
|
||||
});
|
||||
|
||||
|
@ -346,9 +344,24 @@ class DataMongoAutoConfigurationTests {
|
|||
|
||||
private static void assertDomainTypesDiscovered(MongoMappingContext mappingContext, Class<?>... types) {
|
||||
ManagedTypes managedTypes = (ManagedTypes) ReflectionTestUtils.getField(mappingContext, "managedTypes");
|
||||
assertThat(managedTypes).isNotNull();
|
||||
assertThat(managedTypes.toList()).containsOnly(types);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private GridFSBucket getBucket(GridFsTemplate template) {
|
||||
Supplier<GridFSBucket> field = (Supplier<GridFSBucket>) ReflectionTestUtils.getField(template,
|
||||
"bucketSupplier");
|
||||
assertThat(field).isNotNull();
|
||||
return field.get();
|
||||
}
|
||||
|
||||
private FieldNamingStrategy getFieldNamingStrategy(MongoMappingContext mappingContext) {
|
||||
Object field = ReflectionTestUtils.getField(mappingContext, "fieldNamingStrategy");
|
||||
assertThat(field).isNotNull();
|
||||
return (FieldNamingStrategy) field;
|
||||
}
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
static class CustomConversionsConfig {
|
||||
|
||||
|
@ -388,7 +401,7 @@ class DataMongoAutoConfigurationTests {
|
|||
static class MyConverter implements Converter<MongoClient, Boolean> {
|
||||
|
||||
@Override
|
||||
public Boolean convert(MongoClient source) {
|
||||
public @Nullable Boolean convert(MongoClient source) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -396,7 +409,7 @@ class DataMongoAutoConfigurationTests {
|
|||
|
||||
static class Sample {
|
||||
|
||||
LocalDateTime date;
|
||||
@Nullable LocalDateTime date;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -51,8 +51,9 @@ class DataMongoPropertiesTests {
|
|||
}
|
||||
|
||||
private BigDecimalRepresentation springDataDefaultBigDecimalRepresentation() {
|
||||
return (BigDecimalRepresentation) ReflectionTestUtils.getField(new MongoConverterConfigurationAdapter(),
|
||||
"bigDecimals");
|
||||
Object field = ReflectionTestUtils.getField(new MongoConverterConfigurationAdapter(), "bigDecimals");
|
||||
assertThat(field).isNotNull();
|
||||
return (BigDecimalRepresentation) field;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ package org.springframework.boot.data.mongodb.autoconfigure;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.jspecify.annotations.Nullable;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
@ -46,11 +47,13 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
*/
|
||||
class DataMongoReactiveAndBlockingRepositoriesAutoConfigurationTests {
|
||||
|
||||
private AnnotationConfigApplicationContext context;
|
||||
private @Nullable AnnotationConfigApplicationContext context;
|
||||
|
||||
@AfterEach
|
||||
void close() {
|
||||
this.context.close();
|
||||
if (this.context != null) {
|
||||
this.context.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -19,6 +19,7 @@ package org.springframework.boot.data.mongodb.autoconfigure;
|
|||
import java.time.Duration;
|
||||
|
||||
import com.mongodb.reactivestreams.client.MongoCollection;
|
||||
import com.mongodb.reactivestreams.client.MongoDatabase;
|
||||
import com.mongodb.reactivestreams.client.gridfs.GridFSBucket;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
@ -76,8 +77,10 @@ class DataMongoReactiveAutoConfigurationTests {
|
|||
this.contextRunner.withPropertyValues("spring.data.mongodb.gridfs.bucket:test-bucket").run((context) -> {
|
||||
assertThat(context).hasSingleBean(ReactiveGridFsTemplate.class);
|
||||
ReactiveGridFsTemplate template = context.getBean(ReactiveGridFsTemplate.class);
|
||||
GridFSBucket bucket = ((Mono<GridFSBucket>) ReflectionTestUtils.getField(template, "bucketSupplier"))
|
||||
.block(Duration.ofSeconds(30));
|
||||
Mono<GridFSBucket> field = (Mono<GridFSBucket>) ReflectionTestUtils.getField(template, "bucketSupplier");
|
||||
assertThat(field).isNotNull();
|
||||
GridFSBucket bucket = field.block(Duration.ofSeconds(30));
|
||||
assertThat(bucket).isNotNull();
|
||||
assertThat(bucket.getBucketName()).isEqualTo("test-bucket");
|
||||
});
|
||||
}
|
||||
|
@ -94,7 +97,9 @@ class DataMongoReactiveAutoConfigurationTests {
|
|||
this.contextRunner.run((context) -> {
|
||||
ReactiveMongoDatabaseFactory factory = context.getBean(ReactiveMongoDatabaseFactory.class);
|
||||
assertThat(factory).isInstanceOf(SimpleReactiveMongoDatabaseFactory.class);
|
||||
assertThat(factory.getMongoDatabase().block().getName()).isEqualTo("test");
|
||||
MongoDatabase mongoDatabase = factory.getMongoDatabase().block();
|
||||
assertThat(mongoDatabase).isNotNull();
|
||||
assertThat(mongoDatabase.getName()).isEqualTo("test");
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -103,7 +108,9 @@ class DataMongoReactiveAutoConfigurationTests {
|
|||
this.contextRunner.withPropertyValues("spring.mongodb.database=mydb").run((context) -> {
|
||||
ReactiveMongoDatabaseFactory factory = context.getBean(ReactiveMongoDatabaseFactory.class);
|
||||
assertThat(factory).isInstanceOf(SimpleReactiveMongoDatabaseFactory.class);
|
||||
assertThat(factory.getMongoDatabase().block().getName()).isEqualTo("mydb");
|
||||
MongoDatabase mongoDatabase = factory.getMongoDatabase().block();
|
||||
assertThat(mongoDatabase).isNotNull();
|
||||
assertThat(mongoDatabase.getName()).isEqualTo("mydb");
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -112,7 +119,9 @@ class DataMongoReactiveAutoConfigurationTests {
|
|||
this.contextRunner.withPropertyValues("spring.mongodb.uri=mongodb://mongo.example.com/mydb").run((context) -> {
|
||||
ReactiveMongoDatabaseFactory factory = context.getBean(ReactiveMongoDatabaseFactory.class);
|
||||
assertThat(factory).isInstanceOf(SimpleReactiveMongoDatabaseFactory.class);
|
||||
assertThat(factory.getMongoDatabase().block().getName()).isEqualTo("mydb");
|
||||
MongoDatabase mongoDatabase = factory.getMongoDatabase().block();
|
||||
assertThat(mongoDatabase).isNotNull();
|
||||
assertThat(mongoDatabase.getName()).isEqualTo("mydb");
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -124,7 +133,9 @@ class DataMongoReactiveAutoConfigurationTests {
|
|||
.run((context) -> {
|
||||
ReactiveMongoDatabaseFactory factory = context.getBean(ReactiveMongoDatabaseFactory.class);
|
||||
assertThat(factory).isInstanceOf(SimpleReactiveMongoDatabaseFactory.class);
|
||||
assertThat(factory.getMongoDatabase().block().getName()).isEqualTo("mydb");
|
||||
MongoDatabase mongoDatabase = factory.getMongoDatabase().block();
|
||||
assertThat(mongoDatabase).isNotNull();
|
||||
assertThat(mongoDatabase.getName()).isEqualTo("mydb");
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -135,7 +146,9 @@ class DataMongoReactiveAutoConfigurationTests {
|
|||
.run((context) -> {
|
||||
ReactiveMongoDatabaseFactory factory = context.getBean(ReactiveMongoDatabaseFactory.class);
|
||||
assertThat(factory).isInstanceOf(SimpleReactiveMongoDatabaseFactory.class);
|
||||
assertThat(factory.getMongoDatabase().block().getName()).isEqualTo("mydb");
|
||||
MongoDatabase mongoDatabase = factory.getMongoDatabase().block();
|
||||
assertThat(mongoDatabase).isNotNull();
|
||||
assertThat(mongoDatabase.getName()).isEqualTo("mydb");
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -157,9 +170,12 @@ class DataMongoReactiveAutoConfigurationTests {
|
|||
private String grisFsTemplateDatabaseName(AssertableApplicationContext context) {
|
||||
assertThat(context).hasSingleBean(ReactiveGridFsTemplate.class);
|
||||
ReactiveGridFsTemplate template = context.getBean(ReactiveGridFsTemplate.class);
|
||||
GridFSBucket bucket = ((Mono<GridFSBucket>) ReflectionTestUtils.getField(template, "bucketSupplier"))
|
||||
.block(Duration.ofSeconds(30));
|
||||
Mono<GridFSBucket> field = (Mono<GridFSBucket>) ReflectionTestUtils.getField(template, "bucketSupplier");
|
||||
assertThat(field).isNotNull();
|
||||
GridFSBucket bucket = field.block(Duration.ofSeconds(30));
|
||||
assertThat(bucket).isNotNull();
|
||||
MongoCollection<?> collection = (MongoCollection<?>) ReflectionTestUtils.getField(bucket, "filesCollection");
|
||||
assertThat(collection).isNotNull();
|
||||
return collection.getNamespace().getDatabaseName();
|
||||
}
|
||||
|
||||
|
|
|
@ -59,6 +59,7 @@ class DataMongoReactiveRepositoriesAutoConfigurationTests {
|
|||
assertThat(context).hasSingleBean(MongoClient.class);
|
||||
MongoMappingContext mappingContext = context.getBean(MongoMappingContext.class);
|
||||
ManagedTypes managedTypes = (ManagedTypes) ReflectionTestUtils.getField(mappingContext, "managedTypes");
|
||||
assertThat(managedTypes).isNotNull();
|
||||
assertThat(managedTypes.toList()).hasSize(1);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -55,6 +55,7 @@ class DataMongoRepositoriesAutoConfigurationTests {
|
|||
assertThat(context).hasSingleBean(MongoClient.class);
|
||||
MongoMappingContext mappingContext = context.getBean(MongoMappingContext.class);
|
||||
ManagedTypes managedTypes = (ManagedTypes) ReflectionTestUtils.getField(mappingContext, "managedTypes");
|
||||
assertThat(managedTypes).isNotNull();
|
||||
assertThat(managedTypes.toList()).hasSize(1);
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue