From 9124907b2981b844f0c7db59bf69db88e330f44b Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Sun, 19 Jul 2015 19:29:12 +0200 Subject: [PATCH] Polish and simplify Jackson2ObjectMapperFactoryBeanTests --- .../Jackson2ObjectMapperFactoryBeanTests.java | 169 ++++++++---------- 1 file changed, 72 insertions(+), 97 deletions(-) diff --git a/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBeanTests.java b/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBeanTests.java index ab8ba2a0d3e..005623f6d50 100644 --- a/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBeanTests.java +++ b/spring-web/src/test/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBeanTests.java @@ -28,8 +28,15 @@ import java.util.Locale; import java.util.Map; import java.util.TimeZone; +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; + +import org.junit.Test; + +import org.springframework.beans.FatalBeanException; + import com.fasterxml.jackson.annotation.JsonFilter; -import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; @@ -57,44 +64,34 @@ import com.fasterxml.jackson.databind.ser.std.ClassSerializer; import com.fasterxml.jackson.databind.ser.std.NumberSerializer; import com.fasterxml.jackson.databind.type.SimpleType; import com.fasterxml.jackson.dataformat.xml.XmlMapper; -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import org.junit.Before; -import org.junit.Test; - -import org.springframework.beans.FatalBeanException; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; /** - * Test cases for {@link Jackson2ObjectMapperFactoryBean} class. + * Test cases for {@link Jackson2ObjectMapperFactoryBean}. * - * @author Dmitry Katsubo + * @author Dmitry Katsubo * @author Brian Clozel * @author Sebastien Deleuze + * @author Sam Brannen */ public class Jackson2ObjectMapperFactoryBeanTests { private static final String DATE_FORMAT = "yyyy-MM-dd"; - private Jackson2ObjectMapperFactoryBean factory; + private final SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); - - @Before - public void setUp() { - factory = new Jackson2ObjectMapperFactoryBean(); - } + private final Jackson2ObjectMapperFactoryBean factory = new Jackson2ObjectMapperFactoryBean(); @Test - public void settersWithNullValues() { - // Should not crash: - factory.setSerializers((JsonSerializer[]) null); - factory.setSerializersByType(null); - factory.setDeserializersByType(null); - factory.setFeaturesToEnable((Object[]) null); - factory.setFeaturesToDisable((Object[]) null); + public void settingNullValuesShouldNotThrowExceptions() { + this.factory.setSerializers((JsonSerializer[]) null); + this.factory.setSerializersByType(null); + this.factory.setDeserializersByType(null); + this.factory.setFeaturesToEnable((Object[]) null); + this.factory.setFeaturesToDisable((Object[]) null); } @Test(expected = FatalBeanException.class) @@ -121,63 +118,56 @@ public class Jackson2ObjectMapperFactoryBeanTests { assertFalse(objectMapper.getDeserializationConfig().isEnabled(MapperFeature.DEFAULT_VIEW_INCLUSION)); assertFalse(objectMapper.getSerializationConfig().isEnabled(SerializationFeature.FAIL_ON_EMPTY_BEANS)); assertTrue(objectMapper.getSerializationConfig().isEnabled(SerializationFeature.INDENT_OUTPUT)); - assertTrue(objectMapper.getSerializationConfig().getSerializationInclusion() == JsonInclude.Include.ALWAYS); + assertSame(Include.ALWAYS, objectMapper.getSerializationConfig().getSerializationInclusion()); } @Test - public void setNotNullSerializationInclusion() { - factory.afterPropertiesSet(); - assertTrue(factory.getObject().getSerializationConfig().getSerializationInclusion() == JsonInclude.Include.ALWAYS); - - factory.setSerializationInclusion(JsonInclude.Include.NON_NULL); - factory.afterPropertiesSet(); - assertTrue(factory.getObject().getSerializationConfig().getSerializationInclusion() == JsonInclude.Include.NON_NULL); + public void defaultSerializationInclusion() { + this.factory.afterPropertiesSet(); + assertSame(Include.ALWAYS, this.factory.getObject().getSerializationConfig().getSerializationInclusion()); } @Test - public void setNotDefaultSerializationInclusion() { - factory.afterPropertiesSet(); - assertTrue(factory.getObject().getSerializationConfig().getSerializationInclusion() == JsonInclude.Include.ALWAYS); - - factory.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT); - factory.afterPropertiesSet(); - assertTrue(factory.getObject().getSerializationConfig().getSerializationInclusion() == JsonInclude.Include.NON_DEFAULT); + public void nonNullSerializationInclusion() { + this.factory.setSerializationInclusion(Include.NON_NULL); + this.factory.afterPropertiesSet(); + assertSame(Include.NON_NULL, this.factory.getObject().getSerializationConfig().getSerializationInclusion()); } @Test - public void setNotEmptySerializationInclusion() { - factory.afterPropertiesSet(); - assertTrue(factory.getObject().getSerializationConfig().getSerializationInclusion() == JsonInclude.Include.ALWAYS); - - factory.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); - factory.afterPropertiesSet(); - assertTrue(factory.getObject().getSerializationConfig().getSerializationInclusion() == JsonInclude.Include.NON_EMPTY); + public void nonDefaultSerializationInclusion() { + this.factory.setSerializationInclusion(Include.NON_DEFAULT); + this.factory.afterPropertiesSet(); + assertSame(Include.NON_DEFAULT, this.factory.getObject().getSerializationConfig().getSerializationInclusion()); } @Test - public void dateTimeFormatSetter() { - SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); + public void nonEmptySerializationInclusion() { + this.factory.setSerializationInclusion(Include.NON_EMPTY); + this.factory.afterPropertiesSet(); + assertSame(Include.NON_EMPTY, this.factory.getObject().getSerializationConfig().getSerializationInclusion()); + } - this.factory.setDateFormat(dateFormat); + @Test + public void setDateFormat() { + this.factory.setDateFormat(this.dateFormat); this.factory.afterPropertiesSet(); - assertEquals(dateFormat, this.factory.getObject().getSerializationConfig().getDateFormat()); - assertEquals(dateFormat, this.factory.getObject().getDeserializationConfig().getDateFormat()); + assertEquals(this.dateFormat, this.factory.getObject().getSerializationConfig().getDateFormat()); + assertEquals(this.dateFormat, this.factory.getObject().getDeserializationConfig().getDateFormat()); } @Test - public void simpleDateFormatStringSetter() { - SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); - + public void setSimpleDateFormat() { this.factory.setSimpleDateFormat(DATE_FORMAT); this.factory.afterPropertiesSet(); - assertEquals(dateFormat, this.factory.getObject().getSerializationConfig().getDateFormat()); - assertEquals(dateFormat, this.factory.getObject().getDeserializationConfig().getDateFormat()); + assertEquals(this.dateFormat, this.factory.getObject().getSerializationConfig().getDateFormat()); + assertEquals(this.dateFormat, this.factory.getObject().getDeserializationConfig().getDateFormat()); } @Test - public void localeSetter() { + public void setLocale() { this.factory.setLocale(Locale.FRENCH); this.factory.afterPropertiesSet(); @@ -186,7 +176,7 @@ public class Jackson2ObjectMapperFactoryBeanTests { } @Test - public void timeZoneSetter() { + public void setTimeZone() { TimeZone timeZone = TimeZone.getTimeZone("Europe/Paris"); this.factory.setTimeZone(timeZone); @@ -197,22 +187,8 @@ public class Jackson2ObjectMapperFactoryBeanTests { } @Test - public void timeZoneStringSetter() { - String zoneId = "Europe/Paris"; - - this.factory.setTimeZone(TimeZone.getTimeZone(zoneId)); - this.factory.afterPropertiesSet(); - - TimeZone timeZone = TimeZone.getTimeZone(zoneId); - assertEquals(timeZone, this.factory.getObject().getSerializationConfig().getTimeZone()); - assertEquals(timeZone, this.factory.getObject().getDeserializationConfig().getTimeZone()); - } - - @Test - public void wrongTimeZoneStringSetter() { - String zoneId = "foo"; - - this.factory.setTimeZone(TimeZone.getTimeZone(zoneId)); + public void setTimeZoneWithInvalidZoneId() { + this.factory.setTimeZone(TimeZone.getTimeZone("bogusZoneId")); this.factory.afterPropertiesSet(); TimeZone timeZone = TimeZone.getTimeZone("GMT"); @@ -222,16 +198,16 @@ public class Jackson2ObjectMapperFactoryBeanTests { @Test public void setModules() { - NumberSerializer serializer1 = new NumberSerializer(Integer.class); + NumberSerializer serializer = new NumberSerializer(Integer.class); SimpleModule module = new SimpleModule(); - module.addSerializer(Integer.class, serializer1); + module.addSerializer(Integer.class, serializer); this.factory.setModules(Arrays.asList(new Module[]{module})); this.factory.afterPropertiesSet(); ObjectMapper objectMapper = this.factory.getObject(); Serializers serializers = getSerializerFactoryConfig(objectMapper).serializers().iterator().next(); - assertTrue(serializers.findSerializer(null, SimpleType.construct(Integer.class), null) == serializer1); + assertSame(serializer, serializers.findSerializer(null, SimpleType.construct(Integer.class), null)); } @Test @@ -281,7 +257,7 @@ public class Jackson2ObjectMapperFactoryBeanTests { @Test public void undefinedObjectType() { - assertEquals(null, this.factory.getObjectType()); + assertNull(this.factory.getObjectType()); } private static SerializerFactoryConfig getSerializerFactoryConfig(ObjectMapper objectMapper) { @@ -318,7 +294,7 @@ public class Jackson2ObjectMapperFactoryBeanTests { } @Test - public void filters() throws JsonProcessingException { + public void setFilters() throws JsonProcessingException { this.factory.setFilters(new SimpleFilterProvider().setFailOnUnknownId(false)); this.factory.afterPropertiesSet(); ObjectMapper objectMapper = this.factory.getObject(); @@ -334,7 +310,7 @@ public class Jackson2ObjectMapperFactoryBeanTests { NopAnnotationIntrospector annotationIntrospector = NopAnnotationIntrospector.instance; ObjectMapper objectMapper = new ObjectMapper(); - factory.setObjectMapper(objectMapper); + this.factory.setObjectMapper(objectMapper); assertTrue(this.factory.isSingleton()); assertEquals(ObjectMapper.class, this.factory.getObjectType()); @@ -344,11 +320,12 @@ public class Jackson2ObjectMapperFactoryBeanTests { JsonSerializer> serializer1 = new ClassSerializer(); JsonSerializer serializer2 = new NumberSerializer(Integer.class); - factory.setModules(new ArrayList<>()); // Disable well-known modules detection - factory.setSerializers(serializer1); - factory.setSerializersByType(Collections., JsonSerializer> singletonMap(Boolean.class, serializer2)); - factory.setDeserializersByType(deserializers); - factory.setAnnotationIntrospector(annotationIntrospector); + // Disable well-known modules detection + this.factory.setModules(new ArrayList<>()); + this.factory.setSerializers(serializer1); + this.factory.setSerializersByType(Collections.singletonMap(Boolean.class, serializer2)); + this.factory.setDeserializersByType(deserializers); + this.factory.setAnnotationIntrospector(annotationIntrospector); this.factory.setFeaturesToEnable(SerializationFeature.FAIL_ON_EMPTY_BEANS, DeserializationFeature.UNWRAP_ROOT_VALUE, @@ -363,20 +340,20 @@ public class Jackson2ObjectMapperFactoryBeanTests { assertFalse(getSerializerFactoryConfig(objectMapper).hasSerializers()); assertFalse(getDeserializerFactoryConfig(objectMapper).hasDeserializers()); - this.factory.setSerializationInclusion(JsonInclude.Include.NON_NULL); + this.factory.setSerializationInclusion(Include.NON_NULL); this.factory.afterPropertiesSet(); - assertTrue(objectMapper == this.factory.getObject()); + assertSame(objectMapper, this.factory.getObject()); assertTrue(getSerializerFactoryConfig(objectMapper).hasSerializers()); assertTrue(getDeserializerFactoryConfig(objectMapper).hasDeserializers()); Serializers serializers = getSerializerFactoryConfig(objectMapper).serializers().iterator().next(); - assertTrue(serializers.findSerializer(null, SimpleType.construct(Class.class), null) == serializer1); - assertTrue(serializers.findSerializer(null, SimpleType.construct(Boolean.class), null) == serializer2); + assertSame(serializer1, serializers.findSerializer(null, SimpleType.construct(Class.class), null)); + assertSame(serializer2, serializers.findSerializer(null, SimpleType.construct(Boolean.class), null)); assertNull(serializers.findSerializer(null, SimpleType.construct(Number.class), null)); - assertTrue(annotationIntrospector == objectMapper.getSerializationConfig().getAnnotationIntrospector()); - assertTrue(annotationIntrospector == objectMapper.getDeserializationConfig().getAnnotationIntrospector()); + assertSame(annotationIntrospector, objectMapper.getSerializationConfig().getAnnotationIntrospector()); + assertSame(annotationIntrospector, objectMapper.getDeserializationConfig().getAnnotationIntrospector()); assertTrue(objectMapper.getSerializationConfig().isEnabled(SerializationFeature.FAIL_ON_EMPTY_BEANS)); assertTrue(objectMapper.getDeserializationConfig().isEnabled(DeserializationFeature.UNWRAP_ROOT_VALUE)); @@ -389,11 +366,11 @@ public class Jackson2ObjectMapperFactoryBeanTests { assertFalse(objectMapper.getDeserializationConfig().isEnabled(MapperFeature.AUTO_DETECT_FIELDS)); assertFalse(objectMapper.getFactory().isEnabled(JsonParser.Feature.AUTO_CLOSE_SOURCE)); assertFalse(objectMapper.getFactory().isEnabled(JsonGenerator.Feature.QUOTE_FIELD_NAMES)); - assertTrue(objectMapper.getSerializationConfig().getSerializationInclusion() == JsonInclude.Include.NON_NULL); + assertSame(Include.NON_NULL, objectMapper.getSerializationConfig().getSerializationInclusion()); } @Test - public void xmlMapper() { + public void setObjectMapper() { this.factory.setObjectMapper(new XmlMapper()); this.factory.afterPropertiesSet(); @@ -403,7 +380,7 @@ public class Jackson2ObjectMapperFactoryBeanTests { } @Test - public void createXmlMapper() { + public void setCreateXmlMapper() { this.factory.setCreateXmlMapper(true); this.factory.afterPropertiesSet(); @@ -448,17 +425,15 @@ public class Jackson2ObjectMapperFactoryBeanTests { @JsonFilter("myJacksonFilter") public static class JacksonFilteredBean { - public JacksonFilteredBean() { - } + private String property1; + private String property2; + public JacksonFilteredBean(String property1, String property2) { this.property1 = property1; this.property2 = property2; } - private String property1; - private String property2; - public String getProperty1() { return property1; }