コード例 #1
0
        public async Task ResolveSimpleOneLevelQuery()
        {
            // arrange
            Schema schema = CreateSchema();
            var    dataLoaderDescriptors =
                new DataLoaderDescriptorCollection(schema.DataLoaders);
            var dataLoaderState = new DataLoaderState(
                schema.Services, dataLoaderDescriptors,
                Enumerable.Empty <StateObjectCollection <string> >());
            DocumentNode            query     = Parser.Default.Parse(@"
                {
                    a
                }");
            OperationDefinitionNode operation = query.Definitions
                                                .OfType <OperationDefinitionNode>().FirstOrDefault();

            // act
            OperationExecuter operationExecuter =
                new OperationExecuter(schema, query, operation);
            IExecutionResult result = await operationExecuter.ExecuteAsync(
                new OperationRequest(schema.Services, dataLoaderState),
                CancellationToken.None);

            // assert
            Assert.NotNull(result);
            Assert.Null(result.Errors);
            Assert.Collection(((QueryResult)result).Data,
                              item =>
            {
                Assert.Equal("a", item.Key);
                Assert.Equal("hello world", item.Value);
            });
        }
コード例 #2
0
        public async Task ExecuteMutationSerially()
        {
            // arrange
            int state = 0;

            Schema schema = Schema.Create(
                FileResource.Open("MutationExecutionSchema.graphql"),
                cnf =>
            {
                cnf.BindResolver(() => state).To("Query", "state");
                cnf.BindResolver(() => state).To("CurrentState", "theNumber");
                cnf.BindResolver(ctx => state = ctx.Argument <int>("newNumber"))
                .To("Mutation", "changeTheNumber");
            });
            var dataLoaderDescriptors =
                new DataLoaderDescriptorCollection(schema.DataLoaders);
            var dataLoaderState = new DataLoaderState(
                schema.Services, dataLoaderDescriptors,
                Enumerable.Empty <StateObjectCollection <string> >());

            DocumentNode query = Parser.Default.Parse(
                FileResource.Open("MutationExecutionQuery.graphql"));
            OperationDefinitionNode operation = query.Definitions
                                                .OfType <OperationDefinitionNode>().FirstOrDefault();

            // act
            OperationExecuter operationExecuter =
                new OperationExecuter(schema, query, operation);
            IExecutionResult result = await operationExecuter.ExecuteAsync(
                new OperationRequest(schema.Services, dataLoaderState),
                CancellationToken.None);

            // assert
            Assert.Null(result.Errors);
            Assert.Equal(Snapshot.Current(), Snapshot.New(result));
        }