From ae0e2403346fbad63dc831038ee9096bcbf96dde Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 13 Sep 2021 14:25:17 +0200 Subject: [PATCH] Move and add tests to UpdateMapper. Also update author information. Original Pull Request: #3815 --- .../core/convert/QueryMapperUnitTests.java | 24 -------- .../core/convert/UpdateMapperUnitTests.java | 55 +++++++++++++++++++ 2 files changed, 55 insertions(+), 24 deletions(-) diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java index 7ddd8a9c7..2b1be5cb4 100755 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/QueryMapperUnitTests.java @@ -1327,25 +1327,6 @@ public class QueryMapperUnitTests { org.bson.Document mappedFields = mapper.getMappedFields(new org.bson.Document("id", 1), context.getPersistentEntity(WithStringId.class)); assertThat(mappedFields).containsEntry("_id", 1); } - - @Test - void mapNestedStringFieldCorrectly() { - Update update = new Update(); - update.set("levelOne.a.b.d", "e"); - org.bson.Document document = mapper.getMappedObject(update.getUpdateObject(), - context.getPersistentEntity(EntityWithNestedMap.class)); - assertThat(document).isEqualTo(new org.bson.Document("$set",new org.bson.Document("levelOne.a.b.d","e"))); - } - - @Test - void mapNestedIntegerFieldCorrectly() { - Update update = new Update(); - update.set("levelOne.0.1.3", "4"); - org.bson.Document document = mapper.getMappedObject(update.getUpdateObject(), - context.getPersistentEntity(EntityWithNestedMap.class)); - assertThat(document).isEqualTo(new org.bson.Document("$set",new org.bson.Document("levelOne.0.1.3","4"))); - } - @Test // GH-3783 void retainsId$InWithStringArray() { @@ -1534,11 +1515,6 @@ public class QueryMapperUnitTests { static class EntityWithComplexValueTypeList { List list; } - - static class EntityWithNestedMap { - Map>> levelOne; - } - static class WithExplicitTargetTypes { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/UpdateMapperUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/UpdateMapperUnitTests.java index cf9bf3cdb..111567bea 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/UpdateMapperUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/UpdateMapperUnitTests.java @@ -67,6 +67,7 @@ import com.mongodb.DBRef; * @author Mark Paluch * @author Pavel Vodrazka * @author David Julia + * @author Divya Srivastava */ @ExtendWith(MockitoExtension.class) class UpdateMapperUnitTests { @@ -1200,6 +1201,56 @@ class UpdateMapperUnitTests { assertThat(mappedUpdate).isEqualTo("{\"$set\": {\"map.class\": \"value\"}}"); } + @Test // GH-3775 + void mapNestedStringFieldCorrectly() { + + Update update = new Update().set("levelOne.a.b.d", "e"); + Document mappedUpdate = mapper.getMappedObject(update.getUpdateObject(), + context.getPersistentEntity(EntityWithNestedMap.class)); + + assertThat(mappedUpdate).isEqualTo(new org.bson.Document("$set",new org.bson.Document("levelOne.a.b.d","e"))); + } + + @Test // GH-3775 + void mapNestedIntegerFieldCorrectly() { + + Update update = new Update().set("levelOne.0.1.3", "4"); + Document mappedUpdate = mapper.getMappedObject(update.getUpdateObject(), + context.getPersistentEntity(EntityWithNestedMap.class)); + + assertThat(mappedUpdate).isEqualTo(new org.bson.Document("$set",new org.bson.Document("levelOne.0.1.3","4"))); + } + + @Test // GH-3775 + void mapNestedMixedStringIntegerFieldCorrectly() { + + Update update = new Update().set("levelOne.0.1.c", "4"); + Document mappedUpdate = mapper.getMappedObject(update.getUpdateObject(), + context.getPersistentEntity(EntityWithNestedMap.class)); + + assertThat(mappedUpdate).isEqualTo(new org.bson.Document("$set",new org.bson.Document("levelOne.0.1.c","4"))); + } + + @Test // GH-3775 + void mapNestedMixedStringIntegerWithStartNumberFieldCorrectly() { + + Update update = new Update().set("levelOne.0a.1b.3c", "4"); + Document mappedUpdate = mapper.getMappedObject(update.getUpdateObject(), + context.getPersistentEntity(EntityWithNestedMap.class)); + + assertThat(mappedUpdate).isEqualTo(new org.bson.Document("$set",new org.bson.Document("levelOne.0a.1b.3c","4"))); + } + + @Test // GH-3688 + void multipleKeysStartingWithANumberInNestedPath() { + + Update update = new Update().set("intKeyedMap.1a.map.0b", "testing"); + Document mappedUpdate = mapper.getMappedObject(update.getUpdateObject(), + context.getPersistentEntity(EntityWithIntKeyedMap.class)); + + assertThat(mappedUpdate).isEqualTo("{\"$set\": {\"intKeyedMap.1a.map.0b\": \"testing\"}}"); + } + static class DomainTypeWrappingConcreteyTypeHavingListOfInterfaceTypeAttributes { ListModelWrapper concreteTypeWithListAttributeOfInterfaceType; } @@ -1566,4 +1617,8 @@ class UpdateMapperUnitTests { String transientValue; } + static class EntityWithNestedMap { + Map>> levelOne; + } + }