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  }