Exemple #1
0
        public void Assign_BugIsAlreadyAssignedAndSelfTransitionNotPermitted_TransitionNotRun()
        {
            //arrange
            _stateMachine = new StateMachine <BugState, TransitionActionStatus>("state machine name",
                                                                                _transitions,
                                                                                permitSelfTransition: false,
                                                                                initialState: new BugState.Open());
            var bug = new BugStateful(_bug, _stateMachine);
            TransitionActionStatus transitionActionStatus;
            const string           assigneeEmail1 = "*****@*****.**";
            const string           assigneeEmail2 = "*****@*****.**";

            //act
            bug.Assign(assigneeEmail1, out transitionActionStatus);

            var exceptionCaught = false;

            try
            {
                bug.Assign(assigneeEmail2, out transitionActionStatus);
            }
            catch (SelfTransitionException)
            {
                exceptionCaught = true;
            }

            //assert
            Assert.That(exceptionCaught, Is.EqualTo(true));
            Assert.That(bug.CurrentState, Is.TypeOf <BugState.Assigned>());
            Assert.That(bug.Bug.AssigneeEmail, Is.EqualTo(assigneeEmail1));
            Assert.That(transitionActionStatus, Is.EqualTo(TransitionActionStatus.NotRun));
        }
        public void Assign_BugIsAlreadyAssignedAndSelfTransitionNotPermitted_TransitionNotRun()
        {
            //arrange
            _stateMachine = new StateMachine<BugState, TransitionActionStatus>("state machine name",
                                                                               _transitions,
                                                                               permitSelfTransition: false,
                                                                               initialState: new BugState.Open());
            var bug = new BugStateful(_bug, _stateMachine);
            TransitionActionStatus transitionActionStatus;
            const string assigneeEmail1 = "*****@*****.**";
            const string assigneeEmail2 = "*****@*****.**";

            //act
            bug.Assign(assigneeEmail1, out transitionActionStatus);

            var exceptionCaught = false;
            try
            {
                bug.Assign(assigneeEmail2, out transitionActionStatus);
            }
            catch (SelfTransitionException)
            {
                exceptionCaught = true;
            }

            //assert
            Assert.That(exceptionCaught, Is.EqualTo(true));
            Assert.That(bug.CurrentState, Is.TypeOf<BugState.Assigned>());
            Assert.That(bug.Bug.AssigneeEmail, Is.EqualTo(assigneeEmail1));
            Assert.That(transitionActionStatus, Is.EqualTo(TransitionActionStatus.NotRun));
        }
Exemple #3
0
        public void Resolve_BugIsOpen_ExceptionThrown()
        {
            //arrange
            var bug = new BugStateful(_bug, _stateMachine);
            TransitionActionStatus transitionActionStatus;

            //act & assert
            Assert.Throws <InvalidStateTransitionException <BugState> >(() => bug.Resolve(out transitionActionStatus));
        }
Exemple #4
0
        public void TriggerTransition_UnexpectedDtoSupplied_NoExceptionThrown()
        {
            //arrange
            var     bug  = new BugStateful(_bug, _stateMachine);
            dynamic args = new ExpandoObject();

            args.Foo = "foo";
            TransitionActionStatus transitionActionStatus;

            //act & assert
            Assert.DoesNotThrow(() => bug.TriggerTransition(bug, new BugState.Deferred(), out transitionActionStatus, args));
        }
        public void AssignFollowedByDefer_BugIsOpen_TransitionsSucceed()
        {
            //arrange
            var bug = new BugStateful(_bug, _stateMachine);
            TransitionActionStatus transitionActionStatus;

            //act
            bug.Assign("*****@*****.**", out transitionActionStatus)
               .Defer(out transitionActionStatus);

            //assert
            Assert.That(bug.CurrentState, Is.TypeOf<BugState.Deferred>());
            Assert.That(transitionActionStatus, Is.EqualTo(TransitionActionStatus.Success));
            Assert.That(bug.Bug.AssigneeEmail, Is.EqualTo(string.Empty));
        }
Exemple #6
0
        public void Assign_BugIsOpen_TransitionSuccess()
        {
            //arrange
            var bug = new BugStateful(_bug, _stateMachine);
            TransitionActionStatus transitionActionStatus;
            const string           assigneeEmail = "*****@*****.**";

            //act
            bug.Assign(assigneeEmail, out transitionActionStatus);

            //assert
            Assert.That(bug.CurrentState, Is.TypeOf <BugState.Assigned>());
            Assert.That(bug.Bug.AssigneeEmail, Is.EqualTo(assigneeEmail));
            Assert.That(transitionActionStatus, Is.EqualTo(TransitionActionStatus.Success));
        }
Exemple #7
0
        public void AssignFollowedByDefer_BugIsOpen_TransitionsSucceed()
        {
            //arrange
            var bug = new BugStateful(_bug, _stateMachine);
            TransitionActionStatus transitionActionStatus;

            //act
            bug.Assign("*****@*****.**", out transitionActionStatus)
            .Defer(out transitionActionStatus);

            //assert
            Assert.That(bug.CurrentState, Is.TypeOf <BugState.Deferred>());
            Assert.That(transitionActionStatus, Is.EqualTo(TransitionActionStatus.Success));
            Assert.That(bug.Bug.AssigneeEmail, Is.EqualTo(string.Empty));
        }
        public void Assign_BugIsAlreadyAssigned_TransitionSuccess()
        {
            //arrange
            var bug = new BugStateful(_bug, _stateMachine);
            TransitionActionStatus transitionActionStatus;
            const string assigneeEmail1 = "*****@*****.**";
            const string assigneeEmail2 = "*****@*****.**";

            //act
            bug.Assign(assigneeEmail1, out transitionActionStatus);
            bug.Assign(assigneeEmail2, out transitionActionStatus);

            //assert
            Assert.That(bug.CurrentState, Is.TypeOf<BugState.Assigned>());
            Assert.That(bug.Bug.AssigneeEmail, Is.EqualTo(assigneeEmail2));
            Assert.That(transitionActionStatus, Is.EqualTo(TransitionActionStatus.Success));
        }
        public void TriggerTransition_UnexpectedDtoSupplied_NoExceptionThrown()
        {
            //arrange
            var bug = new BugStateful(_bug, _stateMachine);
            dynamic args = new ExpandoObject();
            args.Foo = "foo";
            TransitionActionStatus transitionActionStatus;

            //act & assert
            Assert.DoesNotThrow(() => bug.TriggerTransition(bug, new BugState.Deferred(), out transitionActionStatus, args));
        }
        public void Resolve_BugIsOpen_ExceptionThrown()
        {
            //arrange
            var bug = new BugStateful(_bug, _stateMachine);
            TransitionActionStatus transitionActionStatus;

            //act & assert
            Assert.Throws<InvalidStateTransitionException<BugState>>(() => bug.Resolve(out transitionActionStatus));
        }