Ejemplo n.º 1
0
        public async void Subject_Of_Inherited_Type_Works_With_Func_Node()
        {
            var node = new FuncNode <TestObjectA>();

            node.ShouldExecuteFunc = context => Task.FromResult(((TestObjectA)context.Subject).TestValueInt == 0);
            node.ExecutedFunc      = context => { context.Subject.TestValueString = "Completed"; return(Task.FromResult(NodeResultStatus.Succeeded)); };

            var        testObject = new TestObjectASub();
            NodeResult result     = await node.ExecuteAsync(testObject);

            node.Status.ShouldEqual(NodeRunStatus.Completed);
            result.Status.ShouldEqual(NodeResultStatus.Succeeded);
            result.GetSubjectAs <TestObjectA>().TestValueString.ShouldEqual("Completed");
        }
Ejemplo n.º 2
0
        public async void FuncNode_With_ShouldExecute_False_Shouldnt_Run()
        {
            var node = new FuncNode <TestObjectA>();

            node.AddShouldExecute(context => Task.FromResult(context.Subject.TestValueInt == 5));
            node.ExecutedFunc = context => { context.Subject.TestValueString = "Completed"; return(Task.FromResult(NodeResultStatus.Succeeded)); };

            var        testObject = new TestObjectA();
            NodeResult result     = await node.ExecuteAsync(testObject);

            node.Status.ShouldEqual(NodeRunStatus.NotRun);
            result.Status.ShouldEqual(NodeResultStatus.NotRun);
            result.GetSubjectAs <TestObjectA>().TestValueString.ShouldBeNull();
        }
Ejemplo n.º 3
0
        public async void Successful_FuncNode_Values_Match_Expected()
        {
            var node = new FuncNode <TestObjectA>();

            node.AddShouldExecute(context => Task.FromResult(context.Subject.TestValueInt == 0));
            node.ExecutedFunc = context => { context.Subject.TestValueString = "Completed"; return(Task.FromResult(NodeResultStatus.Succeeded)); };

            var        testObject = new TestObjectA();
            NodeResult result     = await node.ExecuteAsync(testObject);

            node.Status.ShouldEqual(NodeRunStatus.Completed);
            result.Status.ShouldEqual(NodeResultStatus.Succeeded);
            result.GetSubjectAs <TestObjectA>().TestValueString.ShouldEqual("Completed");
        }
        public async Task Node_With_ShouldExecuteBlock_Should_Run()
        {
            var node = new FuncNode <TestObjectA>();

            node.AddShouldExecuteBlock(new ShouldExecuteBlockA());
            node.ExecutedFunc = context => { context.Subject.TestValueString = "Completed"; return(Task.FromResult(NodeResultStatus.Succeeded)); };

            var        testObject = new TestObjectA();
            NodeResult result     = await node.ExecuteAsync(testObject);

            node.Status.Should().Be(NodeRunStatus.Completed);
            result.Status.Should().Be(NodeResultStatus.Succeeded);
            result.GetSubjectAs <TestObjectA>().TestValueString.Should().Be("Completed");
        }
Ejemplo n.º 5
0
        public async Task Can_Run_Func_Node_On_Inherited_Type()
        {
            var node = new FuncNode <TestObjectA>();

            node.AddShouldExecute(context => Task.FromResult(context.Subject.TestValueInt == 0));
            node.ExecutedFunc = context => { context.Subject.TestValueString = "Completed"; return(Task.FromResult(NodeResultStatus.Succeeded)); };

            var        testObject = new TestObjectASub();
            NodeResult result     = await node.ExecuteAsync(testObject);

            node.Status.Should().Be(NodeRunStatus.Completed);
            result.Status.Should().Be(NodeResultStatus.Succeeded);
            result.GetSubjectAs <TestObjectA>().TestValueString.Should().Be("Completed");
        }
Ejemplo n.º 6
0
        public async void Deserialized_Flow_Component_Can_Be_Built_And_Run()
        {
            var containerBuilder = new ContainerBuilder();

            containerBuilder.RegisterBanzaiNodes(GetType().Assembly, true);
            containerBuilder.RegisterBanzaiNodes(typeof(JavaScriptMetaDataBuilder).Assembly, true);

            var flowBuilder = new FlowBuilder <TestObjectA>(new AutofacFlowRegistrar(containerBuilder));

            flowBuilder.CreateFlow("TestFlow1")
            .AddRoot <IPipelineNode <TestObjectA> >()
            .AddChild <ITestJsNode2>()
            .AddChild <ITestNode2>()
            .ForChild <ITestJsNode2>()
            .SetExecutedJavaScript("context.Subject.TestValueString = 'Hello JavaScript';");

            var rootComponent = flowBuilder.RootComponent;

            var serializer = new JsonComponentSerializer();

            var definition = serializer.Serialize(rootComponent);

            Console.WriteLine(definition);

            FlowComponent <TestObjectA> deserializedComponent = serializer.Deserialize <TestObjectA>(definition);

            deserializedComponent.ShouldNotBeNull();

            flowBuilder.RootComponent = deserializedComponent;

            flowBuilder.Register();

            var container = containerBuilder.Build();

            var factory = container.Resolve <INodeFactory <TestObjectA> >();

            var flowRootNode = factory.BuildFlow("TestFlow1");

            NodeResult result = await flowRootNode.ExecuteAsync(new TestObjectA());

            result.Status.ShouldEqual(NodeResultStatus.Succeeded);

            var subject = result.GetSubjectAs <TestObjectA>();

            subject.TestValueString.ShouldEqual("Hello JavaScript");
        }