-
Notifications
You must be signed in to change notification settings - Fork 0
/
assertions_test.go
144 lines (139 loc) · 2.97 KB
/
assertions_test.go
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package testpilot
import (
"reflect"
"testing"
)
func TestAssertEqual(t *testing.T) {
type args struct {
response any
body []byte
}
tests := []struct {
name string
args args
wantErr bool
}{
{
name: "Test AssertEqual",
args: args{
response: map[string]interface{}{
"key": "value",
},
body: []byte(`{"key":"value"}`),
},
wantErr: false,
},
{
name: "Test Failure AssertEqual",
args: args{
response: map[string]interface{}{
"key": "value",
},
body: []byte(`{"key":"value1"}`),
},
wantErr: true,
},
{
name: "Test assert string",
args: args{
response: "value",
body: []byte(`value`),
},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := AssertEqual(tt.args.response)(tt.args.body)
if (err != nil) != tt.wantErr {
t.Errorf("AssertEqual() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}
func TestAssertPath(t *testing.T) {
type args[T comparable] struct {
path string
assert func(val T) error
body []byte
}
type testCase[T comparable] struct {
name string
args args[T]
wantErr bool
}
tests := []testCase[int]{
{
name: "Test AssertPath",
args: args[int]{
path: "key",
assert: Equal(1),
body: []byte(`{"key":1}`),
},
wantErr: false,
},
{
name: "Test Failure AssertPath",
args: args[int]{
path: "key",
assert: Equal(1),
body: []byte(`{"key":2}`),
},
wantErr: true,
},
{
name: "Test AssertPath with nested object",
args: args[int]{
path: "key.subkey",
assert: Equal(1),
body: []byte(`{"key":{"subkey":1}}`),
},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
err := AssertPath(tt.args.path, tt.args.assert)(tt.args.body)
if (err != nil) != tt.wantErr {
t.Errorf("AssertPath() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}
func Test_convertToType_String(t *testing.T) {
t.Run("Test convertToType string", func(t *testing.T) {
got, err := convertToType[string]("value")
if err != nil {
t.Errorf("convertToType() error = %v", err)
}
if got != "value" {
t.Errorf("convertToType() got = %v, want value", got)
}
})
t.Run("Test convertToType struct", func(t *testing.T) {
type testStruct struct {
Key string
}
got, err := convertToType[testStruct](map[string]any{"Key": "value"})
if err != nil {
t.Errorf("convertToType() error = %v", err)
}
if !reflect.DeepEqual(got, testStruct{"value"}) {
t.Errorf("convertToType() got = %v, want value", got)
}
})
}
func Test_AssertExists(t *testing.T) {
t.Run("Test AssertExists", func(t *testing.T) {
err := AssertExists("key")([]byte(`{"key":1}`))
if err != nil {
t.Errorf("AssertExists() error = %v", err)
}
})
t.Run("Test Failure AssertExists", func(t *testing.T) {
err := AssertExists("key")([]byte(`{"key1":1}`))
if err == nil {
t.Errorf("AssertExists() error = %v", err)
}
})
}