/**
* Tests propagation of registration properties
*/
package org.springmodules.jsr94.factory;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import javax.rules.RuleRuntime;
import javax.rules.admin.LocalRuleExecutionSetProvider;
import javax.rules.admin.RuleAdministrator;
import junit.framework.TestCase;
import org.easymock.MockControl;
import org.springmodules.jsr94.rulesource.DefaultRuleSource;
import org.springframework.core.io.Resource;
/**
* Tests that the properties are being propagated correctly to the calls to
* RuleRuntime and RuleAdministrator implementations.
*
* @author janm
*/
public class MockRuntimeAndAdministratorRuleSourceTests extends TestCase {
private MockControl controlRuleExecutionSetProvider;
private LocalRuleExecutionSetProvider ruleExecutionSetProvider;
private MockControl controlRuleRuntime;
private RuleRuntime ruleRuntime;
private MockControl controlRuleAdministrator;
private RuleAdministrator ruleAdministrator;
private MockControl controlSource;
private Resource source;
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
protected void setUp() throws Exception {
controlRuleRuntime = MockControl.createStrictControl(RuleRuntime.class);
controlRuleAdministrator = MockControl.createStrictControl(RuleAdministrator.class);
controlSource = MockControl.createStrictControl(Resource.class);
controlRuleExecutionSetProvider = MockControl.createStrictControl(LocalRuleExecutionSetProvider.class);
ruleRuntime = (RuleRuntime) controlRuleRuntime.getMock();
ruleAdministrator = (RuleAdministrator) controlRuleAdministrator.getMock();
source = (Resource) controlSource.getMock();
ruleExecutionSetProvider = (LocalRuleExecutionSetProvider) controlRuleExecutionSetProvider.getMock();
}
/**
* Verifies that the providerProperties, rulesetProperties and registrationProperties are
* being passed to the implementation correctly.
*
* @throws Exception
*/
public void testPropertyPropagation() throws Exception {
Map providerProperties = new HashMap();
Map rulesetProperties = new HashMap();
Map registrationProperties = new HashMap();
providerProperties.put("providerProperties", "providerProperties");
rulesetProperties.put("rulesetProperties", "rulesetProperties");
registrationProperties.put("registrationProperties", "registrationProperties");
DefaultRuleSource rs = new DefaultRuleSource();
rs.setBindUri("foo");
rs.setRuleAdministrator(ruleAdministrator);
rs.setRuleRuntime(ruleRuntime);
rs.setSource(source);
rs.setRegistrationProperties(registrationProperties);
rs.setRulesetProperties(rulesetProperties);
rs.setProviderProperties(providerProperties);
ruleAdministrator.getLocalRuleExecutionSetProvider(providerProperties);
controlRuleAdministrator.setReturnValue(ruleExecutionSetProvider);
source.getInputStream();
controlSource.setReturnValue(null);
ruleExecutionSetProvider.createRuleExecutionSet((InputStream) null, rulesetProperties);
controlRuleExecutionSetProvider.setReturnValue(null);
ruleAdministrator.registerRuleExecutionSet("foo", null, registrationProperties);
controlSource.replay();
controlRuleAdministrator.replay();
controlRuleExecutionSetProvider.replay();
controlRuleRuntime.replay();
rs.afterPropertiesSet();
controlRuleAdministrator.verify();
}
}