package extensions.modules.rhino;
import org.junit.Test;
import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot;
import org.pentaho.reporting.engine.classic.core.metadata.ExpressionMetaData;
import org.pentaho.reporting.engine.classic.core.metadata.ExpressionRegistry;
import org.pentaho.reporting.engine.classic.extensions.modules.rhino.RhinoModule;
import org.pentaho.reporting.libraries.base.boot.ModuleInfo;
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.assertThat;
public class RhinoModuleIT {
private static final String EXPRESSION_ID =
"org.pentaho.reporting.engine.classic.extensions.modules.rhino.RhinoExpression";
@Test
public void testInitialize() throws Exception {
ClassicEngineBoot.getInstance().start();
RhinoModule module = new RhinoModule();
module.initialize( null );
assertThat( module.getDescription(), is( equalTo( "test rhino description" ) ) );
assertThat( module.getMajorVersion(), is( equalTo( "1" ) ) );
assertThat( module.getMinorVersion(), is( equalTo( "1" ) ) );
assertThat( module.getPatchLevel(), is( equalTo( "0" ) ) );
assertThat( module.getName(), is( equalTo( "test-rhino-module-name" ) ) );
assertThat( module.getProducer(), is( equalTo( "test rhino producer" ) ) );
ModuleInfo[] requiredModules = module.getRequiredModules();
assertThat( requiredModules.length, is( equalTo( 1 ) ) );
ModuleInfo requiredModule = requiredModules[0];
assertThat( requiredModule.getModuleClass(), is( equalTo( "test.required.module.class" ) ) );
assertThat( requiredModule.getMinorVersion(), is( equalTo( "2" ) ) );
assertThat( requiredModule.getMajorVersion(), is( equalTo( "2" ) ) );
assertThat( requiredModule.getPatchLevel(), is( equalTo( "1" ) ) );
ModuleInfo[] optionalModules = module.getOptionalModules();
assertThat( optionalModules.length, is( equalTo( 1 ) ) );
ModuleInfo optionalModule = optionalModules[0];
assertThat( optionalModule.getModuleClass(), is( equalTo( "test.optional.module.class" ) ) );
assertThat( optionalModule.getMinorVersion(), is( equalTo( "1" ) ) );
assertThat( optionalModule.getMajorVersion(), is( equalTo( "1" ) ) );
assertThat( optionalModule.getPatchLevel(), is( equalTo( "0" ) ) );
assertThat( ExpressionRegistry.getInstance().isExpressionRegistered( EXPRESSION_ID ), is( equalTo( true ) ) );
ExpressionMetaData meta = ExpressionRegistry.getInstance().getExpressionMetaData( EXPRESSION_ID );
assertThat( meta.getBundleLocation(),
is( equalTo( "org.pentaho.reporting.engine.classic.extensions.modules.rhino.RhinoExpressionBundle" ) ) );
assertThat( meta.getPropertyDescription( "expression" ), is( notNullValue() ) );
}
}