package org.atomhopper.config;
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.Feed;
import org.atomhopper.adapter.FeedInformation;
import org.atomhopper.adapter.FeedSource;
import org.atomhopper.adapter.request.adapter.GetEntryRequest;
import org.atomhopper.adapter.request.adapter.GetFeedRequest;
import org.atomhopper.config.v1_0.Configuration;
import org.atomhopper.config.v1_0.FeedConfiguration;
import org.atomhopper.response.AdapterResponse;
import org.atomhopper.util.config.ConfigurationParser;
import org.atomhopper.util.config.jaxb.JAXBConfigurationParser;
import org.atomhopper.util.config.resource.ConfigurationResource;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Map;
@RunWith( Enclosed.class )
public class WorkspaceConfigProcessorTest {
public static class ArchiveSettings {
private ConfigurationParser<Configuration> configurationParser;
private WorkspaceConfigProcessor workspaceConfigProcessor;
private FeedSource feedSource = new NoOpFeedSource();
@Before
public void setUp() {
configurationParser = new JAXBConfigurationParser<Configuration>(Configuration.class,
org.atomhopper.config.v1_0.ObjectFactory.class);
workspaceConfigProcessor = new WorkspaceConfigProcessor( null, null, null, null, null );
}
@Test
public void archiveAndCurrent() throws Exception {
String configLocation = "/org/atomhopper/config/WorkspaceConfigProcessorTest/archiveWithCurrent.xml";
configurationParser.setConfigurationResource(new ResourceConfigurationResource( configLocation, WorkspaceConfigProcessorTest.class ) );
Configuration configuration = configurationParser.read();
FeedConfiguration configFeed = configuration.getWorkspace().get( 0 ).getFeed().get( 0 );
workspaceConfigProcessor.checkArchiving( configFeed, feedSource );
}
@Test( expected = ConfigurationException.class )
public void noArchiveAndCurrent() throws Exception {
String configLocation = "/org/atomhopper/config/WorkspaceConfigProcessorTest/noArchiveWithCurrent.xml";
configurationParser.setConfigurationResource(new ResourceConfigurationResource( configLocation, WorkspaceConfigProcessorTest.class ) );
Configuration configuration = configurationParser.read();
FeedConfiguration configFeed = configuration.getWorkspace().get( 0 ).getFeed().get( 0 );
workspaceConfigProcessor.checkArchiving( configFeed, feedSource );
}
@Test( expected = ConfigurationException.class )
public void archiveAndNoCurrent() throws Exception {
String configLocation = "/org/atomhopper/config/WorkspaceConfigProcessorTest/archiveWithNoCurrent.xml";
configurationParser.setConfigurationResource(new ResourceConfigurationResource( configLocation, WorkspaceConfigProcessorTest.class ) );
Configuration configuration = configurationParser.read();
FeedConfiguration configFeed = configuration.getWorkspace().get( 0 ).getFeed().get( 0 );
workspaceConfigProcessor.checkArchiving( configFeed, feedSource );
}
@Test( expected = ConfigurationException.class )
public void archiveAndArchive() throws Exception {
String configLocation = "/org/atomhopper/config/WorkspaceConfigProcessorTest/archiveWithArchive.xml";
configurationParser.setConfigurationResource(new ResourceConfigurationResource( configLocation, WorkspaceConfigProcessorTest.class ) );
Configuration configuration = configurationParser.read();
FeedConfiguration configFeed = configuration.getWorkspace().get( 0 ).getFeed().get( 0 );
workspaceConfigProcessor.checkArchiving( configFeed, feedSource );
}
@Test
public void noArchiveAndArchive() throws Exception {
String configLocation = "/org/atomhopper/config/WorkspaceConfigProcessorTest/noArchiveWithArchive.xml";
configurationParser.setConfigurationResource(new ResourceConfigurationResource( configLocation, WorkspaceConfigProcessorTest.class ) );
Configuration configuration = configurationParser.read();
FeedConfiguration configFeed = configuration.getWorkspace().get( 0 ).getFeed().get( 0 );
workspaceConfigProcessor.checkArchiving( configFeed, feedSource );
}
}
static class NoOpFeedSource implements FeedSource {
@Override
public FeedInformation getFeedInformation() { return null; }
@Override
public AdapterResponse<Feed> getFeed( GetFeedRequest getFeedRequest ) { return null; }
@Override
public AdapterResponse<Entry> getEntry( GetEntryRequest getEntryRequest ) { return null; }
@Override
public void setCurrentUrl( URL urlCurrent ) { }
@Override
public void setArchiveUrl( URL url ) { }
@Override
public void setParameters( Map<String, String> params ) { }
};
static class ResourceConfigurationResource implements ConfigurationResource {
InputStream inputStream;
public ResourceConfigurationResource( String path, Class clazz ) {
inputStream = clazz.getResourceAsStream( path );
}
@Override
public InputStream getInputStream() throws IOException {
return inputStream;
}
}
}