/*
* 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 static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
public abstract class AbstractDataSourceConverterTest
{
private final DataSourceConverter converter;
public AbstractDataSourceConverterTest( final DataSourceConverter converter )
{
this.converter = converter;
}
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 Document sourceDoc = readDoc( source );
final Document resultDoc = readDoc( result );
final Document convertedDoc = testConvert( sourceDoc );
final String resultStr = toString( resultDoc );
final String convertedStr = toString( convertedDoc );
assertEquals( resultStr, convertedStr );
}
private Document testConvert( final Document source )
throws Exception
{
final Element target = this.converter.convert( source.getRootElement() );
return new Document( target );
}
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 );
}
}