public void Test_One_To_Many_Execution_To_Failure() { // Arrange var switcher = OperationExecutionStateSwitcherBuilder.Build(); var aggregate = OperationExecutionAggregate.Start ( Guid.NewGuid(), "", new [] { new TransactionOutputValueType("1", 1.0m), new TransactionOutputValueType("2", 2.0m), }, "", false, "", "", OperationExecutionEndpointsConfiguration.OneToOne ); // Act / Assert Assert.Equal(OperationExecutionState.Started, aggregate.State); Assert.True(switcher.Switch(aggregate, new ActiveTransactionIdGeneratedEvent { TransactionNumber = 1 })); Assert.Equal(OperationExecutionState.ActiveTransactionIdGenerated, aggregate.State); Assert.True(switcher.Switch(aggregate, new TransactionExecutionStartedEvent { TransactionNumber = 1 })); Assert.Equal(OperationExecutionState.TransactionExecutionInProgress, aggregate.State); Assert.True(switcher.Switch(aggregate, new TransactionExecutionFailedEvent { ErrorCode = TransactionExecutionResult.UnknownError, TransactionNumber = 1 })); Assert.Equal(OperationExecutionState.Failed, aggregate.State); Assert.True(switcher.Switch(aggregate, new OperationExecutionFailedEvent())); Assert.Equal(OperationExecutionState.NotifiedAboutEnding, aggregate.State); }
public void Test_Simple_Execution_To_Completion() { // Arrange var switcher = OperationExecutionStateSwitcherBuilder.Build(); var aggregate = OperationExecutionAggregate.Start ( Guid.NewGuid(), "", new [] { new TransactionOutputValueType("", 0) }, "", false, "", "", OperationExecutionEndpointsConfiguration.OneToOne ); // Act / Assert Assert.Equal(OperationExecutionState.Started, aggregate.State); Assert.True(switcher.Switch(aggregate, new ActiveTransactionIdGeneratedEvent { TransactionNumber = 1 })); Assert.Equal(OperationExecutionState.ActiveTransactionIdGenerated, aggregate.State); Assert.True(switcher.Switch(aggregate, new TransactionExecutionStartedEvent { TransactionNumber = 1 })); Assert.Equal(OperationExecutionState.TransactionExecutionInProgress, aggregate.State); Assert.True(switcher.Switch(aggregate, new TransactionExecutionCompletedEvent { TransactionNumber = 1 })); Assert.Equal(OperationExecutionState.Completed, aggregate.State); Assert.True(switcher.Switch(aggregate, new OperationExecutionCompletedEvent())); Assert.Equal(OperationExecutionState.NotifiedAboutEnding, aggregate.State); }
public void Test_Execution_With_Double_Transaction_Repeat_To_Failure() { // Arrange var switcher = OperationExecutionStateSwitcherBuilder.Build(); var aggregate = OperationExecutionAggregate.Start ( Guid.NewGuid(), "", new [] { new TransactionOutputValueType("", 0) }, "", false, "", "", OperationExecutionEndpointsConfiguration.OneToOne ); // Act / Assert Assert.Equal(OperationExecutionState.Started, aggregate.State); Assert.True(switcher.Switch(aggregate, new ActiveTransactionIdGeneratedEvent { TransactionNumber = 1 })); Assert.Equal(OperationExecutionState.ActiveTransactionIdGenerated, aggregate.State); Assert.True(switcher.Switch(aggregate, new TransactionExecutionStartedEvent { TransactionNumber = 1 })); Assert.Equal(OperationExecutionState.TransactionExecutionInProgress, aggregate.State); foreach (var transactionNumber in Enumerable.Range(2, 2)) { Assert.True(switcher.Switch(aggregate, new TransactionExecutionRepeatRequestedEvent { ErrorCode = TransactionExecutionResult.RebuildingIsRequired, TransactionNumber = transactionNumber - 1 })); Assert.Equal(OperationExecutionState.TransactionExecutionRepeatRequested, aggregate.State); Assert.True(switcher.Switch(aggregate, new ActiveTransactionClearedEvent { TransactionNumber = transactionNumber - 1 })); Assert.Equal(OperationExecutionState.ActiveTransactionCleared, aggregate.State); Assert.True(switcher.Switch(aggregate, new ActiveTransactionIdGeneratedEvent { TransactionNumber = transactionNumber })); Assert.Equal(OperationExecutionState.ActiveTransactionIdGenerated, aggregate.State); Assert.True(switcher.Switch(aggregate, new TransactionExecutionStartedEvent { TransactionNumber = transactionNumber })); Assert.Equal(OperationExecutionState.TransactionExecutionInProgress, aggregate.State); } Assert.True(switcher.Switch(aggregate, new TransactionExecutionFailedEvent { ErrorCode = TransactionExecutionResult.UnknownError, TransactionNumber = 3 })); Assert.Equal(OperationExecutionState.Failed, aggregate.State); Assert.True(switcher.Switch(aggregate, new OperationExecutionFailedEvent())); Assert.Equal(OperationExecutionState.NotifiedAboutEnding, aggregate.State); }