Add new persist tests

- New tests related to persist/restore for
  a ssm id.
- Relates to #198
This commit is contained in:
Janne Valkealahti
2016-04-15 15:37:49 +01:00
parent b5da16ac82
commit 4e7b3eb66b

View File

@@ -29,6 +29,8 @@ import org.springframework.statemachine.AbstractStateMachineTests;
import org.springframework.statemachine.StateMachine;
import org.springframework.statemachine.StateMachineContext;
import org.springframework.statemachine.StateMachinePersist;
import org.springframework.statemachine.TestUtils;
import org.springframework.statemachine.config.EnableStateMachine;
import org.springframework.statemachine.config.EnableStateMachineFactory;
import org.springframework.statemachine.config.StateMachineConfigurerAdapter;
import org.springframework.statemachine.config.StateMachineFactory;
@@ -66,6 +68,51 @@ public class StateMachinePersistTests3 extends AbstractStateMachineTests {
assertThat(stateMachine.getId(), is("testid2"));
}
@Test
public void testPersistMachineId2() throws Exception {
context.register(Config1.class);
context.refresh();
InMemoryStateMachinePersist1 stateMachinePersist = new InMemoryStateMachinePersist1();
StateMachinePersister<String, String, String> persister = new DefaultStateMachinePersister<>(stateMachinePersist);
@SuppressWarnings("unchecked")
StateMachineFactory<String, String> stateMachineFactory = context.getBean(StateMachineFactory.class);
StateMachine<String,String> stateMachine = stateMachineFactory.getStateMachine("testid2");
assertThat(stateMachine, notNullValue());
assertThat(stateMachine.getId(), is("testid2"));
TestUtils.setField("id", stateMachine, "newid");
assertThat(stateMachine.getId(), is("newid"));
persister.persist(stateMachine, "xxx");
stateMachine = stateMachineFactory.getStateMachine();
assertThat(stateMachine, notNullValue());
assertThat(stateMachine.getId(), nullValue());
stateMachine = persister.restore(stateMachine, "xxx");
assertThat(stateMachine.getId(), is("newid"));
}
@Test
public void testPersistMachineId3() throws Exception {
context.register(Config2.class);
context.refresh();
InMemoryStateMachinePersist1 stateMachinePersist = new InMemoryStateMachinePersist1();
StateMachinePersister<String, String, String> persister = new DefaultStateMachinePersister<>(stateMachinePersist);
@SuppressWarnings("unchecked")
StateMachine<String,String> stateMachine = context.getBean(StateMachine.class);
assertThat(stateMachine, notNullValue());
assertThat(stateMachine.getId(), nullValue());
TestUtils.setField("id", stateMachine, "newid");
assertThat(stateMachine.getId(), is("newid"));
persister.persist(stateMachine, "xxx");
TestUtils.setField("id", stateMachine, "xxx");
stateMachine = persister.restore(stateMachine, "xxx");
assertThat(stateMachine.getId(), is("newid"));
}
@Configuration
@EnableStateMachineFactory
public static class Config1 extends StateMachineConfigurerAdapter<String, String> {
@@ -95,6 +142,35 @@ public class StateMachinePersistTests3 extends AbstractStateMachineTests {
}
}
@Configuration
@EnableStateMachine
public static class Config2 extends StateMachineConfigurerAdapter<String, String> {
@Override
public void configure(StateMachineConfigurationConfigurer<String, String> config) throws Exception {
config
.withConfiguration()
.autoStartup(true);
}
@Override
public void configure(StateMachineStateConfigurer<String, String> states) throws Exception {
states
.withStates()
.initial("S1")
.state("S2");
}
@Override
public void configure(StateMachineTransitionConfigurer<String, String> transitions) throws Exception {
transitions
.withExternal()
.source("S1")
.target("S2")
.event("E1");
}
}
static class InMemoryStateMachinePersist1 implements StateMachinePersist<String, String, String> {
private final HashMap<String, StateMachineContext<String, String>> contexts = new HashMap<>();