Skip to content

Commit

Permalink
Add test for custom spring dispatcher servlet initialization
Browse files Browse the repository at this point in the history
  • Loading branch information
mgoellnitz committed Aug 16, 2016
1 parent f5128b7 commit e745043
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions spring/test/org/tangram/spring/test/SpringChainTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@
*/
package org.tangram.spring.test;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.mockito.MockitoAnnotations;
import org.mockito.Spy;
import org.slf4j.Logger;
Expand All @@ -29,16 +32,20 @@
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.mock.web.MockMultipartHttpServletRequest;
import org.springframework.mock.web.MockServletConfig;
import org.springframework.mock.web.MockServletContext;
import org.springframework.web.context.support.XmlWebApplicationContext;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.View;
import org.tangram.Constants;
import org.tangram.components.SimpleStatistics;
import org.tangram.components.spring.MetaController;
import org.tangram.components.spring.TangramSpringServices;
import org.tangram.components.spring.TangramViewHandler;
import org.tangram.content.BeanFactory;
import org.tangram.spring.MeasureTimeInterceptor;
import org.tangram.spring.StreamingMultipartResolver;
import org.tangram.spring.TangramServlet;
import org.tangram.spring.view.SpringViewUtilities;
import org.tangram.view.RequestParameterAccess;
import org.tangram.view.ViewContextFactory;
Expand Down Expand Up @@ -192,4 +199,45 @@ public void testMeasureTimeInterceptor() throws Exception {
// Assert.assertEquals((long) avg, 0L, "There should be an average page render time of 0.");
} // testMeasureTimeInterceptor()


/**
* Create derived class to reach proteced methods.
*/
private class TestServlet extends TangramServlet {

public View execute(String view, Map<String, Object> model, Locale locale, HttpServletRequest request) throws Exception {
return resolveViewName(view, model, locale, request);
}

}


@Test
public void testTangramServlet() throws Exception {
MockServletConfig config = new MockServletConfig(servletContext, "test");
config.addInitParameter("contextConfigLocation", "/tangram/tangram-configurer.xml,/tangram/mutable-configurer.xml,/tangram/tangram-test-configurer.xml");

MockHttpServletRequest request = new MockHttpServletRequest();

TestServlet tangramServlet = new TestServlet();
tangramServlet.init(config);
Map<String, Object> model = new HashMap<>();
Object bean = new Object() {
@Override
public String toString() {
return "<bean>";
}

};
model.put(Constants.THIS, bean);
String exceptionMessage = null;
try {
tangramServlet.execute("view", model, Locale.GERMANY, request);
} catch (Exception e) {
exceptionMessage = e.getMessage();
} // try/catch
Assert.assertNotNull(exceptionMessage, "The handler should not find a view.");
Assert.assertEquals(exceptionMessage, "Cannot find view view for <bean>", "Unexpected handler result message.");
} // testTangramServlet()

} // SpringChainTest

0 comments on commit e745043

Please sign in to comment.