33
33
import org .springframework .context .annotation .Bean ;
34
34
import org .springframework .context .annotation .Configuration ;
35
35
import org .springframework .context .support .ResourceBundleMessageSource ;
36
+ import org .springframework .core .MethodParameter ;
36
37
import org .springframework .http .MediaType ;
37
38
import org .springframework .web .reactive .BindingContext ;
38
39
import org .springframework .web .reactive .HandlerResult ;
44
45
import org .springframework .web .testfixture .server .MockServerWebExchange ;
45
46
46
47
import static org .assertj .core .api .AssertionsForClassTypes .assertThat ;
47
- import static org .junit .jupiter .api .Named .named ;
48
48
import static org .springframework .web .testfixture .method .ResolvableMethod .on ;
49
49
50
50
/**
51
- * Tests for multi-view rendering through {@link ViewResolutionResultHandler}.
51
+ * Tests for {@link Fragment} rendering through {@link ViewResolutionResultHandler}.
52
52
*
53
53
* @author Rossen Stoyanchev
54
54
*/
55
- public class FragmentResolutionResultHandlerTests {
56
-
57
- static Stream <Arguments > arguments () {
58
- Fragment f1 = Fragment .create ("fragment1" , Map .of ("foo" , "Foo" ));
59
- Fragment f2 = Fragment .create ("fragment2" , Map .of ("bar" , "Bar" ));
60
- return Stream .of (
61
- Arguments .of (named ("Flux" ,
62
- FragmentRendering .fromPublisher (Flux .just (f1 , f2 ).subscribeOn (Schedulers .boundedElastic ()))
63
- .headers (headers -> headers .setContentType (MediaType .TEXT_HTML ))
64
- .build ())),
65
- Arguments .of (named ("List" ,
66
- FragmentRendering .fromCollection (List .of (f1 , f2 ))
67
- .headers (headers -> headers .setContentType (MediaType .TEXT_HTML ))
68
- .build ()))
69
- );}
55
+ public class FragmentViewResolutionResultHandlerTests {
56
+
57
+ static Stream <Arguments > arguments () {
58
+ Fragment f1 = Fragment .create ("fragment1" , Map .of ("foo" , "Foo" ));
59
+ Fragment f2 = Fragment .create ("fragment2" , Map .of ("bar" , "Bar" ));
60
+ return Stream .of (
61
+ Arguments .of (
62
+ FragmentRendering .fromPublisher (Flux .just (f1 , f2 ).subscribeOn (Schedulers .boundedElastic ()))
63
+ .headers (headers -> headers .setContentType (MediaType .TEXT_HTML ))
64
+ .build (),
65
+ on (Handler .class ).resolveReturnType (FragmentRendering .class )),
66
+ Arguments .of (
67
+ FragmentRendering .fromCollection (List .of (f1 , f2 ))
68
+ .headers (headers -> headers .setContentType (MediaType .TEXT_HTML ))
69
+ .build (),
70
+ on (Handler .class ).resolveReturnType (FragmentRendering .class )),
71
+ Arguments .of (
72
+ Flux .just (f1 , f2 ).subscribeOn (Schedulers .boundedElastic ()),
73
+ on (Handler .class ).resolveReturnType (Flux .class , Fragment .class )),
74
+ Arguments .of (
75
+ List .of (f1 , f2 ),
76
+ on (Handler .class ).resolveReturnType (List .class , Fragment .class )));
77
+ }
70
78
71
79
72
80
@ ParameterizedTest
73
81
@ MethodSource ("arguments" )
74
- void render (FragmentRendering rendering ) {
75
-
82
+ void render (Object returnValue , MethodParameter parameter ) {
76
83
Locale locale = Locale .ENGLISH ;
77
84
MockServerHttpRequest request = MockServerHttpRequest .get ("/" ).acceptLanguageAsLocales (locale ).build ();
78
85
MockServerWebExchange exchange = MockServerWebExchange .from (request );
79
86
80
- HandlerResult result = new HandlerResult (
81
- new Handler (), rendering , on (Handler .class ).resolveReturnType (FragmentRendering .class ),
82
- new BindingContext ());
87
+ HandlerResult result = new HandlerResult (new Handler (), returnValue , parameter , new BindingContext ());
83
88
84
89
String body = initHandler ().handleResult (exchange , result )
85
90
.then (Mono .defer (() -> exchange .getResponse ().getBodyAsString ()))
@@ -102,10 +107,15 @@ private ViewResolutionResultHandler initHandler() {
102
107
}
103
108
104
109
110
+ @ SuppressWarnings ("unused" )
105
111
private static class Handler {
106
112
107
113
FragmentRendering rendering () { return null ; }
108
114
115
+ Flux <Fragment > fragmentFlux () { return null ; }
116
+
117
+ List <Fragment > fragmentList () { return null ; }
118
+
109
119
}
110
120
111
121
0 commit comments