diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/RelayTests.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/RelayTests.java index 42ff490b..6bce3e23 100644 --- a/spring-statemachine-core/src/test/java/org/springframework/statemachine/RelayTests.java +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/RelayTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2015 the original author or authors. + * Copyright 2015-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,9 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.assertThat; +import static org.springframework.statemachine.TestUtils.doSendEventAndConsumeAll; +import static org.springframework.statemachine.TestUtils.doStartAndAssert; +import static org.springframework.statemachine.TestUtils.resolveMachine; import java.util.concurrent.TimeUnit; @@ -26,12 +29,15 @@ import org.junit.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.support.MessageBuilder; import org.springframework.statemachine.action.Action; import org.springframework.statemachine.config.EnableStateMachine; import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; +import reactor.core.publisher.Mono; + public class RelayTests extends AbstractStateMachineTests { @Override @@ -40,20 +46,17 @@ public class RelayTests extends AbstractStateMachineTests { } @Test - @SuppressWarnings("unchecked") public void testRelayFromSubmachine() throws Exception { context.register(Config1.class); context.refresh(); - ObjectStateMachine machine = - context.getBean(StateMachineSystemConstants.DEFAULT_ID_STATEMACHINE, ObjectStateMachine.class); + StateMachine machine = resolveMachine(context); assertThat(machine, notNullValue()); TestStateMachineListener listener = new TestStateMachineListener(); machine.addStateListener(listener); - machine.start(); + doStartAndAssert(machine); listener.reset(3, 0); - machine.sendEvent(TestEvents.E1); + doSendEventAndConsumeAll(machine, TestEvents.E1); assertThat(listener.stateChangedLatch.await(5, TimeUnit.SECONDS), is(true)); - assertThat(machine.getState().getIds(), contains(TestStates.S2, TestStates.S21)); } @@ -95,7 +98,10 @@ public class RelayTests extends AbstractStateMachineTests { @Override public void execute(StateContext context) { - context.getStateMachine().sendEvent(TestEvents.E2); + context.getStateMachine() + .sendEvent(Mono.just(MessageBuilder + .withPayload(TestEvents.E2).build())) + .subscribe(); } }; } diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/StateContextTests.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/StateContextTests.java index 32c38cf8..fbae46e7 100644 --- a/spring-statemachine-core/src/test/java/org/springframework/statemachine/StateContextTests.java +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/StateContextTests.java @@ -28,6 +28,7 @@ import static org.springframework.statemachine.TestUtils.doStartAndAssert; import static org.springframework.statemachine.TestUtils.resolveMachine; import java.util.ArrayList; +import java.util.Arrays; import java.util.Map; import org.hamcrest.FeatureMatcher; @@ -66,6 +67,7 @@ public class StateContextTests extends AbstractStateMachineTests { assertThat(listener.contexts, hasSize(19)); assertThat(listener.contexts, contains( + Arrays.asList( hasStage(Stage.TRANSITION_START), hasStage(Stage.EXTENDED_STATE_CHANGED), hasStage(Stage.TRANSITION), @@ -84,7 +86,7 @@ public class StateContextTests extends AbstractStateMachineTests { hasStage(Stage.TRANSITION_END), hasStage(Stage.STATE_CHANGED), hasStage(Stage.STATEMACHINE_START), - hasStage(Stage.TRANSITION_END) + hasStage(Stage.TRANSITION_END)) )); assertThat(listener.contexts.get(0).getStage(), is(Stage.TRANSITION_START)); @@ -168,9 +170,10 @@ public class StateContextTests extends AbstractStateMachineTests { // all nested machines sends these assertThat(listener.contexts, contains( + Arrays.asList( hasStage(Stage.EVENT_NOT_ACCEPTED), hasStage(Stage.EVENT_NOT_ACCEPTED), - hasStage(Stage.EVENT_NOT_ACCEPTED) + hasStage(Stage.EVENT_NOT_ACCEPTED)) )); assertThat(listener.contexts.get(0).getStage(), is(Stage.EVENT_NOT_ACCEPTED)); diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/SessionScopedAnnotationTests.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/SessionScopedAnnotationTests.java index e34ba4c2..87c9f314 100644 --- a/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/SessionScopedAnnotationTests.java +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/SessionScopedAnnotationTests.java @@ -34,6 +34,7 @@ import org.springframework.context.annotation.ScopedProxyMode; import org.springframework.http.HttpEntity; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.messaging.support.MessageBuilder; import org.springframework.mock.web.MockHttpSession; import org.springframework.statemachine.StateMachine; import org.springframework.statemachine.TestUtils; @@ -54,6 +55,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.context.WebApplicationContext; +import reactor.core.publisher.Mono; + @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes={SessionScopedAnnotationTests.Config2.class, SessionScopedAnnotationTests.Config1.class}) @WebAppConfiguration @@ -191,7 +194,10 @@ public class SessionScopedAnnotationTests { @RequestMapping(path="/state", method=RequestMethod.POST) public HttpEntity setState(@RequestParam("event") String event) { - stateMachine.sendEvent(event); + stateMachine + .sendEvent(Mono.just(MessageBuilder + .withPayload(event).build())) + .subscribe(); return new ResponseEntity(HttpStatus.ACCEPTED); } diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/SessionScopedManualTests.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/SessionScopedManualTests.java index f7769297..3d24d0f7 100644 --- a/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/SessionScopedManualTests.java +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/SessionScopedManualTests.java @@ -35,6 +35,7 @@ import org.springframework.core.task.SyncTaskExecutor; import org.springframework.http.HttpEntity; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.messaging.support.MessageBuilder; import org.springframework.mock.web.MockHttpSession; import org.springframework.statemachine.StateMachine; import org.springframework.statemachine.TestUtils; @@ -53,6 +54,8 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.context.WebApplicationContext; +import reactor.core.publisher.Mono; + @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @WebAppConfiguration @@ -170,7 +173,10 @@ public class SessionScopedManualTests { @RequestMapping(path="/state", method=RequestMethod.POST) public HttpEntity setState(@RequestParam("event") String event) { - stateMachine.sendEvent(event); + stateMachine + .sendEvent(Mono.just(MessageBuilder + .withPayload(event).build())) + .subscribe(); return new ResponseEntity(HttpStatus.ACCEPTED); } diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/monitor/StateMachineMonitorTests.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/monitor/StateMachineMonitorTests.java index ba154860..ed84795a 100644 --- a/spring-statemachine-core/src/test/java/org/springframework/statemachine/monitor/StateMachineMonitorTests.java +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/monitor/StateMachineMonitorTests.java @@ -18,6 +18,9 @@ package org.springframework.statemachine.monitor; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertThat; +import static org.springframework.statemachine.TestUtils.doSendEventAndConsumeAll; +import static org.springframework.statemachine.TestUtils.doStartAndAssert; +import static org.springframework.statemachine.TestUtils.resolveMachine; import java.util.HashMap; import java.util.Map; @@ -32,7 +35,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.statemachine.AbstractStateMachineTests; import org.springframework.statemachine.StateContext; import org.springframework.statemachine.StateMachine; -import org.springframework.statemachine.StateMachineSystemConstants; import org.springframework.statemachine.action.Action; import org.springframework.statemachine.config.EnableStateMachine; import org.springframework.statemachine.config.StateMachineConfigurerAdapter; @@ -45,23 +47,18 @@ import reactor.core.publisher.Mono; public class StateMachineMonitorTests extends AbstractStateMachineTests { - @SuppressWarnings({ "unchecked" }) @Test public void testSimpleMonitor() throws Exception { context.register(Config1.class); context.refresh(); - StateMachine machine = - context.getBean(StateMachineSystemConstants.DEFAULT_ID_STATEMACHINE, StateMachine.class); + StateMachine machine = resolveMachine(context); TestStateMachineMonitor monitor = context.getBean(TestStateMachineMonitor.class); - Action taction = context.getBean("taction", Action.class); - Action enaction = context.getBean("enaction", Action.class); - Action exaction = context.getBean("exaction", Action.class); LatchAction saction = context.getBean("saction", LatchAction.class); - machine.start(); + doStartAndAssert(machine); assertThat(machine.getState().getIds(), contains("S1")); - machine.sendEvent("E1"); + doSendEventAndConsumeAll(machine, "E1"); assertThat(machine.getState().getIds(), contains("S2")); // there's also initial transition, thus 2 instead 1 assertThat(monitor.transitions.size(), is(2)); @@ -69,9 +66,12 @@ public class StateMachineMonitorTests extends AbstractStateMachineTests { assertThat(monitor.latch.await(2, TimeUnit.SECONDS), is(true)); assertThat(monitor.actions.size(), is(4)); // TODO: REACTOR yeah we wrap action internally so can't match like this anymore + // Action taction = context.getBean("taction", Action.class); + // Action enaction = context.getBean("enaction", Action.class); + // Action exaction = context.getBean("exaction", Action.class); // assertThat(monitor.actions.keySet(), containsInAnyOrder(taction, enaction, exaction, saction)); monitor.reset(); - machine.sendEvent("E2"); + doSendEventAndConsumeAll(machine, "E2"); assertThat(machine.getState().getIds(), contains("S1")); }