axon-kotlin / com.tylerthrailkill.axon_kotlin.axonframework.test.saga.dsl / SagaTestFixtureBuilder

SagaTestFixtureBuilder

class SagaTestFixtureBuilder
FixtureExecutionResult validator = fixture
  .givenAggregate(aggregate1).published(
      GenericEventMessage.asEventMessage(new TriggerSagaStartEvent(aggregate1)), new TriggerExistingSagaEvent(aggregate1))
  .andThenAggregate(aggregate2).published(new TriggerSagaStartEvent(aggregate2))
  .whenAggregate(aggregate1).publishes(new TriggerSagaEndEvent(aggregate1))

  validator.expectActiveSagas(1)
  validator.expectAssociationWith("identifier", aggregate2)
  validator.expectNoAssociationWith("identifier", aggregate1)
  validator.expectScheduledEventOfType(Duration.ofMinutes(10), TimerTriggeredEvent::class.java)
  validator.expectScheduledEventMatching(Duration.ofMinutes(10), messageWithPayload(CoreMatchers.any(TimerTriggeredEvent::class.java)))
  validator.expectScheduledEvent(Duration.ofMinutes(10), TimerTriggeredEvent(aggregate1))
  validator.expectScheduledEventOfType(fixture.currentTime().plusSeconds(600), TimerTriggeredEvent::class.java)
  validator.expectScheduledEventMatching(fixture.currentTime().plusSeconds(600), messageWithPayload(CoreMatchers.any(TimerTriggeredEvent::class.java)))
  validator.expectScheduledEvent(fixture.currentTime().plusSeconds(600), TimerTriggeredEvent(aggregate1))
  validator.expectDispatchedCommands()
  validator.expectNoDispatchedCommands()
  validator.expectPublishedEventsMatching(noEvents())

translates to

fixture {
  given {
    aggregate1 published GenericEventMessage.asEventMessage(TriggerSagaStartEvent(aggregate1)), TriggerExistingSagaEvent(aggregate1))
    aggregate2 published TriggerSagaStartEvent(aggregate2)
  }
  whenever {
    aggregate1 publishes TriggerSagaEndEvent(aggregate1)
  }
  expect {
    activeSagas(1)
    "identifier" associatedWith aggregate2
    "identifier" notAssociatedWith aggregate1
    scheduledEvent(Duration.ofMinutes(10)).ofType<TimerTriggeredEvent()
    scheduledEvent(Duration.ofMinutes(10).matching(messageWithPayload(any<TimerTriggeredEvent>()))
    scheduledEvent(Duration.ofMinutes(10).of(TimerTriggeredEvent(aggregate1))
    dispatchedCommands {}
    noDispatchedCommands()
    publishedEventsMatching = noEvents()
  }

Types

AnyUnaryBuilder

class AnyUnaryBuilder

ExpectsBuilder

inner class ExpectsBuilder

GivenBuilder

inner class GivenBuilder

RegisterBuilder

inner class RegisterBuilder

WheneverBuilder

inner class WheneverBuilder

Constructors

<init>

SagaTestFixtureBuilder(sagaTestFixture: FixtureConfiguration)
FixtureExecutionResult validator = fixture
  .givenAggregate(aggregate1).published(
      GenericEventMessage.asEventMessage(new TriggerSagaStartEvent(aggregate1)), new TriggerExistingSagaEvent(aggregate1))
  .andThenAggregate(aggregate2).published(new TriggerSagaStartEvent(aggregate2))
  .whenAggregate(aggregate1).publishes(new TriggerSagaEndEvent(aggregate1))

  validator.expectActiveSagas(1)
  validator.expectAssociationWith("identifier", aggregate2)
  validator.expectNoAssociationWith("identifier", aggregate1)
  validator.expectScheduledEventOfType(Duration.ofMinutes(10), TimerTriggeredEvent::class.java)
  validator.expectScheduledEventMatching(Duration.ofMinutes(10), messageWithPayload(CoreMatchers.any(TimerTriggeredEvent::class.java)))
  validator.expectScheduledEvent(Duration.ofMinutes(10), TimerTriggeredEvent(aggregate1))
  validator.expectScheduledEventOfType(fixture.currentTime().plusSeconds(600), TimerTriggeredEvent::class.java)
  validator.expectScheduledEventMatching(fixture.currentTime().plusSeconds(600), messageWithPayload(CoreMatchers.any(TimerTriggeredEvent::class.java)))
  validator.expectScheduledEvent(fixture.currentTime().plusSeconds(600), TimerTriggeredEvent(aggregate1))
  validator.expectDispatchedCommands()
  validator.expectNoDispatchedCommands()
  validator.expectPublishedEventsMatching(noEvents())

Properties

continuedGivenState

lateinit var continuedGivenState: WhenState

fixtureExecutionResult

lateinit var fixtureExecutionResult: FixtureExecutionResult

sagaTestFixture

val sagaTestFixture: FixtureConfiguration

Functions

callbackBehavior

fun callbackBehavior(callbackBehavior: CallbackBehavior): Unit

expect

fun expect(block: ExpectsBuilder.() -> Unit): Unit

given

fun given(block: GivenBuilder.() -> Unit): WhenState

register

fun register(block: RegisterBuilder.() -> Unit): RegisterBuilder

whenever

fun whenever(block: WheneverBuilder.() -> Unit): FixtureExecutionResult