From 1e9ab02e3f93aa1ad1aaaa864038c8e1712fef09 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 10 Jun 2020 10:14:26 +0200 Subject: [PATCH] DATAMONGO-2565 - Polishing. Add unit test to verify behavior. Cleanup code. Original pull request: #869. --- .../BasicMongoPersistentEntityUnitTests.java | 57 ++++++++++++------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntityUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntityUnitTests.java index 70c3b9767..c0c6f4602 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntityUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntityUnitTests.java @@ -22,7 +22,7 @@ import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import java.util.Arrays; +import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; @@ -33,6 +33,7 @@ import org.mockito.junit.MockitoJUnitRunner; import org.springframework.context.ApplicationContext; import org.springframework.core.annotation.AliasFor; import org.springframework.data.mapping.MappingException; +import org.springframework.data.mongodb.core.query.Collation; import org.springframework.data.spel.ExtensionAwareEvaluationContextProvider; import org.springframework.data.spel.spi.EvaluationContextExtension; import org.springframework.data.util.ClassTypeInformation; @@ -42,6 +43,7 @@ import org.springframework.data.util.ClassTypeInformation; * * @author Oliver Gierke * @author Christoph Strobl + * @author Mark Paluch */ @RunWith(MockitoJUnitRunner.class) public class BasicMongoPersistentEntityUnitTests { @@ -52,7 +54,7 @@ public class BasicMongoPersistentEntityUnitTests { @Test public void subclassInheritsAtDocumentAnnotation() { - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(Person.class)); assertThat(entity.getCollection()).isEqualTo("contacts"); } @@ -60,7 +62,7 @@ public class BasicMongoPersistentEntityUnitTests { @Test public void evaluatesSpELExpression() { - MongoPersistentEntity entity = new BasicMongoPersistentEntity( + MongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(Company.class)); assertThat(entity.getCollection()).isEqualTo("35"); } @@ -73,7 +75,7 @@ public class BasicMongoPersistentEntityUnitTests { when(context.getBean("myBean")).thenReturn(provider); - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(DynamicallyMapped.class)); entity.setEvaluationContextProvider(new ExtensionAwareEvaluationContextProvider(context)); @@ -86,7 +88,7 @@ public class BasicMongoPersistentEntityUnitTests { @Test // DATAMONGO-937 public void shouldDetectLanguageCorrectly() { - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(DocumentWithLanguage.class)); assertThat(entity.getLanguage()).isEqualTo("spanish"); @@ -98,11 +100,11 @@ public class BasicMongoPersistentEntityUnitTests { doReturn(true).when(propertyMock).isExplicitLanguageProperty(); doReturn(Number.class).when(propertyMock).getActualType(); - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(AnyDocument.class)); entity.addPersistentProperty(propertyMock); - assertThatExceptionOfType(MappingException.class).isThrownBy(() -> entity.verify()); + assertThatExceptionOfType(MappingException.class).isThrownBy(entity::verify); } @Test // DATAMONGO-1053 @@ -111,7 +113,7 @@ public class BasicMongoPersistentEntityUnitTests { doReturn(true).when(propertyMock).isExplicitLanguageProperty(); doReturn(String.class).when(propertyMock).getActualType(); - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(AnyDocument.class)); entity.addPersistentProperty(propertyMock); @@ -124,7 +126,7 @@ public class BasicMongoPersistentEntityUnitTests { @Test // DATAMONGO-1053 public void verifyShouldIgnoreNonExplicitLanguageProperty() { - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(AnyDocument.class)); when(propertyMock.isExplicitLanguageProperty()).thenReturn(false); entity.addPersistentProperty(propertyMock); @@ -146,11 +148,11 @@ public class BasicMongoPersistentEntityUnitTests { doReturn(dbRefMock).when(propertyMock).getDBRef(); doReturn(true).when(dbRefMock).lazy(); - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(AnyDocument.class)); entity.addPersistentProperty(propertyMock); - assertThatExceptionOfType(MappingException.class).isThrownBy(() -> entity.verify()); + assertThatExceptionOfType(MappingException.class).isThrownBy(entity::verify); } @Test // DATAMONGO-1157 @@ -164,11 +166,11 @@ public class BasicMongoPersistentEntityUnitTests { doReturn(dbRefMock).when(propertyMock).getDBRef(); doReturn(true).when(dbRefMock).lazy(); - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(AnyDocument.class)); entity.addPersistentProperty(propertyMock); - assertThatExceptionOfType(MappingException.class).isThrownBy(() -> entity.verify()); + assertThatExceptionOfType(MappingException.class).isThrownBy(entity::verify); } @Test // DATAMONGO-1157 @@ -182,7 +184,7 @@ public class BasicMongoPersistentEntityUnitTests { doReturn(dbRefMock).when(propertyMock).getDBRef(); doReturn(true).when(dbRefMock).lazy(); - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(AnyDocument.class)); entity.addPersistentProperty(propertyMock); entity.verify(); @@ -200,7 +202,7 @@ public class BasicMongoPersistentEntityUnitTests { doReturn(dbRefMock).when(propertyMock).getDBRef(); doReturn(false).when(dbRefMock).lazy(); - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(AnyDocument.class)); entity.addPersistentProperty(propertyMock); entity.verify(); @@ -211,7 +213,7 @@ public class BasicMongoPersistentEntityUnitTests { @Test // DATAMONGO-1291 public void metaInformationShouldBeReadCorrectlyFromInheritedDocumentAnnotation() { - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(DocumentWithCustomAnnotation.class)); assertThat(entity.getCollection()).isEqualTo("collection-1"); @@ -220,7 +222,7 @@ public class BasicMongoPersistentEntityUnitTests { @Test // DATAMONGO-1373 public void metaInformationShouldBeReadCorrectlyFromComposedDocumentAnnotation() { - BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity( + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(DocumentWithComposedAnnotation.class)); assertThat(entity.getCollection()).isEqualTo("custom-collection"); @@ -232,7 +234,7 @@ public class BasicMongoPersistentEntityUnitTests { BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( ClassTypeInformation.from(MappedWithExtension.class)); entity.setEvaluationContextProvider( - new ExtensionAwareEvaluationContextProvider(Arrays.asList(new SampleExtension()))); + new ExtensionAwareEvaluationContextProvider(Collections.singletonList(new SampleExtension()))); assertThat(entity.getCollection()).isEqualTo("collectionName"); } @@ -255,6 +257,18 @@ public class BasicMongoPersistentEntityUnitTests { assertThat(entity.getCollation()).isEqualTo(org.springframework.data.mongodb.core.query.Collation.of("en_US")); } + @Test // DATAMONGO-2565 + public void usesCorrectExpressionsForCollectionAndCollation() { + + BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity<>( + ClassTypeInformation.from(WithCollectionAndCollationFromSpEL.class)); + entity.setEvaluationContextProvider( + new ExtensionAwareEvaluationContextProvider(Collections.singletonList(new SampleExtension()))); + + assertThat(entity.getCollection()).isEqualTo("collectionName"); + assertThat(entity.getCollation()).isEqualTo(Collation.of("en_US")); + } + @Document("contacts") class Contact {} @@ -307,6 +321,9 @@ public class BasicMongoPersistentEntityUnitTests { @Document(collation = "#{myCollation}") class WithCollationFromSpEL {} + @Document(collection = "#{myProperty}", collation = "#{myCollation}") + class WithCollectionAndCollationFromSpEL {} + @Document(collation = "en_US") class WithSimpleCollation {} @@ -315,7 +332,7 @@ public class BasicMongoPersistentEntityUnitTests { static class SampleExtension implements EvaluationContextExtension { - /* + /* * (non-Javadoc) * @see org.springframework.data.spel.spi.EvaluationContextExtension#getExtensionId() */ @@ -324,7 +341,7 @@ public class BasicMongoPersistentEntityUnitTests { return "sampleExtension"; } - /* + /* * (non-Javadoc) * @see org.springframework.data.spel.spi.EvaluationContextExtension#getProperties() */