Ejemplo n.º 1
0
        public async Task <IActionResult> Post([FromBody] GqlInput input)
        {
            if (input == null)
            {
                return(BadRequest("Missing query content"));
            }

            var executionOptions = new ExecutionOptions
            {
                Schema = _schema,
                Query  = input.Query,
                Inputs = GraphQL.StringExtensions.ToInputs(input.Variables)
            };

            try
            {
                var result = await _documentExecuter.ExecuteAsync(executionOptions).ConfigureAwait(false);

                if (result.Errors?.Count > 0)
                {
                    return(BadRequest(result));
                }

                return(Ok(result));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
Ejemplo n.º 2
0
        protected virtual async Task <dynamic> RunQueryAsync(GqlInput gqlQuery)
        {
            var executionOptions = new ExecutionOptions
            {
                Schema = _fixture.Schema,
                Query  = gqlQuery.Query,
                Inputs = gqlQuery.Variables == null ? null : new Inputs(gqlQuery.Variables)
            };

            return(await _fixture.Executer
                   .ExecuteAsync(executionOptions)
                   .ContinueWith(x => (dynamic)x.Result.Data));
        }
Ejemplo n.º 3
0
        public async Task WhenAlbumsFieldIsNotIncluded_ThenAlbumsAreNotReturned(
            string query,
            Dictionary <string, object> variables)
        {
            var gqlQuery = new GqlInput
            {
                Query     = query,
                Variables = variables
            };

            var result = await RunQueryAsync(gqlQuery);

            var artist = (Dictionary <string, object>)result["artist"];

            Assert.False(artist.ContainsKey("albums"));
        }
Ejemplo n.º 4
0
        public async Task WhenArtistIdIsProvided_ThenArtistOfThatIdIsReturned(
            string query,
            Dictionary <string, object> variables)
        {
            var gqlQuery = new GqlInput
            {
                Query     = query,
                Variables = variables
            };

            var result = await RunQueryAsync(gqlQuery);

            var artist = (Dictionary <string, object>)result["artist"];

            Assert.Equal(artist["id"], 1);
            Assert.Equal(artist["name"], "Meh");
        }
Ejemplo n.º 5
0
        public async Task WhenAlbumsFieldIsIncluded_ThenAlbumsAreReturned(
            string query,
            Dictionary <string, object> variables)
        {
            var gqlQuery = new GqlInput
            {
                Query     = query,
                Variables = variables
            };

            var result = await RunQueryAsync(gqlQuery);

            var artist = (Dictionary <string, object>)result["artist"];
            //because static typing is such a helpful thing and everyone should use it everywhere!
            var albums = ((object[])artist["albums"]);

            Assert.NotNull(artist["albums"]);
            Assert.Equal(albums.Length, 2);
        }