package org.pentaho.platform.plugin.services.importexport.legacy;
import org.apache.commons.io.IOUtils;
import org.junit.BeforeClass;
import org.junit.Test;
import org.pentaho.platform.api.repository2.unified.MondrianSchemaAnnotator;
import org.pentaho.platform.repository2.unified.fs.FileSystemBackedUnifiedRepository;
import org.pentaho.test.platform.engine.core.MicroPlatform;
import org.pentaho.test.platform.utils.TestResourceLocation;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import static org.junit.Assert.assertEquals;
public class MondrianCatalogRepositoryHelperIT {
@BeforeClass
public static void setUpClass() throws Exception {
MicroPlatform platform = new MicroPlatform( TestResourceLocation.TEST_RESOURCES + "/solution" );
platform.defineInstance( "inlineModeling", new MondrianSchemaAnnotator() {
@Override public InputStream getInputStream(
final InputStream schemaInputStream, final InputStream annotationsInputStream ) {
return new java.io.SequenceInputStream( schemaInputStream, annotationsInputStream );
}
} );
platform.start();
}
@Test
public void testSchemaFilesWithoutAnnotations() throws Exception {
FileSystemBackedUnifiedRepository repository =
new FileSystemBackedUnifiedRepository( TestResourceLocation.TEST_RESOURCES + "/MondrianCatalogRepositoryHelperTest" );
MondrianCatalogRepositoryHelper helper = new MondrianCatalogRepositoryHelper( repository );
Map<String, InputStream> schemaFiles = helper.getModrianSchemaFiles( "sample" );
assertEquals( 1, schemaFiles.size() );
assertSchemaFile(
TestResourceLocation.TEST_RESOURCES + "/MondrianCatalogRepositoryHelperTest/etc/mondrian/sample/schema.xml", schemaFiles.get( "schema.xml" ) );
}
@Test
public void testSchemaFilesContainsAnnotatedSchema() throws Exception {
FileSystemBackedUnifiedRepository repository =
new FileSystemBackedUnifiedRepository( TestResourceLocation.TEST_RESOURCES + "/MondrianCatalogRepositoryHelperTest" );
MondrianCatalogRepositoryHelper helper = new MondrianCatalogRepositoryHelper( repository );
Map<String, InputStream> schemaFiles = helper.getModrianSchemaFiles( "food" );
assertEquals( 3, schemaFiles.size() );
assertSchemaFile(
TestResourceLocation.TEST_RESOURCES + "/MondrianCatalogRepositoryHelperTest/etc/mondrian/food/schema.xml",
schemaFiles.get( "schema.xml" ) );
assertSchemaFile(
TestResourceLocation.TEST_RESOURCES + "/MondrianCatalogRepositoryHelperTest/etc/mondrian/food/annotations.xml",
schemaFiles.get( "annotations.xml" ) );
assertSchemaFile(
TestResourceLocation.TEST_RESOURCES + "/MondrianCatalogRepositoryHelperTest/schema.annotated.xml", schemaFiles.get( "schema.annotated.xml" ) );
}
private void assertSchemaFile( final String expectedPAth, final InputStream actualSchemaFile ) throws IOException {
assertEquals(
IOUtils.toString(
new FileInputStream(
new File( expectedPAth ) ) ),
IOUtils.toString( actualSchemaFile ) );
}
}