sagaSpecTests
fun sagaSpecTests(handlers: List<ProcessorBinding<*>>, block: ProcessorSpec.() -> Unit): Stream<DynamicNode>
The specification sagaSpec runs, as a tree of tests for a JUnit @TestFactory: each ProcessorSpec.whenEvent, ProcessorSpec.whenRejected and ProcessorSpec.whenCommitted is a test of its own, and each ProcessorSpec.fork a container named by it; a failing check fails its own test only, as aggregateSpecTests does:
@TestFactory
fun orderSaga() = sagaSpecTests(orderSagaHandlers()) {
whenEvent(stateEvent(order, OrderState("order-1"), orderCreated)) {
expectCommands(ReserveStock("order-1", 2))
fork("out of stock") {
whenRejected(commands.single(), code = "inventory.stock.insufficient") { expectCommandTypes(CancelOrder::class) }
}
fork("reserved") { whenCommitted(commands.single()) { expectCommandTypes(ConfirmStock::class) } }
}
}Content copied to clipboard