示例#1
0
        public async Task Given_graph_When_running_it_Then_receive_trace()
        {
            var testHttpclient = SetupTestHostAndClient();
            var graphQlClient  = new PolicyExampleGraphQLClient(testHttpclient);
            var client         = graphQlClient.Client;

            var createLogicGraphCommand = new CreateLogicGraphCommand()
            {
                Id = "abc", Name = "new graph", ProvidedContexts = new List <string> {
                    "a", "b", "c"
                }
            };

            var res = await graphQlClient.Execute(createLogicGraphCommand);

            var graphId = res.LogicGraphId;

            var createLogicNodeCommand = new CreateLogicNodeCommand()
            {
                Id = "2", Name = "root node", LogicGraphId = graphId
            };
            var nodeResult = await graphQlClient.Execute(createLogicNodeCommand);

            var runGraphCommand = new RunLogicGraphCommand()
            {
                Id = "3", LogicGraphId = graphId
            };
            var runResult = await graphQlClient.Execute(runGraphCommand);

            runResult.RunReport.Trace.Should().NotBeNullOrEmpty();
        }
示例#2
0
        public async Task Given_complex_graph_When_running_it_with_jint_script_real()
        {
            var client = new PolicyExampleGraphQLClient(new HttpClient());

            var createLogicGraphResult = await client.Execute(
                new CreateLogicGraphCommand()
            {
                Id               = "abc",
                Name             = "new graph for run",
                ProvidedContexts = new List <string> {
                    "a", "b", "c"
                }
            }
                );

            var graphId = createLogicGraphResult.LogicGraphId;

            var rootNode = await client.CreateNode(graphId, "root node");

            var aNode = await client.CreateNode(graphId, "A", rootNode.LogicNodeId);

            var bNode = await client.CreateNode(graphId, "B", rootNode.LogicNodeId, script : "flow.RedirectToChild(1)");

            var aaNode = await client.CreateNode(graphId, "AA", aNode.LogicNodeId);

            var abNode = await client.CreateNode(graphId, "AB", aNode.LogicNodeId);

            var baNode = await client.CreateNode(graphId, "BA", bNode.LogicNodeId);

            var bbNode = await client.CreateNode(graphId, "BB", bNode.LogicNodeId);

            var runResult = await client.Execute(new RunLogicGraphCommand()
            {
                Id = "3", LogicGraphId = graphId
            });

            runResult.RunReport.Trace.Select(t => t.Node.Name)
            .Should().Equal("root node", "A", "AA", "AB", "B", "BB", "BA");
        }
示例#3
0
        public static async Task <CreateLogicNodeResult> CreateNode(this PolicyExampleGraphQLClient client, string graphId,
                                                                    string nodeName, string?parentId = null, string?script = null)
        {
            CreateScriptParams?scriptParams = null;

            if (script != null)
            {
                scriptParams = new CreateScriptParams()
                {
                    Body     = script,
                    Language = "JavaScript"
                };
            }

            return(await client.Execute(new CreateLogicNodeCommand()
            {
                Id = Guid.NewGuid().ToString(),
                LogicGraphId = graphId,
                Script = scriptParams,
                ParentNodeId = parentId,
                Name = nodeName
            }));
        }