...

Source file src/github.com/vektah/gqlparser/v2/ast/argmap_test.go

Documentation: github.com/vektah/gqlparser/v2/ast

     1  package ast
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  )
     8  
     9  func TestArg2Map(t *testing.T) {
    10  	defs := ArgumentDefinitionList{
    11  		{Name: "A", Type: NamedType("String", nil), DefaultValue: &Value{Kind: StringValue, Raw: "defaultA"}},
    12  		{Name: "B", Type: NamedType("String", nil)},
    13  	}
    14  
    15  	t.Run("defaults", func(t *testing.T) {
    16  		args := arg2map(defs, ArgumentList{}, nil)
    17  		require.Equal(t, "defaultA", args["A"])
    18  		require.NotContains(t, args, "B")
    19  	})
    20  
    21  	t.Run("values", func(t *testing.T) {
    22  		args := arg2map(defs, ArgumentList{
    23  			{Name: "A", Value: &Value{Kind: StringValue, Raw: "valA"}},
    24  			{Name: "B", Value: &Value{Kind: StringValue, Raw: "valB"}},
    25  		}, nil)
    26  		require.Equal(t, "valA", args["A"])
    27  		require.Equal(t, "valB", args["B"])
    28  	})
    29  
    30  	t.Run("nulls", func(t *testing.T) {
    31  		args := arg2map(defs, ArgumentList{
    32  			{Name: "A", Value: &Value{Kind: NullValue}},
    33  			{Name: "B", Value: &Value{Kind: NullValue}},
    34  		}, nil)
    35  		require.Equal(t, nil, args["A"])
    36  		require.Equal(t, nil, args["B"])
    37  		require.Contains(t, args, "A")
    38  		require.Contains(t, args, "B")
    39  	})
    40  
    41  	t.Run("undefined variables", func(t *testing.T) {
    42  		args := arg2map(defs, ArgumentList{
    43  			{Name: "A", Value: &Value{Kind: Variable, Raw: "VarA"}},
    44  			{Name: "B", Value: &Value{Kind: Variable, Raw: "VarB"}},
    45  		}, map[string]interface{}{})
    46  		require.Equal(t, "defaultA", args["A"])
    47  		require.NotContains(t, args, "B")
    48  	})
    49  
    50  	t.Run("nil variables", func(t *testing.T) {
    51  		args := arg2map(defs, ArgumentList{
    52  			{Name: "A", Value: &Value{Kind: Variable, Raw: "VarA"}},
    53  			{Name: "B", Value: &Value{Kind: Variable, Raw: "VarB"}},
    54  		}, map[string]interface{}{
    55  			"VarA": nil,
    56  			"VarB": nil,
    57  		})
    58  		require.Equal(t, nil, args["A"])
    59  		require.Equal(t, nil, args["B"])
    60  		require.Contains(t, args, "A")
    61  		require.Contains(t, args, "B")
    62  	})
    63  
    64  	t.Run("defined variables", func(t *testing.T) {
    65  		args := arg2map(defs, ArgumentList{
    66  			{Name: "A", Value: &Value{Kind: Variable, Raw: "VarA"}},
    67  			{Name: "B", Value: &Value{Kind: Variable, Raw: "VarB"}},
    68  		}, map[string]interface{}{
    69  			"VarA": "varvalA",
    70  			"VarB": "varvalB",
    71  		})
    72  		require.Equal(t, "varvalA", args["A"])
    73  		require.Equal(t, "varvalB", args["B"])
    74  	})
    75  }
    76  

View as plain text