33
33
import org .springframework .messaging .support .MessageBuilder ;
34
34
35
35
import static org .junit .Assert .*;
36
- import static org .mockito .Mockito .mock ;
37
- import static org .mockito .Mockito .when ;
36
+ import static org .mockito .Mockito .*;
38
37
39
38
/**
40
- * Unit tests for
41
- * {@link org.springframework.messaging.handler.annotation.support.MessageMethodArgumentResolver}.
39
+ * Unit tests for {@link MessageMethodArgumentResolver}.
42
40
*
43
41
* @author Stephane Nicoll
42
+ * @author Juergen Hoeller
44
43
*/
45
44
public class MessageMethodArgumentResolverTests {
46
45
@@ -56,10 +55,8 @@ public class MessageMethodArgumentResolverTests {
56
55
57
56
@ Before
58
57
public void setup () throws Exception {
59
-
60
58
this .method = MessageMethodArgumentResolverTests .class .getDeclaredMethod ("handle" ,
61
- Message .class , Message .class , Message .class , Message .class ,
62
- ErrorMessage .class );
59
+ Message .class , Message .class , Message .class , Message .class , ErrorMessage .class );
63
60
64
61
this .converter = mock (MessageConverter .class );
65
62
this .resolver = new MessageMethodArgumentResolver (this .converter );
@@ -85,7 +82,7 @@ public void resolveWithMatchingPayloadType() throws Exception {
85
82
}
86
83
87
84
@ Test
88
- public void resolveWithPayloadTypeSubClass () throws Exception {
85
+ public void resolveWithPayloadTypeSubclass () throws Exception {
89
86
Message <Integer > message = MessageBuilder .withPayload (123 ).build ();
90
87
MethodParameter parameter = new MethodParameter (this .method , 2 );
91
88
@@ -155,7 +152,7 @@ public void resolveWithPayloadTypeOutOfBound() throws Exception {
155
152
}
156
153
157
154
@ Test
158
- public void resolveMessageSubClassMatch () throws Exception {
155
+ public void resolveMessageSubclassMatch () throws Exception {
159
156
ErrorMessage message = new ErrorMessage (new UnsupportedOperationException ());
160
157
MethodParameter parameter = new MethodParameter (this .method , 4 );
161
158
@@ -164,7 +161,7 @@ public void resolveMessageSubClassMatch() throws Exception {
164
161
}
165
162
166
163
@ Test
167
- public void resolveWithMessageSubClassAndPayloadWildcard () throws Exception {
164
+ public void resolveWithMessageSubclassAndPayloadWildcard () throws Exception {
168
165
ErrorMessage message = new ErrorMessage (new UnsupportedOperationException ());
169
166
MethodParameter parameter = new MethodParameter (this .method , 0 );
170
167
@@ -185,6 +182,46 @@ public void resolveWithWrongMessageType() throws Exception {
185
182
assertSame (message , this .resolver .resolveArgument (parameter , message ));
186
183
}
187
184
185
+ @ Test
186
+ public void resolveWithPayloadTypeAsWildcardAndNoConverter () throws Exception {
187
+ this .resolver = new MessageMethodArgumentResolver ();
188
+
189
+ Message <String > message = MessageBuilder .withPayload ("test" ).build ();
190
+ MethodParameter parameter = new MethodParameter (this .method , 0 );
191
+
192
+ assertTrue (this .resolver .supportsParameter (parameter ));
193
+ assertSame (message , this .resolver .resolveArgument (parameter , message ));
194
+ }
195
+
196
+ @ Test
197
+ public void resolveWithConversionNeededButNoConverter () throws Exception {
198
+ this .resolver = new MessageMethodArgumentResolver ();
199
+
200
+ Message <String > message = MessageBuilder .withPayload ("test" ).build ();
201
+ MethodParameter parameter = new MethodParameter (this .method , 1 );
202
+
203
+ assertTrue (this .resolver .supportsParameter (parameter ));
204
+ thrown .expect (MessageConversionException .class );
205
+ thrown .expectMessage (Integer .class .getName ());
206
+ thrown .expectMessage (String .class .getName ());
207
+ this .resolver .resolveArgument (parameter , message );
208
+ }
209
+
210
+ @ Test
211
+ public void resolveWithConversionEmptyPayloadButNoConverter () throws Exception {
212
+ this .resolver = new MessageMethodArgumentResolver ();
213
+
214
+ Message <String > message = MessageBuilder .withPayload ("" ).build ();
215
+ MethodParameter parameter = new MethodParameter (this .method , 1 );
216
+
217
+ assertTrue (this .resolver .supportsParameter (parameter ));
218
+ thrown .expect (MessageConversionException .class );
219
+ thrown .expectMessage ("the payload is empty" );
220
+ thrown .expectMessage (Integer .class .getName ());
221
+ thrown .expectMessage (String .class .getName ());
222
+ this .resolver .resolveArgument (parameter , message );
223
+ }
224
+
188
225
189
226
@ SuppressWarnings ("unused" )
190
227
private void handle (
0 commit comments