Exemple #1
0
        public void CallAdvance_CorrectEventsRaised()
        {
            using (var serviceLocatorFixture = new ServiceLocatorFixture())
            {
                // Setup
                SetupServiceLocatorFixture(serviceLocatorFixture);

                var workflowMessage = new WorkflowMessage(Guid.NewGuid(), Guid.NewGuid(), string.Empty, Guid.NewGuid(), string.Empty, new Score());

                workflowMessage.AdministerAssessment();

                var events = new List <IDomainEvent> ();
                CommitEvent.RegisterAll(events.Add);

                var assessmentKey             = Guid.NewGuid();
                var assessmentCode            = Guid.NewGuid().ToString();
                var recommendedAssessmentKey  = Guid.NewGuid();
                var recommendedAssessmentCode = Guid.NewGuid().ToString();
                var score = new Score();
                workflowMessage.Advance(assessmentKey, assessmentCode, recommendedAssessmentKey, recommendedAssessmentCode, score);

                Assert.AreEqual(2, events.Count(), "Incorrect number of events.");
                Assert.IsTrue(events.Any(a => a.GetType() == typeof(WorkflowMessageStatusChangedEvent)), "Status Changed event not raised.");
                Assert.IsTrue(events.Any(a => a.GetType() == typeof(WorkflowMessageAdvancedEvent)), "Advanced Event not raised.");
                Assert.IsTrue(
                    (events.First(a => a.GetType() == typeof(WorkflowMessageStatusChangedEvent)) as WorkflowMessageStatusChangedEvent).Status ==
                    WorkflowMessageStatus.WaitingForResponse,
                    "Status event has wrong status.");
                var advanceEvent = events.First(a => a.GetType() == typeof(WorkflowMessageAdvancedEvent)) as WorkflowMessageAdvancedEvent;
                Assert.AreEqual(assessmentKey, advanceEvent.InitiatingAssessmentKey, "Advance event has wrong InitiatingAssessmentKey.");
                Assert.AreEqual(assessmentCode, advanceEvent.InitiatingAssessmentCode, "Advance event has wrong InitiatingAssessmentCode.");
                Assert.AreEqual(recommendedAssessmentKey, advanceEvent.RecommendedAssessmentDefinitionKey, "Advance event has wrong RecommendedAssessmentDefinitionKey.");
                Assert.AreEqual(recommendedAssessmentCode, advanceEvent.RecommendedAssessmentDefinitionCode, "Advance event has wrong RecommendedAssessmentDefinitionCode.");
                Assert.AreSame(score, advanceEvent.InitiatingAssessmentScore, "Advance event has wrong InitiatingAssessmentScore.");
                Assert.AreEqual(assessmentKey, workflowMessage.InitiatingAssessmentKey, "Worflow message has wrong InitiatingAssessmentKey.");
                Assert.AreEqual(assessmentCode, workflowMessage.InitiatingAssessmentCode, "Worflow message has wrong InitiatingAssessmentCode.");
                Assert.AreEqual(recommendedAssessmentKey, workflowMessage.RecommendedAssessmentDefinitionKey, "Worflow message has wrong RecommendedAssessmentDefinitionKey.");
                Assert.AreEqual(recommendedAssessmentCode, workflowMessage.RecommendedAssessmentDefinitionCode, "Worflow message has wrong RecommendedAssessmentDefinitionCode.");
                Assert.AreSame(score, workflowMessage.InitiatingAssessmentScore, "Worflow message has wrong InitiatingAssessmentScore.");
            }
        }
Exemple #2
0
        public void WorkflowStatesFlowCorrectly()
        {
            using (var serviceLocatorFixture = new ServiceLocatorFixture())
            {
                // Setup
                SetupServiceLocatorFixture(serviceLocatorFixture);

                var events = new List <IDomainEvent> ();
                CommitEvent.RegisterAll(events.Add);

                var workflow = new WorkflowMessage(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid().ToString(), Guid.NewGuid(), Guid.NewGuid().ToString(), new Score());

                Assert.AreEqual(WorkflowMessageStatus.WaitingForResponse, workflow.Status);

                events.Clear();
                workflow.Advance(Guid.NewGuid(), Guid.NewGuid().ToString(), Guid.NewGuid(), Guid.NewGuid().ToString(), new Score());

                Assert.AreEqual(0, events.Count());
                Assert.AreEqual(WorkflowMessageStatus.WaitingForResponse, workflow.Status);

                workflow.AdministerAssessment();

                Assert.AreEqual(WorkflowMessageStatus.InProgress, workflow.Status);

                events.Clear();
                workflow.Reject();

                Assert.AreEqual(0, events.Count());
                Assert.AreEqual(WorkflowMessageStatus.InProgress, workflow.Status);

                events.Clear();
                workflow.AdministerAssessment();

                Assert.AreEqual(0, events.Count());
                Assert.AreEqual(WorkflowMessageStatus.InProgress, workflow.Status);

                workflow.Advance(Guid.NewGuid(), Guid.NewGuid().ToString(), Guid.NewGuid(), Guid.NewGuid().ToString(), new Score());

                Assert.AreEqual(WorkflowMessageStatus.WaitingForResponse, workflow.Status);

                workflow.Reject();

                Assert.AreEqual(WorkflowMessageStatus.Rejected, workflow.Status);

                events.Clear();
                workflow.Reject();

                Assert.AreEqual(0, events.Count());
                Assert.AreEqual(WorkflowMessageStatus.Rejected, workflow.Status);

                events.Clear();
                workflow.AdministerAssessment();

                Assert.AreEqual(0, events.Count());
                Assert.AreEqual(WorkflowMessageStatus.Rejected, workflow.Status);

                events.Clear();
                workflow.Advance(Guid.NewGuid(), Guid.NewGuid().ToString(), Guid.NewGuid(), Guid.NewGuid().ToString(), new Score());

                Assert.AreEqual(0, events.Count());
                Assert.AreEqual(WorkflowMessageStatus.Rejected, workflow.Status);
            }
        }