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  }