From de364c65abf45eaf71cfdb221bcb93c291a00528 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Thu, 27 Mar 2014 08:58:53 +0100 Subject: [PATCH] DATAMONGO-887 - Added unit tests to verify TreeMaps can be converted. --- .../MappingMongoConverterUnitTests.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java index bc5a7fb08..2e9b3e524 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java @@ -37,6 +37,7 @@ import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.SortedMap; +import java.util.TreeMap; import org.bson.types.ObjectId; import org.hamcrest.Matcher; @@ -1487,6 +1488,45 @@ public class MappingMongoConverterUnitTests { assertThat(result.enumMap.get(SampleEnum.FIRST), is("Dave")); } + /** + * @see DATAMONGO-887 + */ + @Test + public void readsTreeMapCorrectly() { + + DBObject person = new BasicDBObject("foo", "Dave"); + DBObject treeMapOfPerson = new BasicDBObject("key", person); + DBObject document = new BasicDBObject("treeMapOfPersons", treeMapOfPerson); + + ClassWithMapProperty result = converter.read(ClassWithMapProperty.class, document); + + assertThat(result.treeMapOfPersons, is(notNullValue())); + assertThat(result.treeMapOfPersons.get("key"), is(notNullValue())); + assertThat(result.treeMapOfPersons.get("key").firstname, is("Dave")); + } + + /** + * @see DATAMONGO-887 + */ + @Test + public void writesTreeMapCorrectly() { + + Person person = new Person(); + person.firstname = "Dave"; + + ClassWithMapProperty source = new ClassWithMapProperty(); + source.treeMapOfPersons = new TreeMap(); + source.treeMapOfPersons.put("key", person); + + DBObject result = new BasicDBObject(); + + converter.write(source, result); + + DBObject map = getAsDBObject(result, "treeMapOfPersons"); + DBObject entry = getAsDBObject(map, "key"); + assertThat(entry.get("foo"), is((Object) "Dave")); + } + static class GenericType { T content; } @@ -1554,6 +1594,7 @@ public class MappingMongoConverterUnitTests { Map mapOfObjects; Map mapOfStrings; Map mapOfPersons; + TreeMap treeMapOfPersons; } static class ClassWithNestedMaps {