1616package org .springframework .geode .data .json .converter .support ;
1717
1818import static org .assertj .core .api .Assertions .assertThat ;
19+ import static org .assertj .core .api .Assertions .assertThatExceptionOfType ;
20+ import static org .assertj .core .api .Assertions .assertThatIllegalArgumentException ;
1921import static org .mockito .ArgumentMatchers .any ;
2022import static org .mockito .ArgumentMatchers .anyBoolean ;
2123import static org .mockito .ArgumentMatchers .eq ;
3436import com .fasterxml .jackson .databind .MapperFeature ;
3537import com .fasterxml .jackson .databind .ObjectMapper ;
3638import com .fasterxml .jackson .databind .SerializationFeature ;
39+ import com .fasterxml .jackson .databind .json .JsonMapper ;
3740
3841import org .junit .Test ;
3942
@@ -73,27 +76,21 @@ public void convertObjectToJson() throws JsonProcessingException {
7376 verify (mockObjectMapper , times (1 )).writeValueAsString (eq (source ));
7477 }
7578
76- @ Test (expected = IllegalArgumentException .class )
79+ @ Test
80+ @ SuppressWarnings ("all" )
7781 public void convertNullThrowsIllegalArgumentException () {
7882
7983 JacksonObjectToJsonConverter converter = spy (new JacksonObjectToJsonConverter ());
8084
81- try {
82- converter .convert (null );
83- }
84- catch (IllegalArgumentException expected ) {
85-
86- assertThat (expected ).hasMessage ("Source object to convert must not be null" );
87- assertThat (expected ).hasNoCause ();
85+ assertThatIllegalArgumentException ()
86+ .isThrownBy (() -> converter .convert (null ))
87+ .withMessage ("Source object to convert must not be null" )
88+ .withNoCause ();
8889
89- throw expected ;
90- }
91- finally {
92- verify (converter , never ()).newObjectMapper (any ());
93- }
90+ verify (converter , never ()).newObjectMapper (any ());
9491 }
9592
96- @ Test ( expected = ConversionFailedException . class )
93+ @ Test
9794 public void convertHandlesJsonProcessingException () throws JsonProcessingException {
9895
9996 Object source = new Object ();
@@ -106,69 +103,61 @@ public void convertHandlesJsonProcessingException() throws JsonProcessingExcepti
106103 doThrow (new JsonGenerationException ("TEST" , (JsonGenerator ) null ))
107104 .when (mockObjectMapper ).writeValueAsString (any ());
108105
109- try {
110- converter .convert (source );
111- }
112- catch (ConversionFailedException expected ) {
113-
114- assertThat (expected .getCause ()).isInstanceOf (JsonProcessingException .class );
115- assertThat (expected .getCause ()).hasMessage ("TEST" );
116- assertThat (expected .getCause ()).hasNoCause ();
117-
118- throw expected ;
119- }
120- finally {
121- verify (converter , times (1 )).newObjectMapper (eq (source ));
122- verify (mockObjectMapper , times (1 )).writeValueAsString (eq (source ));
123- }
106+ assertThatExceptionOfType (ConversionFailedException .class )
107+ .isThrownBy (() -> converter .convert (source ))
108+ .withMessageStartingWith ("Failed to convert from type [java.lang.Object] to type [java.lang.String] for value" )
109+ .withMessageContaining ("TEST" )
110+ .withCauseInstanceOf (JsonGenerationException .class );
111+
112+ verify (converter , times (1 )).newObjectMapper (eq (source ));
113+ verify (mockObjectMapper , times (1 )).writeValueAsString (eq (source ));
124114 }
125115
126- @ Test (expected = IllegalArgumentException .class )
116+ @ Test
117+ @ SuppressWarnings ("all" )
127118 public void newObjectMapperWithNullTarget () {
128119
129- try {
130- new JacksonObjectToJsonConverter ().newObjectMapper (null );
131- }
132- catch (IllegalArgumentException expected ) {
133-
134- assertThat (expected ).hasMessage ("Target object must not be null" );
135- assertThat (expected ).hasNoCause ();
136-
137- throw expected ;
138- }
120+ assertThatIllegalArgumentException ()
121+ .isThrownBy (() -> new JacksonObjectToJsonConverter ().newObjectMapper (null ))
122+ .withMessage ("Target object must not be null" )
123+ .withNoCause ();
139124 }
140125
141126 @ Test
142127 public void newObjectMapperIsConfiguredCorrectly () {
143128
144129 Object target = Customer .newCustomer (1L , "Jon Doe" );
145130
146- ObjectMapper mockObjectMapper = mock (ObjectMapper .class );
131+ JsonMapper mockJsonMapper = mock (JsonMapper .class );
132+
133+ JsonMapper .Builder mockJsonMapperBuilder = mock (JsonMapper .Builder .class );
147134
148135 JacksonObjectToJsonConverter converter = spy (new JacksonObjectToJsonConverter ());
149136
150- doReturn (mockObjectMapper ).when (converter ).newObjectMapper ();
151- doReturn (mockObjectMapper ).when (mockObjectMapper ).addMixIn (any (), any ());
152- doReturn (mockObjectMapper ).when (mockObjectMapper ).configure (any (JsonGenerator .Feature .class ), anyBoolean ());
153- doReturn (mockObjectMapper ).when (mockObjectMapper ).configure (any (MapperFeature .class ), anyBoolean ());
154- doReturn (mockObjectMapper ).when (mockObjectMapper ).configure (any (SerializationFeature .class ), anyBoolean ());
155- doReturn (mockObjectMapper ).when (mockObjectMapper ).findAndRegisterModules ();
137+ doReturn (mockJsonMapperBuilder ).when (converter ).newJsonMapperBuilder ();
138+ doReturn (mockJsonMapperBuilder ).when (mockJsonMapperBuilder ).addMixIn (any (), any ());
139+ doReturn (mockJsonMapperBuilder ).when (mockJsonMapperBuilder ).configure (any (JsonGenerator .Feature .class ), anyBoolean ());
140+ doReturn (mockJsonMapperBuilder ).when (mockJsonMapperBuilder ).configure (any (MapperFeature .class ), anyBoolean ());
141+ doReturn (mockJsonMapperBuilder ).when (mockJsonMapperBuilder ).configure (any (SerializationFeature .class ), anyBoolean ());
142+ doReturn (mockJsonMapper ).when (mockJsonMapperBuilder ).build ();
143+ doReturn (mockJsonMapper ).when (mockJsonMapper ).findAndRegisterModules ();
156144
157145 ObjectMapper objectMapper = converter .newObjectMapper (target );
158146
159147 assertThat (objectMapper ).isNotNull ();
160148
161- verify (converter , times (1 )).newObjectMapper ();
149+ verify (converter , times (1 )).newJsonMapperBuilder ();
162150
163- verify (mockObjectMapper , times (1 ))
151+ verify (mockJsonMapperBuilder , times (1 ))
164152 .addMixIn (eq (target .getClass ()), eq (JacksonObjectToJsonConverter .ObjectTypeMetadataMixin .class ));
165- verify (mockObjectMapper , times (1 ))
153+ verify (mockJsonMapperBuilder , times (1 ))
166154 .configure (eq (JsonGenerator .Feature .WRITE_BIGDECIMAL_AS_PLAIN ), eq (true ));
167- verify (mockObjectMapper , times (1 ))
155+ verify (mockJsonMapperBuilder , times (1 ))
168156 .configure (eq (MapperFeature .SORT_PROPERTIES_ALPHABETICALLY ), eq (true ));
169- verify (mockObjectMapper , times (1 ))
157+ verify (mockJsonMapperBuilder , times (1 ))
170158 .configure (eq (SerializationFeature .INDENT_OUTPUT ), eq (true ));
171- verify (mockObjectMapper , times (1 )).findAndRegisterModules ();
172- verifyNoMoreInteractions (mockObjectMapper );
159+ verify (mockJsonMapperBuilder , times (1 )).build ();
160+ verify (mockJsonMapper , times (1 )).findAndRegisterModules ();
161+ verifyNoMoreInteractions (mockJsonMapperBuilder , mockJsonMapper );
173162 }
174163}
0 commit comments