Updates to WebMVC fragment rendering API
See gh-33162
This commit is contained in:
@@ -17,6 +17,8 @@
|
||||
package org.springframework.web.servlet.mvc.method.annotation;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -26,7 +28,9 @@ import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.context.request.ServletWebRequest;
|
||||
import org.springframework.web.method.support.ModelAndViewContainer;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.springframework.web.servlet.SmartView;
|
||||
import org.springframework.web.servlet.mvc.support.RedirectAttributesModelMap;
|
||||
import org.springframework.web.servlet.view.FragmentsRendering;
|
||||
import org.springframework.web.servlet.view.RedirectView;
|
||||
import org.springframework.web.testfixture.servlet.MockHttpServletRequest;
|
||||
|
||||
@@ -60,6 +64,9 @@ class ModelAndViewMethodReturnValueHandlerTests {
|
||||
@Test
|
||||
void supportsReturnType() throws Exception {
|
||||
assertThat(handler.supportsReturnType(returnParamModelAndView)).isTrue();
|
||||
assertThat(handler.supportsReturnType(getReturnValueParam("fragmentsRendering"))).isTrue();
|
||||
assertThat(handler.supportsReturnType(getReturnValueParam("fragmentsCollection"))).isTrue();
|
||||
|
||||
assertThat(handler.supportsReturnType(getReturnValueParam("viewName"))).isFalse();
|
||||
}
|
||||
|
||||
@@ -81,6 +88,22 @@ class ModelAndViewMethodReturnValueHandlerTests {
|
||||
assertThat(mavContainer.getModel().get("attrName")).isEqualTo("attrValue");
|
||||
}
|
||||
|
||||
@Test
|
||||
void handleFragmentsRendering() throws Exception {
|
||||
FragmentsRendering rendering = FragmentsRendering.with("viewName").build();
|
||||
|
||||
handler.handleReturnValue(rendering, returnParamModelAndView, mavContainer, webRequest);
|
||||
assertThat(mavContainer.getView()).isInstanceOf(SmartView.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void handleFragmentsCollection() throws Exception {
|
||||
Collection<ModelAndView> fragments = List.of(new ModelAndView("viewName"));
|
||||
|
||||
handler.handleReturnValue(fragments, returnParamModelAndView, mavContainer, webRequest);
|
||||
assertThat(mavContainer.getView()).isInstanceOf(SmartView.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void handleNull() throws Exception {
|
||||
handler.handleReturnValue(null, returnParamModelAndView, mavContainer, webRequest);
|
||||
@@ -173,4 +196,14 @@ class ModelAndViewMethodReturnValueHandlerTests {
|
||||
return null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
FragmentsRendering fragmentsRendering() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
Collection<ModelAndView> fragmentsCollection() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -38,12 +38,12 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.jupiter.api.condition.JRE.JAVA_21;
|
||||
|
||||
/**
|
||||
* Tests for rendering through {@link FragmentsView}.
|
||||
* Tests for rendering through {@link DefaultFragmentsRendering}.
|
||||
*
|
||||
* @author Rossen Stoyanchev
|
||||
*/
|
||||
@DisabledForJreRange(min = JAVA_21, disabledReason = "Kotlin doesn't support Java 21+ yet")
|
||||
public class FragmentsViewTests {
|
||||
public class DefaultFragmentsRenderingTests {
|
||||
|
||||
|
||||
@Test
|
||||
@@ -59,7 +59,7 @@ public class FragmentsViewTests {
|
||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||
|
||||
FragmentsView view = FragmentsView.create(List.of(
|
||||
DefaultFragmentsRendering view = new DefaultFragmentsRendering(List.of(
|
||||
new ModelAndView("fragment1", Map.of("foo", "Foo")),
|
||||
new ModelAndView("fragment2", Map.of("bar", "Bar"))));
|
||||
|
||||
Reference in New Issue
Block a user