public void CurrentStateIsReported()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = view.Model;

                // Act
                model.New();

                // Assert
                Assert.AreEqual(StateMachineExample.State1, model.CurrentState);
            }
        }
        public void CtorShouldCreateTracker()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = new WorkflowModel(view);

                // Act
                var wi = new WorkflowInstance(model);

                // Assert
                Assert.IsNotNull(wi.StateTracker);
            }
        }
        public void CurrentStateIsNullWhenNew()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = view.Model;

                // Act
                var state = model.CurrentState;

                // Assert
                Assert.IsNull(state);
            }
        }
        public void HostIsNotNull()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = new WorkflowModel(view);
                var wi = new WorkflowInstance(model);

                // Act
                wi.New();

                // Assert
                Assert.IsNotNull(wi.Host);
            }
        }
        public void CurrentStateMachineNameIsNullWhenNew()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = view.Model;

                // Act
                var stateMachineName = model.CurrentStateMachineName;

                // Assert
                Assert.AreEqual(WorkflowModel.Unknown, stateMachineName);
            }
        }
        public void UnloadShouldUnloadWorkflowApp()
        {
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                // Arrange
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = new WorkflowModel(view);

                // Create and run the workflow
                model.New();

                // Act
                // Load the instances from the datbase
                var workflowInstance = model.CurrentInstance;
                workflowInstance.Unload();
                var isLoaded = workflowInstance.IsLoaded;

                // Assert
                Assert.IsFalse(isLoaded);
            }
        }
        public void ResumeShouldResume()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = new WorkflowModel(view);
                var wi = new WorkflowInstance(model);
                wi.New();

                // Act
                wi.Resume(StateTrigger.T1);

                // Assert
                Assert.AreEqual(StateMachineExample.State2, wi.StateTracker.CurrentState);
            }
        }
        public void IsLoadedReturnsTrueOnNew()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = new WorkflowModel(view);
                var wi = new WorkflowInstance(model);
                wi.New();

                // Act
                var actual = wi.IsLoaded;

                // Assert
                Assert.IsTrue(actual);
            }
        }
        public void IsLoadedFiresPropertyChanged()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = new WorkflowModel(view);
                var wi = new WorkflowInstance(model);
                var propChanged = false;

                wi.PropertyChanged += (sender, args) =>
                    {
                        if (!propChanged)
                        {
                            propChanged = args.PropertyName == "IsLoaded";
                        }
                    };

                // Act
                wi.New();

                // Assert
                Assert.IsTrue(propChanged);
            }
        }
        public void IdIsNotEmptyGuid()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = new WorkflowModel(view);
                var wi = new WorkflowInstance(model);

                // Act
                var id = wi.Id;

                // Assert
                Assert.AreEqual(Guid.Empty, id);
            }
        }
        public void IdIsLoadedTrackerId()
        {
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                // Arrange
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = new WorkflowModel(view);

                // Create and run the workflow
                var id = model.New();

                // Act

                // Load the instances from the datbase
                model.LoadInstances(view);

                // Get the id from the state tracker
                var hostid = model.CurrentInstance.Id;

                // Assert
                Assert.AreEqual(hostid, id);
            }
        }
示例#12
0
        public void IsLoadedTrueWhenRun()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = view.Model;

                model.New();

                // Act
                var actual = model.IsLoaded;

                // Assert
                Assert.IsTrue(actual);
            }
        }
示例#13
0
        public void TransitionsReturnCollectionWhenRun()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = view.Model;
                model.New();

                // Act
                var actual = model.Transitions;

                // Assert
                Assert.AreEqual(2, actual.Count);
                AssertHelper.OccursInOrder(actual, StateTrigger.T1.ToString(), StateTrigger.T2.ToString());
            }
        }
示例#14
0
        public void OnCompleteRemovesCurrent()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = view.Model;
                var completedEvent = new AutoResetEvent(false);
                model.Workflows.CollectionChanged += (sender, args) => completedEvent.Set();
                model.New();

                // Act
                model.ResumeBookmark(StateTrigger.T1);
                var index1 = model.SelectedIndex;
                var count1 = model.Workflows.Count;

                // Complete the workflow
                model.ResumeBookmark(StateTrigger.T5);
                completedEvent.WaitOne(Globals.Timeout);

                var index2 = model.SelectedIndex;
                var count2 = model.Workflows.Count;

                // Assert
                Assert.AreEqual(1, count1);
                Assert.AreEqual(0, index1);
                Assert.AreEqual(0, count2);
                Assert.AreEqual(-1, index2);
            }
        }
示例#15
0
        public void ModelReturnsStateHistory()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = view.Model;

                // Act
                model.New();

                // Assert
                Assert.AreEqual(1, model.StateHistory.Count);
            }
        }
示例#16
0
        public void LoadShouldLoadWorkflowApp()
        {
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                // Arrange
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = view.Model;

                // Create and run the workflow
                model.New();
                model.Unload();

                // Act
                model.Load();
                var isLoaded = model.IsLoaded;

                // Assert
                Assert.IsTrue(isLoaded);
            }
        }
示例#17
0
        public void LoadReturnsFalseWhenNoCurrentInstance()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = view.Model;

                // Act
                var actual = model.Load();

                // Assert
                Assert.IsFalse(actual);
            }
        }
        public void IdIsHostId()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = new WorkflowModel(view);
                var wi = new WorkflowInstance(model);

                // Act
                wi.New();
                var hostid = wi.Host.Id;
                var id = wi.Id;

                // Assert
                Assert.AreEqual(hostid, id);
            }
        }
示例#19
0
        public void IsLoadedFalseAfterCreate()
        {
            // Arrange
            using (var testdb = new SqlWorkflowInstanceStoreTest())
            {
                var view = new TestWorkflowView(testdb.CreateInstanceStore());
                var model = view.Model;

                // Act
                var actual = model.IsLoaded;

                // Assert
                Assert.IsFalse(actual);
            }
        }