示例#1
0
        public async Task TwoOperations_ShortHand_QueryException()
        {
            // arrange
            Schema schema = Schema.Create(@"
                type Query { a: String }
                ", c =>
            {
                c.BindResolver(() => "hello world")
                .To("Query", "a");
            });

            var request = new QueryRequest("{ a } query a { a }").ToReadOnly();

            var context = new QueryContext(
                schema,
                MiddlewareTools.CreateEmptyRequestServiceScope(),
                request);

            context.Document = Parser.Default.Parse(request.Query);

            var middleware = new ResolveOperationMiddleware(
                c => Task.CompletedTask, null);

            // act
            Func <Task> func = () => middleware.InvokeAsync(context);

            // assert
            QueryException exception =
                await Assert.ThrowsAsync <QueryException>(func);

            Assert.Equal(
                "Only queries that contain one operation can be executed " +
                "without specifying the opartion name.",
                exception.Message);
        }
示例#2
0
        public async Task TwoOperations_WrongOperationName_QueryException()
        {
            // arrange
            var schema = Schema.Create(@"
                type Query { a: String }
                ", c =>
            {
                c.BindResolver(() => "hello world")
                .To("Query", "a");
            });

            var sourceText = "query a { a } query b { a }";

            var request = QueryRequestBuilder.New()
                          .SetQuery(sourceText)
                          .SetOperation("c")
                          .Create();

            var context = new QueryContext
                          (
                schema,
                MiddlewareTools.CreateEmptyRequestServiceScope(),
                request,
                (f, s) => f.Middleware
                          );

            context.Document = Utf8GraphQLParser.Parse(sourceText);

            var middleware = new ResolveOperationMiddleware(
                c => Task.CompletedTask, null);

            // act
            Func <Task> func = () => middleware.InvokeAsync(context);

            // assert
            QueryException exception =
                await Assert.ThrowsAsync <QueryException>(func);

            Assert.Equal(
                "The specified operation `c` does not exist.",
                exception.Message);
        }
示例#3
0
        public async Task TwoOperations_WrongOperationName_QueryException()
        {
            // arrange
            Schema schema = Schema.Create(@"
                type Query { a: String }
                ", c =>
            {
                c.BindResolver(() => "hello world")
                .To("Query", "a");
            });

            var request = new QueryRequest(
                "query a { a } query b { a }", "c")
                          .ToReadOnly();

            var context = new QueryContext(
                schema,
                MiddlewareTools.CreateEmptyRequestServiceScope(),
                request);

            context.Document = Parser.Default.Parse(request.Query);

            var middleware = new ResolveOperationMiddleware(
                c => Task.CompletedTask, null);

            // act
            Func <Task> func = () => middleware.InvokeAsync(context);

            // assert
            QueryException exception =
                await Assert.ThrowsAsync <QueryException>(func);

            Assert.Equal(
                "The specified operation `c` does not exist.",
                exception.Message);
        }