package org.springmodules.template.engine.velocity;
import java.util.HashMap;
import java.util.Map;
import junit.framework.TestCase;
import org.easymock.MockControl;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springmodules.template.Template;
import org.springmodules.util.StringResource;
/**
* @author Uri Boness
*/
public class VelocityTemplateEngineTests extends TestCase {
private VelocityTemplateEngine engine;
private ResourceLoader loader;
private MockControl loaderControl;
protected void setUp() throws Exception {
loaderControl = MockControl.createControl(ResourceLoader.class);
loader = (ResourceLoader) loaderControl.getMock();
engine = new VelocityTemplateEngine(loader);
engine.afterPropertiesSet();
}
public void testCreateTemplate() throws Exception {
String encoding = "UTF-8";
Resource resource = new StringResource("Hello $name");
Template template = engine.createTemplate(resource, encoding);
Map model = new HashMap();
model.put("name", "Daan");
assertEquals("Hello Daan", template.generate(model));
}
public void testCreateTemplate_WithInclude() throws Exception {
String encoding = "UTF-8";
// first, velocity calls the loader to load the resource
loaderControl.expectAndReturn(loader.getResource("name"), new StringResource("Hello"));
// second, velocity calls the loader when trying to get the last modified date of the resource.
loaderControl.expectAndReturn(loader.getResource("name"), null);
Resource resource = new StringResource("#include( \"name\" )");
loaderControl.replay();
Template template = engine.createTemplate(resource, encoding);
assertEquals("Hello", template.generate(new HashMap()));
loaderControl.verify();
}
}