16
16
package org .springframework .geode .data .json .converter .support ;
17
17
18
18
import 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 ;
19
21
import static org .mockito .ArgumentMatchers .any ;
20
22
import static org .mockito .ArgumentMatchers .anyBoolean ;
21
23
import static org .mockito .ArgumentMatchers .eq ;
34
36
import com .fasterxml .jackson .databind .MapperFeature ;
35
37
import com .fasterxml .jackson .databind .ObjectMapper ;
36
38
import com .fasterxml .jackson .databind .SerializationFeature ;
39
+ import com .fasterxml .jackson .databind .json .JsonMapper ;
37
40
38
41
import org .junit .Test ;
39
42
@@ -73,27 +76,21 @@ public void convertObjectToJson() throws JsonProcessingException {
73
76
verify (mockObjectMapper , times (1 )).writeValueAsString (eq (source ));
74
77
}
75
78
76
- @ Test (expected = IllegalArgumentException .class )
79
+ @ Test
80
+ @ SuppressWarnings ("all" )
77
81
public void convertNullThrowsIllegalArgumentException () {
78
82
79
83
JacksonObjectToJsonConverter converter = spy (new JacksonObjectToJsonConverter ());
80
84
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 ();
88
89
89
- throw expected ;
90
- }
91
- finally {
92
- verify (converter , never ()).newObjectMapper (any ());
93
- }
90
+ verify (converter , never ()).newObjectMapper (any ());
94
91
}
95
92
96
- @ Test ( expected = ConversionFailedException . class )
93
+ @ Test
97
94
public void convertHandlesJsonProcessingException () throws JsonProcessingException {
98
95
99
96
Object source = new Object ();
@@ -106,69 +103,61 @@ public void convertHandlesJsonProcessingException() throws JsonProcessingExcepti
106
103
doThrow (new JsonGenerationException ("TEST" , (JsonGenerator ) null ))
107
104
.when (mockObjectMapper ).writeValueAsString (any ());
108
105
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 ));
124
114
}
125
115
126
- @ Test (expected = IllegalArgumentException .class )
116
+ @ Test
117
+ @ SuppressWarnings ("all" )
127
118
public void newObjectMapperWithNullTarget () {
128
119
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 ();
139
124
}
140
125
141
126
@ Test
142
127
public void newObjectMapperIsConfiguredCorrectly () {
143
128
144
129
Object target = Customer .newCustomer (1L , "Jon Doe" );
145
130
146
- ObjectMapper mockObjectMapper = mock (ObjectMapper .class );
131
+ JsonMapper mockJsonMapper = mock (JsonMapper .class );
132
+
133
+ JsonMapper .Builder mockJsonMapperBuilder = mock (JsonMapper .Builder .class );
147
134
148
135
JacksonObjectToJsonConverter converter = spy (new JacksonObjectToJsonConverter ());
149
136
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 ();
156
144
157
145
ObjectMapper objectMapper = converter .newObjectMapper (target );
158
146
159
147
assertThat (objectMapper ).isNotNull ();
160
148
161
- verify (converter , times (1 )).newObjectMapper ();
149
+ verify (converter , times (1 )).newJsonMapperBuilder ();
162
150
163
- verify (mockObjectMapper , times (1 ))
151
+ verify (mockJsonMapperBuilder , times (1 ))
164
152
.addMixIn (eq (target .getClass ()), eq (JacksonObjectToJsonConverter .ObjectTypeMetadataMixin .class ));
165
- verify (mockObjectMapper , times (1 ))
153
+ verify (mockJsonMapperBuilder , times (1 ))
166
154
.configure (eq (JsonGenerator .Feature .WRITE_BIGDECIMAL_AS_PLAIN ), eq (true ));
167
- verify (mockObjectMapper , times (1 ))
155
+ verify (mockJsonMapperBuilder , times (1 ))
168
156
.configure (eq (MapperFeature .SORT_PROPERTIES_ALPHABETICALLY ), eq (true ));
169
- verify (mockObjectMapper , times (1 ))
157
+ verify (mockJsonMapperBuilder , times (1 ))
170
158
.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 );
173
162
}
174
163
}
0 commit comments