Add tests for behavior on error (#83)
## Summary: We guarantee that we never return a nil response, so you can safely do ``` resp, err := myQuery(...) return resp.Field.SubField, err ``` And furthermore, if the error was a GraphQL error, `resp` may even be nonzero; other, non-failing fields may be set. (This depends on the server, of course.) But we weren't testing either of those. Now we do. ## Test plan: make check Author: benjaminjkraft Reviewers: jvoll, aberkan, dnerdy, MiguelCastillo, mahtabsabet Required Reviewers: Approved By: jvoll Checks: ✅ Test (1.17), ✅ Test (1.16), ✅ Test (1.15), ✅ Test (1.14), ✅ Lint, ✅ Test (1.17), ✅ Test (1.16), ✅ Test (1.15), ✅ Test (1.14), ✅ Lint Pull Request URL: https://github.com/Khan/genqlient/pull/83
This commit is contained in:
@@ -266,6 +266,17 @@ func (v *UserFields) UnmarshalJSON(b []byte) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// failingQueryMeUser includes the requested fields of the GraphQL type User.
|
||||
type failingQueryMeUser struct {
|
||||
Id string `json:"id"`
|
||||
}
|
||||
|
||||
// failingQueryResponse is returned by failingQuery on success.
|
||||
type failingQueryResponse struct {
|
||||
Fail bool `json:"fail"`
|
||||
Me failingQueryMeUser `json:"me"`
|
||||
}
|
||||
|
||||
// queryWithFragmentsBeingsAnimal includes the requested fields of the GraphQL type Animal.
|
||||
type queryWithFragmentsBeingsAnimal struct {
|
||||
Typename string `json:"__typename"`
|
||||
@@ -1074,6 +1085,30 @@ query simpleQuery {
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
func failingQuery(
|
||||
ctx context.Context,
|
||||
client graphql.Client,
|
||||
) (*failingQueryResponse, error) {
|
||||
var err error
|
||||
|
||||
var retval failingQueryResponse
|
||||
err = client.MakeRequest(
|
||||
ctx,
|
||||
"failingQuery",
|
||||
`
|
||||
query failingQuery {
|
||||
fail
|
||||
me {
|
||||
id
|
||||
}
|
||||
}
|
||||
`,
|
||||
&retval,
|
||||
nil,
|
||||
)
|
||||
return &retval, err
|
||||
}
|
||||
|
||||
func queryWithVariables(
|
||||
ctx context.Context,
|
||||
client graphql.Client,
|
||||
|
||||
Reference in New Issue
Block a user