/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.publication.freemarker.cache;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.io.Reader;
import java.util.Date;
import org.junit.Assert;
import org.junit.Test;
import com.ewcms.core.site.model.Template;
import com.ewcms.core.site.model.TemplateEntity;
import com.ewcms.publication.service.TemplatePublishServiceable;
/**
* DatabaseTemplateLoader单元测试
*
* @author wangwei
*/
public class DatabaseTemplateLoaderTest {
@Test
public void testFindTemplateSourceTemplateIsNull()throws Exception{
TemplatePublishServiceable service = mock(TemplatePublishServiceable.class);
when(service.getTemplateByUniquePath(any(String.class))).thenReturn(null);
DatabaseTemplateLoader loader = new DatabaseTemplateLoader(service);
Object source = loader.findTemplateSource("/test.html");
Assert.assertNull(source);
}
@Test
public void testFindTemplateSourceContentIsNull()throws Exception{
TemplatePublishServiceable service = mock(TemplatePublishServiceable.class);
when(service.getTemplateByUniquePath(any(String.class))).thenReturn(new Template());
DatabaseTemplateLoader loader = new DatabaseTemplateLoader(service);
Object source = loader.findTemplateSource("/test.html");
Assert.assertNull(source);
}
private Date updTime = new Date();
private Object createTemplateSource()throws Exception{
TemplatePublishServiceable service = mock(TemplatePublishServiceable.class);
TemplateEntity entity = new TemplateEntity();
entity.setTplEntity("test".getBytes());
Template template = new Template();
template.setUpdTime(updTime);
template.setTemplateEntity(entity);
when(service.getTemplateByUniquePath(any(String.class))).thenReturn(template);
DatabaseTemplateLoader loader = new DatabaseTemplateLoader(service);
return loader.findTemplateSource("/test.html");
}
@Test
public void testFindTemplateSource()throws Exception{
Object source = createTemplateSource();
Assert.assertNotNull(source);
}
@Test
public void testGetReader()throws Exception{
Object source = createTemplateSource();
TemplatePublishServiceable service = mock(TemplatePublishServiceable.class);
DatabaseTemplateLoader loader = new DatabaseTemplateLoader(service);
Reader reader = loader.getReader(source, "utf-8");
char[] chars = new char[100];
int len = reader.read(chars);
Assert.assertEquals(4, len);
Assert.assertEquals('t', chars[0]);
Assert.assertEquals('t', chars[3]);
}
@Test
public void testGetLastModified()throws Exception{
Object source = createTemplateSource();
TemplatePublishServiceable service = mock(TemplatePublishServiceable.class);
DatabaseTemplateLoader loader = new DatabaseTemplateLoader(service);
long lastModified = loader.getLastModified(source);
Assert.assertEquals(lastModified, updTime.getTime());
}
}