FREEMARKER-55: Adding more tests regarding FreemarkerView's model

Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/36b0694f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/36b0694f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/36b0694f

Branch: refs/heads/3
Commit: 36b0694f335c319946f908729be95f1808f23b2a
Parents: 334d9cd
Author: Woonsan Ko <woon...@apache.org>
Authored: Thu Jun 29 00:41:17 2017 -0400
Committer: Woonsan Ko <woon...@apache.org>
Committed: Thu Jun 29 00:41:17 2017 -0400

----------------------------------------------------------------------
 .../spring/web/view/FreemarkerView.java         |  7 +-
 .../spring/web/view/FreemarkerViewTest.java     | 73 ++++++++++++++++++--
 2 files changed, 68 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/36b0694f/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerView.java
----------------------------------------------------------------------
diff --git 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerView.java
 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerView.java
index c13a49f..21b2a60 100644
--- 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerView.java
+++ 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/web/view/FreemarkerView.java
@@ -22,7 +22,6 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
 
 import org.apache.freemarker.core.model.ObjectWrapperAndUnwrapper;
 import org.apache.freemarker.core.model.TemplateHashModel;
@@ -41,6 +40,7 @@ public class FreemarkerView extends AbstractFreemarkerView {
     private TaglibFactory taglibFactory;
 
     public ServletContextHashModel getServletContextModel() {
+        // TODO
         return servletContextModel;
     }
 
@@ -62,10 +62,7 @@ public class FreemarkerView extends AbstractFreemarkerView {
             HttpServletRequest request, HttpServletResponse response) {
         AllHttpScopesHashModel model = new 
AllHttpScopesHashModel(objectWrapperForModel, getServletContext(), request);
         model.putUnlistedModel(FreemarkerServlet.KEY_APPLICATION, 
getServletContextModel());
-        HttpSession session = request.getSession(false);
-        if (session != null) {
-            model.putUnlistedModel(FreemarkerServlet.KEY_SESSION, 
getHttpSessionModel(objectWrapperForModel, request, response));
-        }
+        model.putUnlistedModel(FreemarkerServlet.KEY_SESSION, 
getHttpSessionModel(objectWrapperForModel, request, response));
         model.putUnlistedModel(FreemarkerServlet.KEY_REQUEST, new 
HttpRequestHashModel(request, response, objectWrapperForModel));
         model.putUnlistedModel(FreemarkerServlet.KEY_REQUEST_PARAMETERS,
                 new HttpRequestParametersHashModel(request, 
objectWrapperForModel));

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/36b0694f/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewTest.java
----------------------------------------------------------------------
diff --git 
a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewTest.java
 
b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewTest.java
index 4d24632..0435004 100644
--- 
a/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewTest.java
+++ 
b/freemarker-spring/src/test/java/org/apache/freemarker/spring/web/view/FreemarkerViewTest.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertEquals;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicLong;
 
 import javax.servlet.ServletContext;
 
@@ -31,31 +32,36 @@ import org.junit.Before;
 import org.junit.Test;
 import org.springframework.mock.web.MockHttpServletRequest;
 import org.springframework.mock.web.MockHttpServletResponse;
+import org.springframework.mock.web.MockHttpSession;
 import org.springframework.mock.web.MockServletContext;
 
 public class FreemarkerViewTest {
 
     private ServletContext servletContext;
 
+    private StringTemplateLoader templateLoader;
+
     private Configuration configuration;
 
+    private AtomicLong visitorCount;
+
     @Before
     public void setUp() throws Exception {
         servletContext = new MockServletContext();
-
-        StringTemplateLoader templateLoader = new StringTemplateLoader();
-        templateLoader.putTemplate("hello.ftl", "Hello, ${name!\"World\"}! 
Visit count: ${visitCount!0}");
+        visitorCount = new AtomicLong();
+        servletContext.setAttribute("visitorCount", visitorCount);
+        templateLoader = new StringTemplateLoader();
         configuration = new 
Configuration.Builder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS)
                 .templateLoader(templateLoader).build();
     }
 
     @Test
-    public void testViewRendering() throws Exception {
-        MockHttpServletRequest request = new MockHttpServletRequest("GET", 
"/myservlet/handler.do");
+    public void testViewWithBasicModel() throws Exception {
+        MockHttpServletRequest request = new MockHttpServletRequest("GET", 
"/mytest.do");
         request.setContextPath("/mycontext");
         request.setServletPath("/myservlet");
-        request.setPathInfo(";mypathinfo");
-        request.setQueryString("?param1=value1");
+
+        templateLoader.putTemplate("hello.ftl", "Hello, ${name!\"World\"}! 
Visit count: ${visitCount!0}");
 
         FreemarkerView view = new FreemarkerView();
         view.setServletContext(servletContext);
@@ -75,4 +81,57 @@ public class FreemarkerViewTest {
         view.render(model, request, response);
         assertEquals("Hello, Dan! Visit count: 1", 
response.getContentAsString());
     }
+
+    @Test
+    public void testViewWithDefaultServletModel() throws Exception {
+        MockHttpSession session = new MockHttpSession(servletContext);
+        session.setAttribute("itemCountInCart", 3);
+
+        MockHttpServletRequest request = new MockHttpServletRequest("GET", 
"/mytest.do");
+        request.setContextPath("/mycontext");
+        request.setServletPath("/myservlet");
+        request.setPathInfo(";mypathinfo");
+        request.addParameter("token1", "value1");
+        request.setSession(session);
+        request.setAttribute("visitorCount", visitorCount);
+
+        // TODO: Add 'Application.attributeName' example, too.
+        templateLoader.putTemplate("default-model.ftl",
+                "${name!}, you have ${Session.itemCountInCart!0} items in 
cart. "
+                        + "BTW, you're ${Request.visitorCount}th visitor. "
+                        + "(token1: ${RequestParameters['token1']!})");
+
+        FreemarkerView view = new FreemarkerView();
+        view.setServletContext(servletContext);
+        view.setConfiguration(configuration);
+        view.setName("default-model.ftl");
+
+        Map<String, Object> model = new HashMap<String, Object>();
+        model.put("name", "Dan");
+
+        final long count = visitorCount.incrementAndGet();
+        MockHttpServletResponse response = new MockHttpServletResponse();
+        view.render(model, request, response);
+        assertEquals("Dan, you have 3 items in cart. BTW, you're " + count + 
"th visitor. (token1: value1)",
+                response.getContentAsString());
+    }
+
+    @Test
+    public void testViewWithTaglibs() throws Exception {
+        MockHttpServletRequest request = new MockHttpServletRequest("GET", 
"/mytest.do");
+        request.setContextPath("/mycontext");
+        request.setServletPath("/myservlet");
+
+        // TODO: 
+        templateLoader.putTemplate("taglibs.ftl", "");
+
+        FreemarkerView view = new FreemarkerView();
+        view.setServletContext(servletContext);
+        view.setConfiguration(configuration);
+        view.setName("taglibs.ftl");
+
+        Map<String, Object> model = new HashMap<String, Object>();
+        MockHttpServletResponse response = new MockHttpServletResponse();
+        view.render(model, request, response);
+    }
 }

Reply via email to