* Upgrade gqlgen to v0.17.2 This enables builds on Go 1.18. github.com/vektah/gqlparser is upgraded to the newest version too. Getting this to work is a bit of a hazzle. I had to first remove vendoring from the repository, perform the upgrade and then re-introduce the vendor directory. I think gqlgens analysis went wrong for some reason on the upgrade. It would seem a clean-room installation fixed it. * Bump project to 1.18 * Update all packages, address gqlgenc breaking changes * Let `go mod tidy` handle the go.mod file * Upgrade linter to 1.45.2 * Introduce v1.45.2 of the linter The linter now correctly warns on `strings.Title` because it isn't unicode-aware. Fix this by using the suggested fix from x/text/cases to produce unicode-aware strings. The mapping isn't entirely 1-1 as this new approach has a larger iface: it spans all of unicode rather than just ASCII. It coincides for ASCII however, so things should be largely the same. * Ready ourselves for errchkjson and contextcheck. * Revert dockerfile golang version changes for now Co-authored-by: Kermie <kermie@isinthe.house> Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
1.1 KiB
How to write tests for gqlgen
Testing generated code is a little tricky, heres how its currently set up.
Testing responses from a server
There is a server in codegen/testserver that is generated as part
of go generate ./..., and tests written against it.
There are also a bunch of tests in against the examples, feel free to take examples from there.
Testing the errors generated by the binary
These tests are really slow, because they need to run the whole codegen step. Use them very sparingly. If you can, find a way to unit test it instead.
Take a look at codegen/testserver/input_test.go for an example.
Testing introspection
Introspection is tested by diffing the output of graphql get-schema against an expected output.
Setting up the integration environment is a little tricky:
cd integration
go generate ./...
go run ./server/server.go
in another terminal
cd integration
npm install
./node_modules/.bin/graphql-codegen
will write the schema to integration/schema-fetched.graphql, compare that with schema-expected.graphql
CI will run this and fail the build if the two files dont match.