Clean up, test, and document ContextType and ClientGetter options (#77)

## Summary:
ContextType is in use at Khan as a part of our ka-context system; it
basically just lets you configure the type to pass as the `ctx` argument
to genqlient helpers (or say to omit such an argument).  ClientGetter I
wrote thinking we might use it; then we didn't (because we have a few
different clients we may use) but it's not much code and may be helpful
to others.  In this commit I clean up, document, and add tests for both
options.

The cleanup is mainly for ClientGetter, which was kind of broken before
because it was a Go snippet but couldn't specify imports.  I was
thinking maybe you want to be able to write `ctx.Something()`, but I
just don't see how to make it work, so I made it a function of context,
which is probably the better idea anyway.

Additionally, I improved the documentation for both, and added tests for
those and several other config options that weren't completely tested.

Fixes #5.

Issue: https://github.com/Khan/genqlient/issues/5

## Test plan:
make check


Author: benjaminjkraft

Reviewers: dnerdy, aberkan, MiguelCastillo

Required Reviewers: 

Approved By: dnerdy

Checks:  Test (1.17),  Test (1.16),  Test (1.15),  Test (1.14),  Test (1.13),  Lint,  Test (1.17),  Test (1.16),  Test (1.15),  Test (1.14),  Test (1.13),  Lint

Pull Request URL: https://github.com/Khan/genqlient/pull/77
This commit is contained in:
Ben Kraft
2021-09-07 09:58:49 -07:00
committed by GitHub
parent f3e601353c
commit 6c86eed770
46 changed files with 835 additions and 73 deletions
+18 -6
View File
@@ -675,8 +675,10 @@ func simpleQuery(
ctx context.Context,
client graphql.Client,
) (*simpleQueryResponse, error) {
var err error
var retval simpleQueryResponse
err := client.MakeRequest(
err = client.MakeRequest(
ctx,
"simpleQuery",
`
@@ -703,8 +705,10 @@ func queryWithVariables(
"id": id,
}
var err error
var retval queryWithVariablesResponse
err := client.MakeRequest(
err = client.MakeRequest(
ctx,
"queryWithVariables",
`
@@ -731,8 +735,10 @@ func queryWithInterfaceNoFragments(
"id": id,
}
var err error
var retval queryWithInterfaceNoFragmentsResponse
err := client.MakeRequest(
err = client.MakeRequest(
ctx,
"queryWithInterfaceNoFragments",
`
@@ -763,8 +769,10 @@ func queryWithInterfaceListField(
"ids": ids,
}
var err error
var retval queryWithInterfaceListFieldResponse
err := client.MakeRequest(
err = client.MakeRequest(
ctx,
"queryWithInterfaceListField",
`
@@ -791,8 +799,10 @@ func queryWithInterfaceListPointerField(
"ids": ids,
}
var err error
var retval queryWithInterfaceListPointerFieldResponse
err := client.MakeRequest(
err = client.MakeRequest(
ctx,
"queryWithInterfaceListPointerField",
`
@@ -819,8 +829,10 @@ func queryWithFragments(
"ids": ids,
}
var err error
var retval queryWithFragmentsResponse
err := client.MakeRequest(
err = client.MakeRequest(
ctx,
"queryWithFragments",
`
+16
View File
@@ -1,5 +1,11 @@
package testutil
import (
"context"
"github.com/Khan/genqlient/graphql"
)
type ID string
type Pokemon struct {
@@ -10,3 +16,13 @@ type Pokemon struct {
func (p Pokemon) Battle(q Pokemon) bool {
return p.Level > q.Level
}
type MyContext interface {
context.Context
MyMethod()
}
func GetClientFromNowhere() (graphql.Client, error) { return nil, nil }
func GetClientFromContext(ctx context.Context) (graphql.Client, error) { return nil, nil }
func GetClientFromMyContext(ctx MyContext) (graphql.Client, error) { return nil, nil }