-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathvalues_test.go
More file actions
70 lines (64 loc) · 1.48 KB
/
values_test.go
File metadata and controls
70 lines (64 loc) · 1.48 KB
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
package graphql
import (
"reflect"
"testing"
)
func TestIsIterable(t *testing.T) {
if !isIterable([]int{}) {
t.Fatal("expected isIterable to return true for a slice, got false")
}
if !isIterable([]int{}) {
t.Fatal("expected isIterable to return true for an array, got false")
}
if isIterable(1) {
t.Fatal("expected isIterable to return false for an int, got true")
}
if isIterable(nil) {
t.Fatal("expected isIterable to return false for nil, got true")
}
}
func Test_coerceValue(t *testing.T) {
t.Parallel()
type input struct {
ttype Input
value any
}
testCases := map[string]struct {
input input
expected any
}{
"null Input Object is coerced to nil": {
input: input{
ttype: NewInputObject(InputObjectConfig{
Name: "InputObject",
}),
value: nil,
},
expected: nil,
},
"null field in Input Object is not omitted, and coerced to nil": {
input: input{
ttype: NewInputObject(InputObjectConfig{
Name: "InputObject",
Fields: InputObjectConfigFieldMap{
"string": &InputObjectFieldConfig{
Type: String,
},
},
}),
value: map[string]any{"string": nil},
},
expected: map[string]any{"string": nil},
},
}
for name, tc := range testCases {
name, tc := name, tc
t.Run(name, func(t *testing.T) {
t.Parallel()
got := coerceValue(tc.input.ttype, tc.input.value)
if !reflect.DeepEqual(tc.expected, got) {
t.Errorf("unexpected result, expected: %v, got: %v", tc.expected, got)
}
})
}
}