package org.springmodules.template.resolver;
import java.util.Locale;
import junit.framework.TestCase;
import org.easymock.MockControl;
import org.springframework.core.io.ResourceLoader;
import org.springmodules.template.Template;
import org.springmodules.template.TemplateEngine;
import org.springmodules.util.StringResource;
/**
* @author Uri Boness
*/
public class BasicTemplateResolverTests extends TestCase {
private BasicTemplateResolver resolver;
private TemplateEngine engine;
private MockControl engineControl;
private ResourceLoader loader;
private MockControl loaderControl;
protected void setUp() throws Exception {
engineControl = MockControl.createControl(TemplateEngine.class);
engine = (TemplateEngine)engineControl.getMock();
loaderControl = MockControl.createControl(ResourceLoader.class);
loader = (ResourceLoader)loaderControl.getMock();
resolver = new BasicTemplateResolver();
resolver.setEngine(engine);
resolver.setResourceLoader(loader);
resolver.setExtension(".ext");
resolver.afterPropertiesSet();
}
public void testResolve() throws Exception {
String name = "name";
StringResource resource = new StringResource("resource");
loaderControl.expectAndReturn(loader.getResource("name.ext"), resource);
Template template = new DummyTemplate();
engineControl.expectAndReturn(engine.createTemplate(resource, "UTF-8"), template);
loaderControl.replay();
engineControl.replay();
Template result = resolver.resolve(name);
assertSame(template, result);
loaderControl.verify();
engineControl.verify();
}
public void testResolve_WithEncoding() throws Exception {
String name = "name";
String encoding = "encoding";
StringResource resource = new StringResource("resource");
loaderControl.expectAndReturn(loader.getResource("name.ext"), resource);
Template template = new DummyTemplate();
engineControl.expectAndReturn(engine.createTemplate(resource, encoding), template);
loaderControl.replay();
engineControl.replay();
Template result = resolver.resolve(name, encoding);
assertSame(template, result);
loaderControl.verify();
engineControl.verify();
}
public void testResolve_WithEncodingAndLocale() throws Exception {
String name = "name";
String encoding = "encoding";
StringResource resource = new StringResource("resource");
loaderControl.expectAndReturn(loader.getResource("name_en_US.ext"), null);
loaderControl.expectAndReturn(loader.getResource("name_en.ext"), null);
loaderControl.expectAndReturn(loader.getResource("name.ext"), resource);
Template template = new DummyTemplate();
engineControl.expectAndReturn(engine.createTemplate(resource, encoding), template);
loaderControl.replay();
engineControl.replay();
Template result = resolver.resolve(name, encoding, Locale.US);
assertSame(template, result);
loaderControl.verify();
engineControl.verify();
}
}