public void Signal_timer_is_ignored_when_it_is_fired_after_receiving_the_signals_and_signal_timer_and_signals_are_processed_together_also_signal_was_received_after_timedout( Type workflowType, ScheduleId promoteEmployee, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completedStamp = currentTime.AddHours(-2); var lg = completedGraph(completedStamp); _builder.AddProcessedEvents(lg); var signalTriggerEventId = lg.First().EventId; _builder.AddProcessedEvents(WaitForSignalEvent(promoteEmployee, signalTriggerEventId, completedStamp, _waitingSignals)); var hrSignal = _graphBuilder.WorkflowSignaledEvent("HRApproved", "input", completedTime: currentTime.AddMinutes(1)); _builder.AddNewEvents(hrSignal); var managerSignal = _graphBuilder.WorkflowSignaledEvent("ManagerApproved", "input", completedTime: currentTime.AddMinutes(1)); _builder.AddNewEvents(managerSignal); var timerFiredGraph = _graphBuilder.TimerFiredGraph(promoteEmployee, TimeSpan.FromHours(1), TimerType.SignalTimer, signalTriggerEventId, currentTime.AddMinutes(1)); _builder.AddNewEvents(timerFiredGraph); var workflow = (Workflow)Activator.CreateInstance(workflowType); var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions.Length, Is.EqualTo(3)); Assert.That(decisions[0], Is.EqualTo(new ScheduleLambdaDecision(_hrApprovalTimedout, ""))); Assert.That(decisions[1], Is.EqualTo(new ScheduleLambdaDecision(_managerApprovalTimedout, ""))); decisions[2].AssertSignalTimedout(promoteEmployee, signalTriggerEventId, _waitingSignals, hrSignal.EventId); }
public void Continue_with_manager_approval_timeout_when_hrapproval_is_received_and_processed_before_timeout_and_signal_timer_is_fired( Type workflowType, ScheduleId promoteEmployee, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completedStamp = currentTime.AddHours(-2); var lg = completedGraph(completedStamp); _builder.AddProcessedEvents(lg); var signalTriggerEventId = lg.First().EventId; _builder.AddProcessedEvents(WaitForSignalEvent(promoteEmployee, signalTriggerEventId, completedStamp, _waitingSignals)); _builder.AddProcessedEvents(_graphBuilder.WorkflowSignaledEvent("HRApproved", "input", completedTime: currentTime.AddHours(-1))); _builder.AddProcessedEvents(_graphBuilder.WorkflowItemSignalledEvent(promoteEmployee, signalTriggerEventId, "HRApproved")); var timerFiredGraph = _graphBuilder.TimerFiredGraph(promoteEmployee, TimeSpan.FromHours(1), TimerType.SignalTimer, signalTriggerEventId, currentTime); _builder.AddNewEvents(timerFiredGraph); var workflow = (Workflow)Activator.CreateInstance(workflowType); var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions.Length, Is.EqualTo(2)); decisions[0].AssertSignalTimedout(promoteEmployee, signalTriggerEventId, new[] { "ManagerApproved" }, timerFiredGraph.First().EventId); Assert.That(decisions[1], Is.EqualTo(new ScheduleLambdaDecision(_managerApprovalTimedout, ""))); }
public void Continue_with_manager_approval_timeout_when_hrapproval_is_received_before_timeout_and_manager_approval_is_received_after_timeout_and_both_signals_are_processed_togather( Type workflowType, ScheduleId promoteEmployee, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completedStamp = currentTime.AddMinutes(-121); var lg = completedGraph(completedStamp); _builder.AddProcessedEvents(lg); var signalTriggerEventId = lg.First().EventId; _builder.AddProcessedEvents(WaitForSignalEvent(promoteEmployee, signalTriggerEventId, completedStamp, _waitingSignals)); var hrSignal = _graphBuilder.WorkflowSignaledEvent("HRApproved", "input", completedTime: currentTime.AddHours(-1)); _builder.AddNewEvents(hrSignal); var managerSignal = _graphBuilder.WorkflowSignaledEvent("ManagerApproved", "input", completedTime: currentTime); _builder.AddNewEvents(managerSignal); var workflow = (Workflow)Activator.CreateInstance(workflowType); var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions.Length, Is.EqualTo(3)); Assert.That(decisions[0], Is.EqualTo(new WorkflowItemSignalledDecision(promoteEmployee, signalTriggerEventId, "HRApproved", hrSignal.EventId))); Assert.That(decisions[1], Is.EqualTo(new ScheduleLambdaDecision(_managerApprovalTimedout, ""))); decisions[2].AssertSignalTimedout(promoteEmployee, signalTriggerEventId, new[] { "ManagerApproved" }, managerSignal.EventId); }
public void Signal_is_ignored_when_it_is_received_after_signal_timer_and_signal_timer_and_signal_are_processed_together( Type workflowType, ScheduleId confirmEmailId, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completeDateTime = currentTime.AddHours(-2); var lg = completedGraph(completeDateTime); _builder.AddProcessedEvents(lg); var signalTriggerEventId = lg.First().EventId; _builder.AddProcessedEvents(WaitForSignalEvent(confirmEmailId, signalTriggerEventId, completeDateTime, "Confirmed")); var timerFiredGraph = _graphBuilder.TimerFiredGraph(confirmEmailId, TimeSpan.FromHours(1), TimerType.SignalTimer, signalTriggerEventId, currentTime); _builder.AddNewEvents(timerFiredGraph); var s = _graphBuilder.WorkflowSignaledEvent("Confirmed", "input", completedTime: currentTime); _builder.AddNewEvents(s); var workflow = (Workflow)Activator.CreateInstance(workflowType); var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions.Length, Is.EqualTo(2)); decisions[0].AssertSignalTimedout(confirmEmailId, signalTriggerEventId, new[] { "Confirmed" }, timerFiredGraph.First().EventId); Assert.That(decisions[1], Is.EqualTo(new ScheduleLambdaDecision(_blockAccountId, ""))); }
public void Return_timer_decision_and_continue_execution_with_signal_timedout_when_signal_and_workflow_item_completed_events_comes_together_but_signals_comes_after_timeout( Type workflowType, ScheduleId promoteEmployee, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completedStamp = currentTime.AddHours(-4); var graph = completedGraph(completedStamp); _builder.AddNewEvents(graph); var hrSignal = _graphBuilder.WorkflowSignaledEvent("HRApproved", "", currentTime.AddHours(-1)); _builder.AddNewEvents(hrSignal); var managerApproved = _graphBuilder.WorkflowSignaledEvent("ManagerApproved", "", currentTime.AddHours(-1)); _builder.AddNewEvents(managerApproved); _builder.AddNewEvents(_graphBuilder.DecisionStartedEvent(DateTime.UtcNow)); var workflow = (Workflow)Activator.CreateInstance(workflowType); var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions.Length, Is.EqualTo(5)); var triggerEventId = graph.First().EventId; decisions[0].AssertWaitForAllSignals(promoteEmployee, triggerEventId, completedStamp, TimeSpan.FromHours(2), _waitingSignals); decisions[1].AssertSignalTimer(promoteEmployee, triggerEventId, TimeSpan.FromHours(0)); Assert.That(decisions[2], Is.EqualTo(new ScheduleLambdaDecision(_hrApprovalTimedout, ""))); Assert.That(decisions[3], Is.EqualTo(new ScheduleLambdaDecision(_managerApprovalTimedout, ""))); decisions[4].AssertSignalTimedout(promoteEmployee, triggerEventId, _waitingSignals, hrSignal.EventId); }
private static IEnumerable <TestCaseData> TestCaseData() { var lambdaId = Identity.Lambda(ApproveExpense).ScheduleId(); var l = new CompletedEventGraph(e => LambdaCompletedEventGraph(lambdaId, e)); yield return(new TestCaseData(typeof(ApprovalWorkflowWithLambdaAndApprovedTimedoutCheck), lambdaId, l)); yield return(new TestCaseData(typeof(ApprovalWorkflowWithLambdaAndRejectedTimedoutCheck), lambdaId, l)); yield return(new TestCaseData(typeof(ApprovalWorkflowWithLambdaAndApprovedTimedoutCheckUsingAPI), lambdaId, l)); yield return(new TestCaseData(typeof(ApprovalWorkflowWithLambdaAndRejectedTimedoutCheckUsingAPI), lambdaId, l)); var activityId = Identity.New(ApproveExpense, Version).ScheduleId(); var a = new CompletedEventGraph(e => ActivityCompletedEventGraph(activityId, e)); yield return(new TestCaseData(typeof(ApprovalWorkflowWithActivityAndApprovedTimedoutCheck), activityId, a)); yield return(new TestCaseData(typeof(ApprovalWorkflowWithActivityAndRejectedTimedoutCheckUsingApi), activityId, a)); var workflowId = Identity.New(ApproveExpense, Version).ScheduleId(WorkflowRunId); var c = new CompletedEventGraph(e => ChildWorkflowCompletedEventGraph(workflowId, e)); yield return(new TestCaseData(typeof(ApprovalWorkflowWithChildWorkflowAndApprovedTimeoutCheck), workflowId, c)); yield return(new TestCaseData(typeof(ApprovalWorkflowWithChildWorkflowAndRejectedTimeoutCheckUsingAPI), workflowId, c)); var timerId = Identity.Timer(ApproveExpense).ScheduleId(); var t = new CompletedEventGraph(e => TimerFiredEventGraph(timerId, e)); yield return(new TestCaseData(typeof(ApproveWorkflowWithTimerAndApprovedTimeoutCheck), timerId, t)); yield return(new TestCaseData(typeof(ApproveWorkflowWithTimerAndRejectedTimeoutCheckUsingAPI), timerId, t)); }
public void Return_timer_decision_and_continue_execution_with_signal_timedout_when_signal_and_workflow_item_completed_events_comes_together_but_signal_comes_after_timeout( Type workflowType, ScheduleId approveExpenses, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completedStamp = currentTime.AddHours(-4); var graph = completedGraph(completedStamp); _builder.AddNewEvents(graph); var s = _graphBuilder.WorkflowSignaledEvent("Rejected", "", currentTime.AddHours(-1)); _builder.AddNewEvents(s); _builder.AddNewEvents(_graphBuilder.DecisionStartedEvent(DateTime.UtcNow)); var workflow = (Workflow)Activator.CreateInstance(workflowType); var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions.Length, Is.EqualTo(4)); var triggerEventId = graph.First().EventId; decisions[0].AssertWaitForAnySignal(approveExpenses, triggerEventId, completedStamp, TimeSpan.FromHours(2), "Approved", "Rejected"); decisions[1].AssertSignalTimer(approveExpenses, triggerEventId, TimeSpan.FromHours(0)); Assert.That(decisions[2], Is.EqualTo(new ScheduleLambdaDecision(_approvalTimedout, ""))); decisions[3].AssertSignalTimedout(approveExpenses, triggerEventId, new[] { "Approved", "Rejected" }, s.EventId); }
public void Signal_timer_is_ignored_when_it_is_fired_after_receiving_the_signal_and_signal_timer_and_signal_are_processed_together_also_signal_was_received_after_timedout( Type workflowType, ScheduleId approveExpenses, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completedStamp = currentTime.AddMinutes(-121); var lg = completedGraph(completedStamp); _builder.AddProcessedEvents(lg); var signalTriggerEventId = lg.First().EventId; _builder.AddProcessedEvents(WaitForSignalEvent(approveExpenses, signalTriggerEventId, completedStamp, "Approved", "Rejected")); var s = _graphBuilder.WorkflowSignaledEvent("Approved", "input", completedTime: currentTime); _builder.AddNewEvents(s); var timerFiredGraph = _graphBuilder.TimerFiredGraph(approveExpenses, TimeSpan.FromHours(1), TimerType.SignalTimer, signalTriggerEventId, currentTime); _builder.AddNewEvents(timerFiredGraph); var workflow = (Workflow)Activator.CreateInstance(workflowType); var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions.Length, Is.EqualTo(2)); Assert.That(decisions[0], Is.EqualTo(new ScheduleLambdaDecision(_approvalTimedout, ""))); decisions[1].AssertSignalTimedout(approveExpenses, signalTriggerEventId, new[] { "Approved", "Rejected" }, s.EventId); }
private static IEnumerable <TestCaseData> TestCaseData() { var lambdaId = Identity.Lambda(ConfirmEmail).ScheduleId(); var l = new CompletedEventGraph(e => LambdaCompletedEventGraph(lambdaId, e)); yield return(new TestCaseData(typeof(UserActivateWorkflowWithLambda), lambdaId, l)); yield return(new TestCaseData(typeof(UserActivateWorkflowWithLambdaAndSignalAPI), lambdaId, l)); var activityId = Identity.New(ConfirmEmail, Version).ScheduleId(); var a = new CompletedEventGraph(e => ActivityCompletedEventGraph(activityId, e)); yield return(new TestCaseData(typeof(UserActivateWorkflowWithActivity), activityId, a)); yield return(new TestCaseData(typeof(UserActivateWorkflowWithActivityAndSignalAPI), activityId, a)); var workflowId = Identity.New(ConfirmEmail, Version).ScheduleId(WorkflowRunId); var c = new CompletedEventGraph(e => ChildWorkflowCompletedEventGraph(workflowId, e)); yield return(new TestCaseData(typeof(UserActivateWorkflowWithChildWorkflow), workflowId, c)); yield return(new TestCaseData(typeof(UserActivateWorkflowWithChildWorkflowAndSignalAPI), workflowId, c)); var timerId = Identity.Timer(ConfirmEmail).ScheduleId(); var t = new CompletedEventGraph(e => TimerFiredEventGraph(timerId, e)); yield return(new TestCaseData(typeof(UserActivateWorkflowWithTimer), timerId, t)); yield return(new TestCaseData(typeof(UserActivateWorkflowWithTimerAndSignalAPI), timerId, t)); }
public void Signal_timer_is_ignored_when_it_is_fired_after_receiving_the_signal( Type workflowType, ScheduleId promoteEmployee, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completedStamp = currentTime.AddHours(-2); var lg = completedGraph(completedStamp); _builder.AddProcessedEvents(lg); var signalTriggerEventId = lg.First().EventId; _builder.AddProcessedEvents(WaitForSignalEvent(promoteEmployee, signalTriggerEventId, completedStamp, _waitingSignals)); _builder.AddProcessedEvents(_graphBuilder.WorkflowSignaledEvent("HRApproved", "input", completedTime: currentTime.AddHours(-1))); _builder.AddProcessedEvents(_graphBuilder.WorkflowItemSignalledEvent(promoteEmployee, signalTriggerEventId, "HRApproved")); _builder.AddProcessedEvents(_graphBuilder.WorkflowSignaledEvent("ManagerApproved", "input", completedTime: currentTime.AddHours(-1))); _builder.AddProcessedEvents(_graphBuilder.WorkflowItemSignalledEvent(promoteEmployee, signalTriggerEventId, "ManagerApproved")); var timerFiredGraph = _graphBuilder.TimerFiredGraph(promoteEmployee, TimeSpan.FromHours(1), TimerType.SignalTimer, signalTriggerEventId, currentTime); var workflow = (Workflow)Activator.CreateInstance(workflowType); _builder.AddNewEvents(timerFiredGraph); var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions, Is.Empty); }
private static IEnumerable <TestCaseData> TestCaseData() { var lambdaId = Identity.Lambda(PromoteEmployee).ScheduleId(); var l = new CompletedEventGraph(e => LambdaCompletedEventGraph(lambdaId, e)); yield return(new TestCaseData(typeof(PromoteWorkflowWithLambda), lambdaId, l)); yield return(new TestCaseData(typeof(PromoteWorkflowWithLambdaUsingAPI), lambdaId, l)); yield return(new TestCaseData(typeof(PromoteWorkflowWithLambdaUsingAnySignalIsTriggeredAPI), lambdaId, l)); }
public void Returns_the_timer_decision_and_decision_to_wait_for_a_signal_when_the_workflow_item_completed_event_is_processed_immediately (Type workflowType, ScheduleId promoteEmployee, CompletedEventGraph completedGraph) { var completedStamp = DateTime.UtcNow; var graph = completedGraph(completedStamp); _builder.AddNewEvents(graph); _builder.AddNewEvents(_graphBuilder.DecisionStartedEvent(DateTime.UtcNow)); var workflow = (Workflow)Activator.CreateInstance(workflowType); var completedEventId = graph.First().EventId; var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions.Length, Is.EqualTo(2)); decisions[0].AssertWaitForAllSignals(promoteEmployee, completedEventId, completedStamp, TimeSpan.FromHours(2), _waitingSignals); decisions[1].AssertSignalTimer(promoteEmployee, completedEventId, TimeSpan.FromHours(2)); }
public void Returns_the_timer_decision_to_fire_immediately_and_decision_to_wait_for_a_signal_when_workflow_item_completed_event_is_processed_after_timeout( Type workflowType, ScheduleId confirmEmailId, CompletedEventGraph completedGraph) { var completedStamp = DateTime.UtcNow.AddHours(-4); var graph = completedGraph(completedStamp); _builder.AddNewEvents(graph); _builder.AddNewEvents(_graphBuilder.DecisionStartedEvent(DateTime.UtcNow)); var workflow = (Workflow)Activator.CreateInstance(workflowType); var completedEventId = graph.First().EventId; var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions.Length, Is.EqualTo(2)); decisions[0].AssertWaitForAnySignal(confirmEmailId, completedEventId, completedStamp, TimeSpan.FromHours(2), "Confirmed"); decisions[1].AssertSignalTimer(confirmEmailId, completedEventId, TimeSpan.FromHours(0)); }
public void Reduce_signal_timer_timeout_by_an_hour_when_execution_of_wait_for_signal_workflow_action_is_delayed_by_one_hour( Type workflowType, ScheduleId approveExpenses, CompletedEventGraph completedGraph) { var completedStamp = DateTime.UtcNow.AddHours(-1); var graph = completedGraph(completedStamp); _builder.AddNewEvents(graph); _builder.AddNewEvents(_graphBuilder.DecisionStartedEvent(DateTime.UtcNow)); var workflow = (Workflow)Activator.CreateInstance(workflowType); var completedEventId = graph.First().EventId; var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions.Length, Is.EqualTo(2)); decisions[0].AssertWaitForAllSignals(approveExpenses, completedEventId, completedStamp, TimeSpan.FromHours(2), _waitingSignals); decisions[1].AssertSignalTimer(approveExpenses, completedEventId, TimeSpan.FromHours(1)); }
public void Wait_for_signal_is_timedout_when_timer_is_fired_before_receiving_the_signal( Type workflowType, ScheduleId approveExpenses, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completedStamp = currentTime.AddHours(-2); var lg = completedGraph(completedStamp); _builder.AddProcessedEvents(lg); var signalTriggerEventId = lg.First().EventId; _builder.AddProcessedEvents(WaitForSignalEvent(approveExpenses, signalTriggerEventId, completedStamp, "Approved", "Rejected")); var timerFiredGraph = _graphBuilder.TimerFiredGraph(approveExpenses, TimeSpan.FromHours(1), TimerType.SignalTimer, signalTriggerEventId, currentTime); _builder.AddNewEvents(timerFiredGraph); var workflow = (Workflow)Activator.CreateInstance(workflowType); var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions.Count(), Is.EqualTo(2)); decisions[0].AssertSignalTimedout(approveExpenses, signalTriggerEventId, new[] { "Approved", "Rejected" }, timerFiredGraph.First().EventId); Assert.That(decisions[1], Is.EqualTo(new ScheduleLambdaDecision(_approvalTimedout, "input"))); }
public void Return_timer_decision_and_continue_execution_with_signal_triggered_when_signal_and_workflow_item_completed_events_comes_together_and_signal_come_just_on_timeout( Type workflowType, ScheduleId confirmEmailId, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completedStamp = currentTime.AddHours(-2); var graph = completedGraph(completedStamp); _builder.AddNewEvents(graph); var s = _graphBuilder.WorkflowSignaledEvent("Confirmed", "", currentTime); _builder.AddNewEvents(s); var workflow = (Workflow)Activator.CreateInstance(workflowType); var decisions = workflow.Decisions(_builder.Result()).ToArray(); var triggerEventId = graph.First().EventId; Assert.That(decisions.Length, Is.EqualTo(4)); decisions[0].AssertWaitForAnySignal(confirmEmailId, triggerEventId, completedStamp, TimeSpan.FromHours(2), "Confirmed"); decisions[1].AssertSignalTimer(confirmEmailId, triggerEventId, TimeSpan.FromHours(0)); Assert.That(decisions[2], Is.EqualTo(new ScheduleLambdaDecision(_activateUserId, ""))); Assert.That(decisions[3], Is.EqualTo(new WorkflowItemSignalledDecision(confirmEmailId, triggerEventId, "Confirmed", s.EventId))); }
public void Signal_is_ignored_when_it_come_after_wait_is_timedout_by_signal_timer( Type workflowType, ScheduleId approveExpenses, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completionDate = currentTime.AddHours(-2); var graph = completedGraph(completionDate); _builder.AddProcessedEvents(graph); var completedEventId = graph.First().EventId; _builder.AddProcessedEvents(WaitForSignalEvent(approveExpenses, completedEventId, completionDate, "Approved", "Rejected")); var timerFiredGraph = _graphBuilder.TimerFiredGraph(approveExpenses, TimeSpan.FromHours(2), TimerType.SignalTimer, completedEventId, currentTime); _builder.AddProcessedEvents(timerFiredGraph); _builder.AddProcessedEvents(_graphBuilder.WorkflowItemSignalTimedoutEvent(approveExpenses, completedEventId, new[] { "Confirmed" }, timerFiredGraph.First().EventId)); _builder.AddNewEvents(_graphBuilder.WorkflowSignaledEvent("Confirmed", "input", currentTime.AddMinutes(1))); _builder.AddNewEvents(_graphBuilder.DecisionStartedEvent(currentTime.AddMinutes(2))); var workflow = (Workflow)Activator.CreateInstance(workflowType); var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions, Is.Empty); }
public void Signals_are_ignored_when_they_come_after_wait_is_timedout_by_signal_timer( Type workflowType, ScheduleId promoteEmployee, CompletedEventGraph completedGraph) { var currentTime = DateTime.UtcNow; var completionDate = currentTime.AddHours(-4); var graph = completedGraph(completionDate); _builder.AddProcessedEvents(graph); var completedEventId = graph.First().EventId; _builder.AddProcessedEvents(WaitForSignalEvent(promoteEmployee, completedEventId, completionDate, _waitingSignals)); var timerFiredGraph = _graphBuilder.TimerFiredGraph(promoteEmployee, TimeSpan.FromHours(2), TimerType.SignalTimer, completedEventId, currentTime.AddHours(-2)); _builder.AddProcessedEvents(timerFiredGraph); _builder.AddProcessedEvents(_graphBuilder.WorkflowItemSignalTimedoutEvent(promoteEmployee, completedEventId, _waitingSignals, timerFiredGraph.First().EventId)); _builder.AddNewEvents(_graphBuilder.WorkflowSignaledEvent("HRApproved", "input", currentTime)); _builder.AddNewEvents(_graphBuilder.WorkflowSignaledEvent("ManagerApproved", "input", currentTime)); _builder.AddNewEvents(_graphBuilder.DecisionStartedEvent(DateTime.UtcNow)); var workflow = (Workflow)Activator.CreateInstance(workflowType); var decisions = workflow.Decisions(_builder.Result()).ToArray(); Assert.That(decisions, Is.Empty); }