github.com/operandinc/gqlgen@v0.16.1/plugin/federation/fieldset/fieldset_test.go (about) 1 package fieldset 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestUnnestedWithoutPrefix(t *testing.T) { 10 fieldSet := New("foo bar", nil) 11 12 require.Len(t, fieldSet, 2) 13 14 require.Len(t, fieldSet[0], 1) 15 require.Equal(t, "foo", fieldSet[0][0]) 16 17 require.Len(t, fieldSet[1], 1) 18 require.Equal(t, "bar", fieldSet[1][0]) 19 } 20 21 func TestNestedWithoutPrefix(t *testing.T) { 22 fieldSet := New("foo bar { baz} a b {c{d}}e", nil) 23 24 require.Len(t, fieldSet, 5) 25 26 require.Len(t, fieldSet[0], 1) 27 require.Equal(t, "foo", fieldSet[0][0]) 28 29 require.Len(t, fieldSet[1], 2) 30 require.Equal(t, "bar", fieldSet[1][0]) 31 require.Equal(t, "baz", fieldSet[1][1]) 32 33 require.Len(t, fieldSet[2], 1) 34 require.Equal(t, "a", fieldSet[2][0]) 35 36 require.Len(t, fieldSet[3], 3) 37 require.Equal(t, "b", fieldSet[3][0]) 38 require.Equal(t, "c", fieldSet[3][1]) 39 require.Equal(t, "d", fieldSet[3][2]) 40 41 require.Len(t, fieldSet[4], 1) 42 require.Equal(t, "e", fieldSet[4][0]) 43 } 44 45 func TestWithPrefix(t *testing.T) { 46 fieldSet := New("foo bar{id}", []string{"prefix"}) 47 48 require.Len(t, fieldSet, 2) 49 50 require.Len(t, fieldSet[0], 2) 51 require.Equal(t, "prefix", fieldSet[0][0]) 52 require.Equal(t, "foo", fieldSet[0][1]) 53 54 require.Len(t, fieldSet[1], 3) 55 require.Equal(t, "prefix", fieldSet[1][0]) 56 require.Equal(t, "bar", fieldSet[1][1]) 57 require.Equal(t, "id", fieldSet[1][2]) 58 } 59 60 func TestInvalid(t *testing.T) { 61 require.Panics(t, func() { 62 New("foo bar{baz", nil) 63 }) 64 } 65 66 func TestToGo(t *testing.T) { 67 require.Equal(t, Field{"foo"}.ToGo(), "Foo") 68 require.Equal(t, Field{"foo", "bar"}.ToGo(), "FooBar") 69 require.Equal(t, Field{"bar", "id"}.ToGo(), "BarID") 70 } 71 72 func TestToGoPrivate(t *testing.T) { 73 require.Equal(t, Field{"foo"}.ToGoPrivate(), "foo") 74 require.Equal(t, Field{"foo", "bar"}.ToGoPrivate(), "fooBar") 75 require.Equal(t, Field{"bar", "id"}.ToGoPrivate(), "barID") 76 }