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)); } }
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)); }
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")); }
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"); }
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); }