package org.webpieces.templating.api; import java.io.IOException; import java.io.StringWriter; import java.util.HashMap; import java.util.Map; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.webpieces.templatingdev.api.DevTemplateModule; import org.webpieces.templatingdev.api.StubModule; import org.webpieces.templatingdev.api.TemplateCompileConfig; import org.webpieces.templatingdev.impl.DevTemplateService; import com.google.inject.Guice; import com.google.inject.Injector; public class TestSimpleTemplate { private DevTemplateService svc; @Before public void setup() { Injector injector = Guice.createInjector( new DevTemplateModule(new TemplateCompileConfig(false)), new StubModule() ); svc = injector.getInstance(DevTemplateService.class); } @Test public void testBasicTemplate() throws IOException { String templateName = "/mytestfile.html"; Map<String, Object> properties = createArgs(new UserBean("Dean Hiller")); StringWriter out = new StringWriter(); svc.loadAndRunTemplate(templateName, out, properties); //NOTE: We should be able to run with UserBean2 as well(this shows if //a Class was recompiled on-demand with our runtimecompiler we won't have issues in development mode Map<String, Object> args = createArgs(new UserBean2("Cooler Guy")); svc.loadAndRunTemplate(templateName, new StringWriter(), args); System.out.println("HTML=\n"+out.toString()); } @Test public void testWithPackage() throws IOException { String templateName = "/org/webpieces/mytestfile.html"; Map<String, Object> properties = createArgs(new UserBean("Dean Hiller")); StringWriter out = new StringWriter(); svc.loadAndRunTemplate(templateName, out, properties); //NOTE: We should be able to run with UserBean2 as well(this shows if //a Class was recompiled on-demand with our runtimecompiler we won't have issues in development mode Map<String, Object> args = createArgs(new UserBean2("Cooler Guy")); svc.loadAndRunTemplate(templateName, new StringWriter(), args); String html = out.toString(); Assert.assertTrue("Html was="+html, html.contains("Hi there, my name is Dean Hiller and my favorite color is green")); } private Map<String, Object> createArgs(Object user) { Map<String, Object> properties = new HashMap<>(); properties.put("user", user); properties.put("color", "green"); return properties; } }