Skip to content

Commit 707d27e

Browse files
committed
GH-136 - Simple suppliers need to be executed transactionally in Scenario.
1 parent 2f34d69 commit 707d27e

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

spring-modulith-test/src/main/java/org/springframework/modulith/test/Scenario.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public <S> When<S> stimulate(Supplier<S> supplier, Consumer<S> cleanupCallback)
151151
Assert.notNull(supplier, "Supplier must not be null!");
152152
Assert.notNull(cleanupCallback, "Cleanup callback must not be null!");
153153

154-
return stimulate((tx, e) -> supplier.get(), cleanupCallback);
154+
return stimulate((tx) -> tx.execute(status -> supplier.get()), cleanupCallback);
155155
}
156156

157157
/**

spring-modulith-test/src/test/java/org/springframework/modulith/test/ScenarioUnitTests.java

+19-2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@
3535
import org.springframework.context.PayloadApplicationEvent;
3636
import org.springframework.modulith.test.PublishedEventsAssert.PublishedEventAssert;
3737
import org.springframework.modulith.test.Scenario.When;
38+
import org.springframework.transaction.TransactionException;
39+
import org.springframework.transaction.support.SimpleTransactionStatus;
40+
import org.springframework.transaction.support.TransactionCallback;
3841
import org.springframework.transaction.support.TransactionOperations;
3942

4043
/**
@@ -43,14 +46,14 @@
4346
* @author Oliver Drotbohm
4447
*/
4548
@ExtendWith(MockitoExtension.class)
46-
public class ScenarioUnitTests {
49+
class ScenarioUnitTests {
4750

4851
private static final Duration DELAY = Duration.ofMillis(50);
4952
private static final Duration WAIT_TIME = Duration.ofMillis(101);
5053
private static final Duration TIMED_OUT = Duration.ofMillis(150);
5154

52-
@Mock TransactionOperations tx;
5355
@Mock ApplicationEventPublisher publisher;
56+
TransactionOperations tx = StubTransactionOperations.INSTANCE;
5457

5558
@Test // GH-136
5659
void timesOutIfNoEventArrivesInTime() throws Throwable {
@@ -417,6 +420,20 @@ private void foo() {
417420

418421
record SomeEvent(String payload) {}
419422

423+
enum StubTransactionOperations implements TransactionOperations {
424+
425+
INSTANCE;
426+
427+
/*
428+
* (non-Javadoc)
429+
* @see org.springframework.transaction.support.TransactionOperations#execute(org.springframework.transaction.support.TransactionCallback)
430+
*/
431+
@Override
432+
public <T> T execute(TransactionCallback<T> action) throws TransactionException {
433+
return action.doInTransaction(new SimpleTransactionStatus());
434+
}
435+
}
436+
420437
static class CapturingExceptionHandler implements UncaughtExceptionHandler {
421438

422439
Throwable caught;

0 commit comments

Comments
 (0)