Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }