...

Source file src/github.com/vektah/gqlparser/validator/schema_test.go

Documentation: github.com/vektah/gqlparser/validator

     1  package validator
     2  
     3  import (
     4  	"io/ioutil"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  	"github.com/vektah/gqlparser/ast"
     9  	"github.com/vektah/gqlparser/parser/testrunner"
    10  )
    11  
    12  func TestLoadSchema(t *testing.T) {
    13  	t.Run("prelude", func(t *testing.T) {
    14  		s, err := LoadSchema(Prelude)
    15  		require.Nil(t, err)
    16  
    17  		boolDef := s.Types["Boolean"]
    18  		require.Equal(t, "Boolean", boolDef.Name)
    19  		require.Equal(t, ast.Scalar, boolDef.Kind)
    20  		require.Equal(t, "The `Boolean` scalar type represents `true` or `false`.", boolDef.Description)
    21  	})
    22  	t.Run("swapi", func(t *testing.T) {
    23  		file, err := ioutil.ReadFile("testdata/swapi.graphql")
    24  		require.Nil(t, err)
    25  		s, err := LoadSchema(Prelude, &ast.Source{Input: string(file), Name: "TestLoadSchema"})
    26  		require.Nil(t, err)
    27  
    28  		require.Equal(t, "Query", s.Query.Name)
    29  		require.Equal(t, "hero", s.Query.Fields[0].Name)
    30  
    31  		require.Equal(t, "Human", s.Types["Human"].Name)
    32  
    33  		require.Equal(t, "Subscription", s.Subscription.Name)
    34  		require.Equal(t, "reviewAdded", s.Subscription.Fields[0].Name)
    35  
    36  		possibleCharacters := s.GetPossibleTypes(s.Types["Character"])
    37  		require.Len(t, possibleCharacters, 2)
    38  		require.Equal(t, "Human", possibleCharacters[0].Name)
    39  		require.Equal(t, "Droid", possibleCharacters[1].Name)
    40  
    41  		implements := s.GetImplements(s.Types["Droid"])
    42  		require.Len(t, implements, 2)
    43  		require.Equal(t, "Character", implements[0].Name)    // interface
    44  		require.Equal(t, "SearchResult", implements[1].Name) // union
    45  	})
    46  
    47  	t.Run("type extensions", func(t *testing.T) {
    48  		file, err := ioutil.ReadFile("testdata/extensions.graphql")
    49  		require.Nil(t, err)
    50  		s, err := LoadSchema(Prelude, &ast.Source{Input: string(file), Name: "TestLoadSchema"})
    51  		require.Nil(t, err)
    52  
    53  		require.Equal(t, "Subscription", s.Subscription.Name)
    54  		require.Equal(t, "dogEvents", s.Subscription.Fields[0].Name)
    55  
    56  		require.Equal(t, "owner", s.Types["Dog"].Fields[1].Name)
    57  	})
    58  
    59  	testrunner.Test(t, "./schema_test.yml", func(t *testing.T, input string) testrunner.Spec {
    60  		_, err := LoadSchema(Prelude, &ast.Source{Input: input})
    61  		return testrunner.Spec{
    62  			Error: err,
    63  		}
    64  	})
    65  }
    66  

View as plain text