Beispiel #1
0
        public void Should_reject_transition_for_any_inconsistent_entities()
        {
            var mobStator = GetMobStatorWithFiveCorrectEntities();

            var user = new User {
                Status = UserStatus.Active
            };
            var subscription = new UserSubscription {
                Status = SubscriptionStatus.Active
            };
            var space = new PersonalSpace {
                Status = PersonalSpaceStatus.Granted
            };
            var account = new Account {
                Status = AccountStatus.Blocked
            };
            var account2 = new Account {
                Status = AccountStatus.Existed
            };
            var @event = new UserBlockedEvent();

            Assert.Throws <StatorConfigurationException>(() => mobStator.Go(@event, user, subscription, account, space, account2));
            Assert.Throws <StatorConfigurationException>(() => mobStator.Go(@event, user));

            Assert.Equal(UserStatus.Active, user.Status);
            Assert.Equal(SubscriptionStatus.Active, subscription.Status);
            Assert.Equal(PersonalSpaceStatus.Granted, space.Status);
            Assert.Equal(AccountStatus.Blocked, account.Status);
            Assert.Equal(AccountStatus.Existed, account2.Status);
        }
Beispiel #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);
        }
Beispiel #3
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);
        }
 // Start is called before the first frame update
 void Start()
 {
     rb             = this.gameObject.GetComponent <Rigidbody2D>();
     decisionSystem = this.gameObject.GetComponent <BehaviourDecisionSystem>();
     pSpace         = this.gameObject.GetComponentInChildren <PersonalSpace>();
 }