github.com/maeglindeveloper/gqlgen@v0.13.1-0.20210413081235-57808b12a0a0/plugin/federation/federation_test.go (about)

     1  package federation
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/99designs/gqlgen/codegen/config"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestWithEntities(t *testing.T) {
    11  	f, cfg := load(t, "test_data/gqlgen.yml")
    12  
    13  	require.Equal(t, []string{"ExternalExtension", "Hello", "World"}, cfg.Schema.Types["_Entity"].Types)
    14  
    15  	require.Equal(t, "findExternalExtensionByUpc", cfg.Schema.Types["Entity"].Fields[0].Name)
    16  	require.Equal(t, "findHelloByName", cfg.Schema.Types["Entity"].Fields[1].Name)
    17  	require.Equal(t, "findWorldByFooAndBar", cfg.Schema.Types["Entity"].Fields[2].Name)
    18  
    19  	require.NoError(t, f.MutateConfig(cfg))
    20  }
    21  
    22  func TestNoEntities(t *testing.T) {
    23  	f, cfg := load(t, "test_data/nokey.yml")
    24  
    25  	err := f.MutateConfig(cfg)
    26  	require.NoError(t, err)
    27  }
    28  
    29  func load(t *testing.T, name string) (*federation, *config.Config) {
    30  	t.Helper()
    31  
    32  	cfg, err := config.LoadConfig(name)
    33  	require.NoError(t, err)
    34  
    35  	f := &federation{}
    36  	cfg.Sources = append(cfg.Sources, f.InjectSourceEarly())
    37  	require.NoError(t, cfg.LoadSchema())
    38  
    39  	if src := f.InjectSourceLate(cfg.Schema); src != nil {
    40  		cfg.Sources = append(cfg.Sources, src)
    41  	}
    42  	require.NoError(t, cfg.LoadSchema())
    43  
    44  	require.NoError(t, cfg.Init())
    45  	return f, cfg
    46  }