PentahoSystem.registerObjectFactory( factory );
PentahoSystem.setSystemSettingsService( factory.get( ISystemSettings.class, "systemSettingsService", session ) );
List<ISessionStartupAction> actions = new ArrayList<ISessionStartupAction>();
SessionStartupAction startupAction1 = new SessionStartupAction();
startupAction1.setSessionType( PentahoSystem.SCOPE_GLOBAL );
startupAction1.setActionPath( "testsolution/testpath/test.xaction" );
startupAction1.setActionOutputScope( PentahoSystem.SCOPE_GLOBAL );
actions.add( startupAction1 );
TestRuntimeContext context = new TestRuntimeContext();
context.status = IRuntimeContext.RUNTIME_STATUS_SUCCESS;
TestSolutionEngine engine = PentahoSystem.get( TestSolutionEngine.class, "ISolutionEngine", session );
engine.testRuntime = context;
Map<String, IActionParameter> outputs = new HashMap<String, IActionParameter>();
TestActionParameter param = new TestActionParameter();
param.setValue( "testvalue" );
outputs.put( "testoutput", param );
context.outputParameters = outputs;
engine.executeCount = 0;
GlobalListsPublisher globals = new GlobalListsPublisher();
assertEquals( Messages.getInstance().getString( "GlobalListsPublisher.USER_SYSTEM_SETTINGS" ), globals.getName() );
assertEquals( Messages.getInstance().getString( "GlobalListsPublisher.USER_DESCRIPTION" ), globals.getDescription() );
assertTrue( !globals.getName().startsWith( "!" ) );
assertTrue( !globals.getDescription().startsWith( "!" ) );
assertNotNull( globals.getLogger() );
String resultMsg = globals.publish( session );
assertEquals( Messages.getInstance().getString( "GlobalListsPublisher.USER_SYSTEM_SETTINGS_UPDATED" ), resultMsg );
assertEquals( 0, engine.executeCount );
PentahoSystem.setSessionStartupActions( actions );
IParameterProvider globalParams = PentahoSystem.getGlobalParameters();
resultMsg = globals.publish( session );
assertEquals( 1, engine.executeCount );
assertEquals( Messages.getInstance().getString( "GlobalListsPublisher.USER_SYSTEM_SETTINGS_UPDATED" ), resultMsg );
// check that we made it all the way to executing the startup action
assertEquals( session, engine.initSession );
assertEquals( startupAction1.getActionPath(), engine.actionPath );
assertEquals( "testvalue", globalParams.getParameter( "testoutput" ) );
param.setValue( "testvalue2" );
resultMsg = globals.publish( session );