Skip to content

Commit

Permalink
Moving federation tests to their own folders
Browse files Browse the repository at this point in the history
Reorganizing the tests in the federation plugin a little bit so make it simpler to add more safely without testdata colliding. This is in anticipation for a follow up PR for adding entity resolver tests.

Run the tests with `go test ./plugin/federation/...` and verify they all pass. Also verify that the testdata/allthething directory has a `generated` directory specific to that test.

NOTE: There is a catch all type of test that I moved to the directory `allthething`.  Open to suggestions for a better name! One potential thing to considere here is to split up the tests that use that testdata and break them down into more specific tests. E.g. Add a multikey test in the testdata/entity.  For now, Im leaving that as a TODO.
  • Loading branch information
MiguelCastillo committed Nov 9, 2021
1 parent b7db36d commit 95cb68e
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 14 deletions.
5 changes: 3 additions & 2 deletions plugin/federation/federation_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
)

func TestWithEntities(t *testing.T) {
f, cfg := load(t, "test_data/gqlgen.yml")
f, cfg := load(t, "testdata/allthethings/gqlgen.yml")

require.Equal(t, []string{"ExternalExtension", "Hello", "MoreNesting", "NestedKey", "VeryNestedKey", "World"}, cfg.Schema.Types["_Entity"].Types)

Expand Down Expand Up @@ -70,10 +70,11 @@ func TestWithEntities(t *testing.T) {
}

func TestNoEntities(t *testing.T) {
f, cfg := load(t, "test_data/nokey.yml")
f, cfg := load(t, "testdata/entities/nokey.yml")

err := f.MutateConfig(cfg)
require.NoError(t, err)
require.Len(t, f.Entities, 0)
}

func load(t *testing.T, name string) (*federation, *config.Config) {
Expand Down
6 changes: 0 additions & 6 deletions plugin/federation/test_data/gqlgen.yml

This file was deleted.

6 changes: 0 additions & 6 deletions plugin/federation/test_data/nokey.yml

This file was deleted.

9 changes: 9 additions & 0 deletions plugin/federation/testdata/allthethings/gqlgen.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
schema:
- "testdata/allthethings/schema.graphql"
exec:
filename: testdata/allthethings/generated/exec.go
federation:
filename: testdata/allthethings/generated/federation.go

autobind:
- "github.com/99designs/gqlgen/plugin/federation/testdata/allthethings/model"
48 changes: 48 additions & 0 deletions plugin/federation/testdata/allthethings/model/federation.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package model

type _FieldSet string //nolint:deadcode,unused

type Hello struct {
Name string
Secondary string
}

func (Hello) IsEntity() {}

type World struct {
Foo string
Bar int
}

func (World) IsEntity() {}

type ExternalExtension struct {
UPC string
Reviews []*World
}

func (ExternalExtension) IsEntity() {}

type NestedKey struct {
ID string
Hello *Hello
}

func (NestedKey) IsEntity() {}

type MoreNesting struct {
ID string
World *World
}

func (MoreNesting) IsEntity() {}

type VeryNestedKey struct {
ID string
Hello *Hello
World *World
Nested *NestedKey
More *MoreNesting
}

func (VeryNestedKey) IsEntity() {}
File renamed without changes.
File renamed without changes.
6 changes: 6 additions & 0 deletions plugin/federation/testdata/entities/nokey.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
schema:
- "testdata/entities/nokey.graphql"
exec:
filename: testdata/entities/generated/exec.go
federation:
filename: testdata/entities/generated/federation.go

0 comments on commit 95cb68e

Please sign in to comment.