File: argmap_test.go

package info (click to toggle)
golang-github-vektah-gqlparser 2.5.12-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,748 kB
  • sloc: javascript: 164; sh: 46; makefile: 10
file content (75 lines) | stat: -rw-r--r-- 2,159 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package ast

import (
	"testing"

	"github.com/stretchr/testify/require"
)

func TestArg2Map(t *testing.T) {
	defs := ArgumentDefinitionList{
		{Name: "A", Type: NamedType("String", nil), DefaultValue: &Value{Kind: StringValue, Raw: "defaultA"}},
		{Name: "B", Type: NamedType("String", nil)},
	}

	t.Run("defaults", func(t *testing.T) {
		args := arg2map(defs, ArgumentList{}, nil)
		require.Equal(t, "defaultA", args["A"])
		require.NotContains(t, args, "B")
	})

	t.Run("values", func(t *testing.T) {
		args := arg2map(defs, ArgumentList{
			{Name: "A", Value: &Value{Kind: StringValue, Raw: "valA"}},
			{Name: "B", Value: &Value{Kind: StringValue, Raw: "valB"}},
		}, nil)
		require.Equal(t, "valA", args["A"])
		require.Equal(t, "valB", args["B"])
	})

	t.Run("nulls", func(t *testing.T) {
		args := arg2map(defs, ArgumentList{
			{Name: "A", Value: &Value{Kind: NullValue}},
			{Name: "B", Value: &Value{Kind: NullValue}},
		}, nil)
		require.Nil(t, args["A"])
		require.Nil(t, args["B"])
		require.Contains(t, args, "A")
		require.Contains(t, args, "B")
	})

	t.Run("undefined variables", func(t *testing.T) {
		args := arg2map(defs, ArgumentList{
			{Name: "A", Value: &Value{Kind: Variable, Raw: "VarA"}},
			{Name: "B", Value: &Value{Kind: Variable, Raw: "VarB"}},
		}, map[string]interface{}{})
		require.Equal(t, "defaultA", args["A"])
		require.NotContains(t, args, "B")
	})

	t.Run("nil variables", func(t *testing.T) {
		args := arg2map(defs, ArgumentList{
			{Name: "A", Value: &Value{Kind: Variable, Raw: "VarA"}},
			{Name: "B", Value: &Value{Kind: Variable, Raw: "VarB"}},
		}, map[string]interface{}{
			"VarA": nil,
			"VarB": nil,
		})
		require.Nil(t, args["A"])
		require.Nil(t, args["B"])
		require.Contains(t, args, "A")
		require.Contains(t, args, "B")
	})

	t.Run("defined variables", func(t *testing.T) {
		args := arg2map(defs, ArgumentList{
			{Name: "A", Value: &Value{Kind: Variable, Raw: "VarA"}},
			{Name: "B", Value: &Value{Kind: Variable, Raw: "VarB"}},
		}, map[string]interface{}{
			"VarA": "varvalA",
			"VarB": "varvalB",
		})
		require.Equal(t, "varvalA", args["A"])
		require.Equal(t, "varvalB", args["B"])
	})
}