PageRenderTime 41ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/Source/Bifrost.Specs/Sagas/for_SagaState/when_in_a_state_of_begun.cs

#
C# | 43 lines | 35 code | 8 blank | 0 comment | 0 complexity | 31eea6212bbded4953b1411e9dd2c0dc MD5 | raw file
Possible License(s): CC-BY-SA-3.0
  1. using System;
  2. using Bifrost.Sagas;
  3. using Bifrost.Sagas.Exceptions;
  4. using Machine.Specifications;
  5. namespace Bifrost.Specs.Sagas.for_SagaState
  6. {
  7. [Subject(typeof(SagaState))]
  8. public class when_in_a_state_of_begun : given.a_state_of_begun
  9. {
  10. static Exception exception_when_transitioning_to_an_invalid_state;
  11. static Exception exception_when_transitioning_to_a_valid_state;
  12. static bool can_transition_to_new;
  13. static bool can_transition_to_begun;
  14. static bool can_transition_to_continuing;
  15. static bool can_transition_to_concluded;
  16. Because of = () =>
  17. {
  18. can_transition_to_new = state.CanTransitionTo(SagaState.NEW);
  19. can_transition_to_begun = state.CanTransitionTo(SagaState.BEGUN);
  20. can_transition_to_continuing = state.CanTransitionTo(SagaState.CONTINUING);
  21. can_transition_to_concluded = state.CanTransitionTo(SagaState.CONCLUDED);
  22. exception_when_transitioning_to_an_invalid_state = exception_when_transitioning_to_an_invalid_state = Catch.Exception(() => state.TransitionTo(SagaState.BEGUN));
  23. exception_when_transitioning_to_a_valid_state = exception_when_transitioning_to_a_valid_state = Catch.Exception(() => state.TransitionTo(SagaState.CONTINUING));
  24. };
  25. It should_not_support_transitioning_to_new = () => can_transition_to_new.ShouldBeFalse();
  26. It should_not_support_transitioning_to_begun = () => can_transition_to_begun.ShouldBeFalse();
  27. It should_not_support_transitioning_to_continuing = () => can_transition_to_continuing.ShouldBeTrue();
  28. It should_support_transitioning_to_concluded = () => can_transition_to_concluded.ShouldBeTrue();
  29. It should_throw_an_invalid_saga_state_transition_exception_when_transitioning_to_an_invalid_state =
  30. () => exception_when_transitioning_to_an_invalid_state.ShouldBeOfType<InvalidSagaStateTransitionException>();
  31. It should_not_throw_an_invalid_saga_state_transition_exception_when_transitioning_to_a_valid_state =
  32. () => exception_when_transitioning_to_a_valid_state.ShouldBeNull();
  33. It should_have_the_new_state_after_transitioning = () => state.IsContinuing.ShouldBeTrue();
  34. }
  35. }