/// <summary> /// Lazy initializes the workflow. Always call this before you need to reference <see cref="_workflow"/> /// </summary> protected virtual void InitializeWorkflowIfNecessary() { if (_workflow == null) { _workflow = Define(); } }
public void Given() { var branchPoint = Declare.Step(); sut = new StatefulWorkflow <TestObject>("test") .Do(x => x.Feedback("branch point"), branchPoint) .Do(x => x.Feedback("first point"), If.IsTrue(() => tracker < 2, branchPoint)) .Yield(1) .Do(x => x.Feedback("second point"), If.IsTrue(() => tracker < 1, branchPoint)) ; mock = new Mock <TestObject>(); mock.CallBase = true; mock.Setup(x => x.Feedback(It.IsAny <string>())).Returns(mock.Object); // This setup is to avoid infinite loops in the test data int timer = 0; mock.Setup(x => x.Feedback("branch point")).Callback(() => { if (++timer == 2) { tracker = 0; } }).Returns(mock.Object); }
public void Given() { ruleMock = new Mock<DefaultTransitionRule<TestObject>>("workflow"); ruleMock.CallBase = true; rule = ruleMock.Object; workflow = new StatefulWorkflow<TestObject>("workflow", null, rule); TestFixtures.SetupWorkflow(workflow); data = new TestObject() { State = "Last" }; }
public void Given() { ruleMock = new Mock <DefaultTransitionRule <TestObject> >("workflow"); ruleMock.CallBase = true; rule = ruleMock.Object; workflow = new StatefulWorkflow <TestObject>("workflow", null, rule); TestFixtures.SetupWorkflow(workflow); data = new TestObject(); }
public void Given() { _workflow = new StatefulWorkflow<A1>("test"); _workflow.Do(x => x.GotHere("starting")) .Yield("stop point") .Do(x => x.GotHere("finished")); _object = new Mock<A1>(); _object.Setup(x => x.GotHere("starting")).Returns(_object.Object); _object.Setup(x => x.GotHere("finished")).Returns(_object.Object); }
public void Given() { _workflow = new StatefulWorkflow <A1>("test"); _workflow.Do(x => x.GotHere("starting")) .Yield("stop point") .Do(x => x.GotHere("finished")); _object = new Mock <A1>(); _object.Setup(x => x.GotHere("starting")).Returns(_object.Object); _object.Setup(x => x.GotHere("finished")).Returns(_object.Object); }
public void Given() { var branchPoint = Declare.Step(); sut = new StatefulWorkflow<TestObject>("test") .Do(x => x.Feedback("branch point"), branchPoint) .Do(x => x.Feedback("first point"), If.IsTrue(() => tracker < 2, branchPoint)) .Yield(1) .Do(x => x.Feedback("second point"), If.IsTrue(() => tracker < 1, branchPoint)) ; mock = new Mock<TestObject>(); mock.CallBase = true; mock.Setup(x => x.Feedback(It.IsAny<string>())).Returns(mock.Object); // This setup is to avoid infinite loops in the test data int timer = 0; mock.Setup(x => x.Feedback("branch point")).Callback(() => { if (++timer == 2) tracker = 0; }).Returns(mock.Object); }
/// <summary> /// Workflow with 3 segments /// </summary> public static IStatefulWorkflow <TestObject> SetupWorkflow(IStatefulWorkflow <TestObject> workflow) { return(workflow .Yield("First") .Yield("Last")); }
/// <summary> /// Indicates that this object is currently passing through the specific workflow /// </summary> /// <param name="self"></param> /// <param name="workflow"></param> /// <returns></returns> public static bool IsAliveInWorkflow <T>(this IStatefulObject self, IStatefulWorkflow <T> workflow) where T : class, IStatefulObject { return(self.GetStateId(workflow.WorkflowId) != null); }
/// <summary> /// Workflow with 3 segments /// </summary> public static IStatefulWorkflow<TestObject> SetupWorkflow(IStatefulWorkflow<TestObject> workflow) { return workflow .Yield("First") .Yield("Last"); }