From 4e7b3eb66b52a8f02b274db2e3d5a056a2128f01 Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Fri, 15 Apr 2016 15:37:49 +0100 Subject: [PATCH] Add new persist tests - New tests related to persist/restore for a ssm id. - Relates to #198 --- .../persist/StateMachinePersistTests3.java | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/persist/StateMachinePersistTests3.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/persist/StateMachinePersistTests3.java index 0b54d563..9f892538 100644 --- a/spring-statemachine-core/src/test/java/org/springframework/statemachine/persist/StateMachinePersistTests3.java +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/persist/StateMachinePersistTests3.java @@ -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 persister = new DefaultStateMachinePersister<>(stateMachinePersist); + @SuppressWarnings("unchecked") + StateMachineFactory stateMachineFactory = context.getBean(StateMachineFactory.class); + + StateMachine 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 persister = new DefaultStateMachinePersister<>(stateMachinePersist); + @SuppressWarnings("unchecked") + StateMachine 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 { @@ -95,6 +142,35 @@ public class StateMachinePersistTests3 extends AbstractStateMachineTests { } } + @Configuration + @EnableStateMachine + public static class Config2 extends StateMachineConfigurerAdapter { + + @Override + public void configure(StateMachineConfigurationConfigurer config) throws Exception { + config + .withConfiguration() + .autoStartup(true); + } + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + states + .withStates() + .initial("S1") + .state("S2"); + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + .withExternal() + .source("S1") + .target("S2") + .event("E1"); + } + } + static class InMemoryStateMachinePersist1 implements StateMachinePersist { private final HashMap> contexts = new HashMap<>();