/*
* Created on Sep 14, 2004
*/
package com.openedit.page;
import java.io.File;
import java.text.ParseException;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.openedit.BaseTestCase;
import com.openedit.WebPageRequest;
import com.openedit.util.OutputFiller;
/**
* @author Matthew Avery, mavery@einnovation.com
*/
public class PageMetaDataTest extends BaseTestCase
{
private static final Log log = LogFactory.getLog(PageMetaDataTest.class);
// PageSettings siteMetaData;
// PageSettings defaultMetaData;
// PageSettings metaData;
public PageMetaDataTest( String name )
{
super( name );
}
public void testUpdateMetaData() throws Exception
{
removeSiteXconf();
Page indexPage = getPage( "/metadata/index.html");
//assertNull( indexPage.getLayout() );
assertEquals( "default", indexPage.getProperty( "test_property"));
Page indexPage2 = getPage( "/metadata/index.html");
assertTrue("Should be the same instance" ,indexPage == indexPage2);
//put the starter xconf in there
copySiteXconf();
Thread.sleep(100);
long start = System.currentTimeMillis();
indexPage = getPage( "/metadata/index.html");
log.info( "got page in " + (System.currentTimeMillis() - start) + " ms");
assertEquals( "Hello!", indexPage.getProperty( "test_property"));
assertEquals( "/default.html", indexPage.getLayout() );
copyIndexXconf();
Thread.sleep(100);
start = System.currentTimeMillis();
indexPage = getPage( "/metadata/index.html");
log.info( "got page in " + (System.currentTimeMillis() - start) + " ms");
//log.info( indexPage.getPageSettings().() );
assertEquals( "Goodbye!", indexPage.getProperty( "test_property"));
assertEquals( "Open Edit", indexPage.getProperty( "productName"));
assertEquals( "/indexlayout.html", indexPage.getLayout() );
removeIndexXconf();
Thread.sleep(100);
start = System.currentTimeMillis();
indexPage = getPage( "/metadata/index.html");
log.info( "got page in " + (System.currentTimeMillis() - start) + " ms");
assertEquals( "/default.html", indexPage.getLayout() );
assertEquals( "Hello!", indexPage.getProperty( "test_property"));
assertEquals( "Open Edit", indexPage.getProperty( "productName"));
removeSiteXconf();
Thread.sleep(100);
start = System.currentTimeMillis();
indexPage = getPage( "/metadata/sub/index.html");
log.info( "got page in " + (System.currentTimeMillis() - start) + " ms");
//assertNull( indexPage. );
assertEquals( "default", indexPage.getProperty( "test_property"));
assertEquals( "Open Edit", indexPage.getProperty( "productName"));
copySiteXconf();
Thread.sleep(100);
start = System.currentTimeMillis();
indexPage = getPage( "/metadata/sub/index.html");
log.info( "got page in " + (System.currentTimeMillis() - start) + " ms");
//assertNull( indexPage. );
assertEquals( "Hello!", indexPage.getProperty( "test_property"));
assertEquals( "/default.html", indexPage.getLayout() );
}
protected void copySiteXconf() throws Exception
{
File fromFile = new File( getRoot(), "metadata/testxconfs/_site.xconf");
File toFile = new File(getRoot(), "metadata/_site.xconf");
OutputFiller fill = new OutputFiller();
fill.fill( fromFile, toFile );
}
protected void copyIndexXconf() throws Exception
{
File fromFile = new File(getRoot(), "metadata/testxconfs/index.xconf");
File toFile = new File(getRoot(), "metadata/index.xconf");
OutputFiller fill = new OutputFiller();
fill.fill( fromFile, toFile );
}
protected void removeIndexXconf() throws Exception
{
File toFile = new File(getRoot(), "metadata/index.xconf");
toFile.delete();
}
protected void removeSiteXconf() throws Exception
{
File toFile = new File(getRoot(), "metadata/_site.xconf");
toFile.delete();
}
// public void testGetLayout()
// {
// assertEquals( "layoutindex.xconf" , metaData.getLayout() );
// metaData.setFallBack( defaultMetaData );
// assertEquals( "layoutindex.xconf" , metaData.getLayout() );
// metaData.setLayout(null);
// metaData.setFallBack( defaultMetaData );
// assertEquals( "layout_default.xconf" , metaData.getLayout() );
// }
public void testSiteLayout() throws Exception
{
Page page = getPage("/metadatalayout/sublayout/index.html");
assertEquals("/defaulttemplate.html",page.getLayout());
}
// public PageSettings createDateMetaData( String inPath, String inDateString ) throws ParseException
// {
// PageSettings metaData = new PageSettings();
// metaData.setXConf( new DateStampContentItem( inDateString ) );
//
// metaData.setLayout( "layout" + inPath );
// return metaData;
// }
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception
{
// siteMetaData = createDateMetaData( "_site.xconf", "1/10/04");
// defaultMetaData = createDateMetaData( "_default.xconf", "1/5/04");
// metaData = createDateMetaData( "index.xconf", "1/1/04");
}
protected void tearDown() throws Exception
{
removeSiteXconf();
removeIndexXconf();
}
public void testEncoding() throws Exception
{
Page index = getPage("/metadata/testxconfs/index.html");
String encoding = index.getCharacterEncoding();
assertEquals( "ISO-8859-1", encoding );
WebPageRequest req = getFixture().createPageRequest("/metadata/testxconfs/index.html");
getFixture().getEngine().beginRender(req);
//req.getWriter().toString();
encoding = req.getPage().getCharacterEncoding();
assertEquals( "ISO-8859-1", encoding );
}
}