/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.upgrade.task.datasource;
import java.net.URL;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.junit.Test;
import static org.junit.Assert.*;
public class DataSourceConverterHelperTest
{
private final DataSourceConverterHelper helper;
public DataSourceConverterHelperTest()
{
this.helper = new DataSourceConverterHelper( new DataSourceConverter( null )
{
@Override
public Element convert( final Element root )
throws Exception
{
final Element elem = new Element( "datasources" );
final Element subElem = new Element( "datasource" );
subElem.setAttribute( "name", "dummy" );
elem.addContent( subElem );
return elem;
}
} );
}
@Test
public void testConvert_page()
throws Exception
{
testConvert( "page" );
testConvert( "page_none" );
}
@Test
public void testConvert_portlet()
throws Exception
{
testConvert( "portlet" );
testConvert( "portlet_none" );
}
protected final void testConvert( final String name )
throws Exception
{
testConvert( name + ".xml", name + "_result.xml" );
}
private void testConvert( final String source, final String result )
throws Exception
{
final String sourceDoc = toString( readDoc( source ) );
final String resultDoc = toString( readDoc( result ) );
DatasourceInfoHolder datasourceInfoHolder = new DatasourceInfoHolder();
datasourceInfoHolder.setXml( sourceDoc );
final String convertedDoc = this.helper.convert( datasourceInfoHolder );
assertEquals( resultDoc, convertedDoc );
}
private Document readDoc( final String name )
throws Exception
{
final URL url = getClass().getResource( name );
assertNotNull( "Document [" + name + "] not found", url );
final SAXBuilder builder = new SAXBuilder();
return builder.build( url );
}
private String toString( final Document doc )
throws Exception
{
final XMLOutputter out = new XMLOutputter();
out.setFormat( Format.getPrettyFormat() );
return out.outputString( doc );
}
}