github.com/niko0xdev/gqlgen@v0.17.55-0.20240120102243-2ecff98c3e37/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 t.Run("prefix with len=capacity", func(t *testing.T) { 47 fieldSet := New("foo bar{id}", []string{"prefix"}) 48 49 require.Len(t, fieldSet, 2) 50 51 require.Len(t, fieldSet[0], 2) 52 require.Equal(t, "prefix", fieldSet[0][0]) 53 require.Equal(t, "foo", fieldSet[0][1]) 54 55 require.Len(t, fieldSet[1], 3) 56 require.Equal(t, "prefix", fieldSet[1][0]) 57 require.Equal(t, "bar", fieldSet[1][1]) 58 require.Equal(t, "id", fieldSet[1][2]) 59 }) 60 t.Run("prefix with len<capacity", func(t *testing.T) { 61 prefix := make([]string, 0, 2) 62 prefix = append(prefix, "prefix") 63 fieldSet := New("foo bar{id}", prefix) 64 65 require.Len(t, fieldSet, 2) 66 t.Log(fieldSet) 67 68 require.Len(t, fieldSet[0], 2) 69 require.Equal(t, "prefix", fieldSet[0][0]) 70 require.Equal(t, "foo", fieldSet[0][1]) 71 72 require.Len(t, fieldSet[1], 3) 73 require.Equal(t, "prefix", fieldSet[1][0]) 74 require.Equal(t, "bar", fieldSet[1][1]) 75 require.Equal(t, "id", fieldSet[1][2]) 76 }) 77 } 78 79 func TestInvalid(t *testing.T) { 80 require.Panics(t, func() { 81 New("foo bar{baz", nil) 82 }) 83 } 84 85 func TestToGo(t *testing.T) { 86 require.Equal(t, Field{"foo"}.ToGo(), "Foo") 87 require.Equal(t, Field{"foo", "bar"}.ToGo(), "FooBar") 88 require.Equal(t, Field{"bar", "id"}.ToGo(), "BarID") 89 } 90 91 func TestToGoPrivate(t *testing.T) { 92 require.Equal(t, Field{"foo"}.ToGoPrivate(), "foo") 93 require.Equal(t, Field{"foo", "bar"}.ToGoPrivate(), "fooBar") 94 require.Equal(t, Field{"bar", "id"}.ToGoPrivate(), "barID") 95 }