1 package ast_test
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 "github.com/stretchr/testify/require"
8
9 . "github.com/vektah/gqlparser/ast"
10 "github.com/vektah/gqlparser/parser"
11 )
12
13 func TestQueryDocMethods(t *testing.T) {
14 doc, err := parser.ParseQuery(&Source{Input: `
15 query Bob { foo { ...Frag } }
16 fragment Frag on Foo {
17 bar
18 }
19 `})
20
21 require.Nil(t, err)
22 t.Run("GetOperation", func(t *testing.T) {
23 require.EqualValues(t, "Bob", doc.Operations.ForName("Bob").Name)
24 require.Nil(t, doc.Operations.ForName("Alice"))
25 })
26
27 t.Run("GetFragment", func(t *testing.T) {
28 require.EqualValues(t, "Frag", doc.Fragments.ForName("Frag").Name)
29 require.Nil(t, doc.Fragments.ForName("Alice"))
30 })
31 }
32
33 func TestNamedTypeCompatability(t *testing.T) {
34 assert.True(t, NamedType("A", nil).IsCompatible(NamedType("A", nil)))
35 assert.False(t, NamedType("A", nil).IsCompatible(NamedType("B", nil)))
36
37 assert.True(t, ListType(NamedType("A", nil), nil).IsCompatible(ListType(NamedType("A", nil), nil)))
38 assert.False(t, ListType(NamedType("A", nil), nil).IsCompatible(ListType(NamedType("B", nil), nil)))
39 assert.False(t, ListType(NamedType("A", nil), nil).IsCompatible(ListType(NamedType("B", nil), nil)))
40
41 assert.True(t, ListType(NamedType("A", nil), nil).IsCompatible(ListType(NamedType("A", nil), nil)))
42 assert.False(t, ListType(NamedType("A", nil), nil).IsCompatible(ListType(NamedType("B", nil), nil)))
43 assert.False(t, ListType(NamedType("A", nil), nil).IsCompatible(ListType(NamedType("B", nil), nil)))
44
45 assert.True(t, NonNullNamedType("A", nil).IsCompatible(NamedType("A", nil)))
46 assert.False(t, NamedType("A", nil).IsCompatible(NonNullNamedType("A", nil)))
47
48 assert.True(t, NonNullListType(NamedType("String", nil), nil).IsCompatible(NonNullListType(NamedType("String", nil), nil)))
49 assert.True(t, NonNullListType(NamedType("String", nil), nil).IsCompatible(ListType(NamedType("String", nil), nil)))
50 assert.False(t, ListType(NamedType("String", nil), nil).IsCompatible(NonNullListType(NamedType("String", nil), nil)))
51
52 assert.True(t, ListType(NonNullNamedType("String", nil), nil).IsCompatible(ListType(NamedType("String", nil), nil)))
53 assert.False(t, ListType(NamedType("String", nil), nil).IsCompatible(ListType(NonNullNamedType("String", nil), nil)))
54 }
55
View as plain text