1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.struts2.views;
23
24 import java.util.HashSet;
25
26 import junit.framework.TestCase;
27
28 import org.apache.struts2.components.template.FreemarkerTemplateEngine;
29 import org.apache.struts2.components.template.JspTemplateEngine;
30 import org.apache.struts2.components.template.Template;
31 import org.apache.struts2.components.template.TemplateEngine;
32 import org.apache.struts2.components.template.TemplateEngineManager;
33 import org.apache.struts2.components.template.VelocityTemplateEngine;
34 import org.apache.struts2.dispatcher.mapper.CompositeActionMapper;
35
36 import com.mockobjects.dynamic.C;
37 import com.mockobjects.dynamic.Mock;
38 import com.opensymphony.xwork2.inject.Container;
39
40 /***
41 * TemplateEngineManagerTest
42 *
43 */
44 public class TemplateEngineManagerTest extends TestCase {
45
46 TemplateEngineManager mgr;
47 Mock mockContainer;
48
49 public void setUp() throws Exception {
50 mgr = new TemplateEngineManager();
51 mockContainer = new Mock(Container.class);
52 mockContainer.matchAndReturn("getInstance", C.args(C.eq(TemplateEngine.class), C.eq("jsp")), new JspTemplateEngine());
53 mockContainer.matchAndReturn("getInstance", C.args(C.eq(TemplateEngine.class), C.eq("vm")), new VelocityTemplateEngine());
54 mockContainer.matchAndReturn("getInstance", C.args(C.eq(TemplateEngine.class), C.eq("ftl")), new FreemarkerTemplateEngine());
55 mockContainer.matchAndReturn("getInstanceNames", C.args(C.eq(TemplateEngine.class)), new HashSet() {{
56 add("jsp");
57 add("vm");
58 add("ftl");
59 }});
60
61 mgr.setContainer((Container)mockContainer.proxy());
62 mgr.setDefaultTemplateType("jsp");
63 }
64
65 public void testTemplateTypeFromTemplateNameAndDefaults() {
66
67 TemplateEngine engine = mgr.getTemplateEngine(new Template("/template", "simple", "foo"), null);
68 assertTrue(engine instanceof JspTemplateEngine);
69 engine = mgr.getTemplateEngine(new Template("/template", "simple", "foo.vm"), null);
70 assertTrue(engine instanceof VelocityTemplateEngine);
71 }
72
73 public void testTemplateTypeOverrides() {
74 TemplateEngine engine = mgr.getTemplateEngine(new Template("/template", "simple", "foo"), "ftl");
75 assertTrue(engine instanceof FreemarkerTemplateEngine);
76 engine = mgr.getTemplateEngine(new Template("/template", "simple", "foo.vm"), "ftl");
77 assertTrue(engine instanceof VelocityTemplateEngine);
78 engine = mgr.getTemplateEngine(new Template("/template", "simple", "foo.ftl"), "");
79 assertTrue(engine instanceof FreemarkerTemplateEngine);
80 }
81
82 public void testTemplateTypeUsesDefaultWhenNotSetInConfiguration() {
83 mgr.setDefaultTemplateType(null);
84 TemplateEngine engine = mgr.getTemplateEngine(new Template("/template", "simple", "foo"), null);
85 Template template = new Template("/template", "simple", "foo." + TemplateEngineManager.DEFAULT_TEMPLATE_TYPE);
86 TemplateEngine defaultTemplateEngine = mgr.getTemplateEngine(template, null);
87 assertTrue(engine.getClass().equals(defaultTemplateEngine.getClass()));
88 }
89
90 protected void tearDown() throws Exception {
91 super.tearDown();
92 }
93 }