public void Should_allow_valid_transition_for_any_entities() { IMobStator mobStator = GetMobStatorWithFiveCorrectEntities(); var user = new User { Status = UserStatus.Striked }; var subscription = new UserSubscription { Status = SubscriptionStatus.Active }; var space = new PersonalSpace { Status = PersonalSpaceStatus.Granted }; var ranking = new Ranking { Status = RankingStatus.Tracked }; var account = new Account { Status = AccountStatus.Blocked }; var @event = new UserBlockedEvent(); var result = mobStator.Go(@event, user, subscription, account, space, ranking); Assert.Throws <StatorConfigurationException>(() => mobStator.Go(@event, user, space)); Assert.Equal(UserStatus.Deleted, user.Status); Assert.Equal(SubscriptionStatus.Closed, subscription.Status); Assert.Equal(PersonalSpaceStatus.Blocked, space.Status); Assert.Equal(RankingStatus.Untracked, ranking.Status); Assert.Equal(AccountStatus.Deleted, account.Status); Assert.True(result.Success); }
public void Should_do_rollback_for_5_entities() { IMobStator mobStator = GetBrokenMobStatorWithFiveEntities(true); var user = new User { Status = UserStatus.Striked }; var subscription = new UserSubscription { Status = SubscriptionStatus.Active }; var space = new PersonalSpace { Status = PersonalSpaceStatus.Granted }; var ranking = new Ranking { Status = RankingStatus.Tracked }; var account = new Account { Status = AccountStatus.Blocked }; var @event = new UserBlockedEvent(); Assert.Throws <Exception>(() => mobStator.Go(@event, user, subscription, account, space, ranking)); Assert.Equal(UserStatus.Striked, user.Status); Assert.Equal(SubscriptionStatus.Active, subscription.Status); Assert.Equal(PersonalSpaceStatus.Granted, space.Status); Assert.Equal(RankingStatus.Tracked, ranking.Status); Assert.Equal(AccountStatus.Blocked, account.Status); }
public void Should_not_do_rollback_for_2_entities() { IMobStator <User, UserSubscription> mobStator = GetBrokenMobStatorForTwoEntities(false); var user = new User { Status = UserStatus.Active }; var subscription = new UserSubscription { Status = SubscriptionStatus.Active }; var @event = new UserBlockedEvent(); Assert.Throws <Exception>(() => mobStator.Go(@event, Tuple.Create(user, subscription))); Assert.NotEqual(UserStatus.Active, user.Status); Assert.NotEqual(SubscriptionStatus.Active, subscription.Status); }
public void Should_allow_valid_transition_for_2_entities( IEvent @event, UserStatus userStatusFrom, UserStatus userStatusTo, SubscriptionStatus subscriptionStatusFrom, SubscriptionStatus subscriptionStatusTo) { IMobStator <User, UserSubscription> mobStator = GetMobStatorForTwoEntities(); var user = new User { Status = userStatusFrom }; var subscription = new UserSubscription { Status = subscriptionStatusFrom }; var result = mobStator.Go(@event, Tuple.Create(user, subscription)); Assert.Equal(userStatusTo, user.Status); Assert.Equal(subscriptionStatusTo, subscription.Status); Assert.True(result.Success); }