/** * Assert whether or not a model attribute is available. * @param mav the ModelAndView to test against (never {@code null}) * @param modelName name of the object to add to the model (never {@code null}) */ public static void assertModelAttributeAvailable(ModelAndView mav, String modelName) { Map<String, Object> model = mav.getModel(); assertTrue("Model attribute with name '" + modelName + "' is not available", model.containsKey(modelName)); }
private BindingResult getBindingResult(ModelAndView mav, String name) { BindingResult result = (BindingResult) mav.getModel().get(BindingResult.MODEL_KEY_PREFIX + name); if (result == null) { fail("No BindingResult for attribute: " + name); } return result; }
/** * Assert a model attribute value. */ public ResultMatcher attribute(final String name, final Object value) { return result -> { ModelAndView mav = getModelAndView(result); assertEquals("Model attribute '" + name + "'", value, mav.getModel().get(name)); }; }
/** * Assert the given model attributes do not exist. */ public ResultMatcher attributeDoesNotExist(final String... names) { return result -> { ModelAndView mav = getModelAndView(result); for (String name : names) { assertTrue("Model attribute '" + name + "' exists", mav.getModel().get(name) == null); } }; }
@Test public void handleRequestWithFlashAttributes() throws Exception { this.request.setAttribute(DispatcherServlet.INPUT_FLASH_MAP_ATTRIBUTE, new ModelMap("name", "value")); ModelAndView mav = this.controller.handleRequest(this.request, new MockHttpServletResponse()); assertEquals(1, mav.getModel().size()); assertEquals("value", mav.getModel().get("name")); }
@Test public void modelAttributePackageNameAdvice() throws Exception { this.webAppContext.registerSingleton("mapa", ModelAttributePackageAdvice.class); this.webAppContext.registerSingleton("manupa", ModelAttributeNotUsedPackageAdvice.class); this.webAppContext.refresh(); HandlerMethod handlerMethod = handlerMethod(new SimpleController(), "handle"); this.handlerAdapter.afterPropertiesSet(); ModelAndView mav = this.handlerAdapter.handle(this.request, this.response, handlerMethod); assertEquals("lAttr1", mav.getModel().get("attr1")); assertEquals("gAttr2", mav.getModel().get("attr2")); assertEquals(null,mav.getModel().get("attr3")); }
@Test public void modelAttributeAdvice() throws Exception { this.webAppContext.registerSingleton("maa", ModelAttributeAdvice.class); this.webAppContext.refresh(); HandlerMethod handlerMethod = handlerMethod(new SimpleController(), "handle"); this.handlerAdapter.afterPropertiesSet(); ModelAndView mav = this.handlerAdapter.handle(this.request, this.response, handlerMethod); assertEquals("lAttr1", mav.getModel().get("attr1")); assertEquals("gAttr2", mav.getModel().get("attr2")); }
@Test public void withFlashAttributes() throws Exception { UrlFilenameViewController ctrl = new UrlFilenameViewController(); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/index"); request.setAttribute(DispatcherServlet.INPUT_FLASH_MAP_ATTRIBUTE, new ModelMap("name", "value")); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mv = ctrl.handleRequest(request, response); assertEquals("index", mv.getViewName()); assertEquals(1, mv.getModel().size()); assertEquals("value", mv.getModel().get("name")); }
@Test public void nullExceptionAttribute() { exceptionResolver.setDefaultErrorView("default-view"); exceptionResolver.setExceptionAttribute(null); ModelAndView mav = exceptionResolver.resolveException(request, response, handler1, genericException); assertEquals("default-view", mav.getViewName()); assertNull(mav.getModel().get(SimpleMappingExceptionResolver.DEFAULT_EXCEPTION_ATTRIBUTE)); }
@Test public void handleRequestWithViewName() throws Exception { String viewName = "testView"; this.controller.setViewName(viewName); ModelAndView mav = this.controller.handleRequest(this.request, new MockHttpServletResponse()); assertEquals(viewName, mav.getViewName()); assertTrue(mav.getModel().isEmpty()); }
@Test public void withFilenameAndMatrixVariables() throws Exception { UrlFilenameViewController ctrl = new UrlFilenameViewController(); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/index;a=A;b=B"); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mv = ctrl.handleRequest(request, response); assertEquals("index", mv.getViewName()); assertTrue(mv.getModel().isEmpty()); }
@Test public void withFilenamePlusExtension() throws Exception { UrlFilenameViewController ctrl = new UrlFilenameViewController(); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/index.html"); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mv = ctrl.handleRequest(request, response); assertEquals("index", mv.getViewName()); assertTrue(mv.getModel().isEmpty()); }
@Test public void multiLevel() throws Exception { UrlFilenameViewController ctrl = new UrlFilenameViewController(); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/docs/cvs/commit.html"); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mv = ctrl.handleRequest(request, response); assertEquals("docs/cvs/commit", mv.getViewName()); assertTrue(mv.getModel().isEmpty()); }
@Test public void withPlainFilename() throws Exception { UrlFilenameViewController ctrl = new UrlFilenameViewController(); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/index"); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mv = ctrl.handleRequest(request, response); assertEquals("index", mv.getViewName()); assertTrue(mv.getModel().isEmpty()); }
@Test public void withPrefix() throws Exception { UrlFilenameViewController ctrl = new UrlFilenameViewController(); ctrl.setPrefix("mypre_"); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/index.html"); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mv = ctrl.handleRequest(request, response); assertEquals("mypre_index", mv.getViewName()); assertTrue(mv.getModel().isEmpty()); }
@Test public void withSuffix() throws Exception { UrlFilenameViewController ctrl = new UrlFilenameViewController(); ctrl.setSuffix("_mysuf"); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/index.html"); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mv = ctrl.handleRequest(request, response); assertEquals("index_mysuf", mv.getViewName()); assertTrue(mv.getModel().isEmpty()); }
@Test public void multiLevelWithMapping() throws Exception { UrlFilenameViewController ctrl = new UrlFilenameViewController(); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/docs/cvs/commit.html"); exposePathInMapping(request, "/docs/**"); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mv = ctrl.handleRequest(request, response); assertEquals("cvs/commit", mv.getViewName()); assertTrue(mv.getModel().isEmpty()); }
@Test public void withContextMapping() throws Exception { UrlFilenameViewController ctrl = new UrlFilenameViewController(); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/myapp/docs/cvs/commit.html"); request.setContextPath("/myapp"); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mv = ctrl.handleRequest(request, response); assertEquals("docs/cvs/commit", mv.getViewName()); assertTrue(mv.getModel().isEmpty()); }
@Test public void multiLevelMappingWithFallback() throws Exception { UrlFilenameViewController ctrl = new UrlFilenameViewController(); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/docs/cvs/commit.html"); exposePathInMapping(request, "/docs/cvs/commit.html"); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mv = ctrl.handleRequest(request, response); assertEquals("docs/cvs/commit", mv.getViewName()); assertTrue(mv.getModel().isEmpty()); }
@Test public void withPrefixAndSuffix() throws Exception { UrlFilenameViewController ctrl = new UrlFilenameViewController(); ctrl.setPrefix("mypre_"); ctrl.setSuffix("_mysuf"); MockHttpServletRequest request = new MockHttpServletRequest("GET", "/index.html"); MockHttpServletResponse response = new MockHttpServletResponse(); ModelAndView mv = ctrl.handleRequest(request, response); assertEquals("mypre_index_mysuf", mv.getViewName()); assertTrue(mv.getModel().isEmpty()); }