Skip to content

Commit 196f208

Browse files
authored
Merge pull request #151 from atoato88/add-unit-test-watch-go
Add tests to watch.go
2 parents 4b732a4 + 7d4335e commit 196f208

File tree

1 file changed

+137
-0
lines changed

1 file changed

+137
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
package declarative
2+
3+
import (
4+
"testing"
5+
6+
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
7+
"k8s.io/apimachinery/pkg/runtime/schema"
8+
"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative/pkg/manifest"
9+
10+
"github.com/stretchr/testify/assert"
11+
)
12+
13+
func Test_uniqueGroupVersionKind(t *testing.T) {
14+
sa1 := &unstructured.Unstructured{
15+
Object: map[string]interface{}{
16+
"apiVersion": "v1",
17+
"kind": "ServiceAccount",
18+
"metadata": map[string]interface{}{
19+
"name": "foo-operator",
20+
"namespace": "kube-system",
21+
},
22+
},
23+
}
24+
saObj1, _ := manifest.NewObject(sa1)
25+
26+
sa2 := &unstructured.Unstructured{
27+
Object: map[string]interface{}{
28+
"apiVersion": "v1",
29+
"kind": "ServiceAccount",
30+
"metadata": map[string]interface{}{
31+
"name": "bar-operator",
32+
"namespace": "kube-system",
33+
},
34+
},
35+
}
36+
saObj2, _ := manifest.NewObject(sa2)
37+
38+
dp1 := &unstructured.Unstructured{
39+
Object: map[string]interface{}{
40+
"apiVersion": "apps/v1",
41+
"kind": "Deployment",
42+
"metadata": map[string]interface{}{
43+
"name": "frontend111",
44+
},
45+
},
46+
}
47+
dpObj1, _ := manifest.NewObject(dp1)
48+
49+
tests := []struct {
50+
name string
51+
inputObjects *manifest.Objects
52+
expectedSchema []schema.GroupVersionKind
53+
}{
54+
{
55+
name: "single object",
56+
inputObjects: &manifest.Objects{
57+
Items: []*manifest.Object{
58+
saObj1,
59+
},
60+
},
61+
expectedSchema: []schema.GroupVersionKind{
62+
{
63+
Group: "",
64+
Version: "v1",
65+
Kind: "ServiceAccount",
66+
},
67+
},
68+
},
69+
{
70+
name: "double same object",
71+
inputObjects: &manifest.Objects{
72+
Items: []*manifest.Object{
73+
saObj1,
74+
saObj1,
75+
},
76+
},
77+
expectedSchema: []schema.GroupVersionKind{
78+
{
79+
Group: "",
80+
Version: "v1",
81+
Kind: "ServiceAccount",
82+
},
83+
},
84+
},
85+
{
86+
name: "double same type of object",
87+
inputObjects: &manifest.Objects{
88+
Items: []*manifest.Object{
89+
saObj1,
90+
saObj2,
91+
},
92+
},
93+
expectedSchema: []schema.GroupVersionKind{
94+
{
95+
Group: "",
96+
Version: "v1",
97+
Kind: "ServiceAccount",
98+
},
99+
},
100+
},
101+
{
102+
name: "multiple objects",
103+
inputObjects: &manifest.Objects{
104+
Items: []*manifest.Object{
105+
dpObj1,
106+
saObj2,
107+
},
108+
},
109+
expectedSchema: []schema.GroupVersionKind{
110+
{
111+
Group: "",
112+
Version: "v1",
113+
Kind: "ServiceAccount",
114+
},
115+
{
116+
Group: "apps",
117+
Version: "v1",
118+
Kind: "Deployment",
119+
},
120+
},
121+
},
122+
{
123+
name: "empty objects",
124+
inputObjects: &manifest.Objects{
125+
Items: []*manifest.Object{},
126+
},
127+
expectedSchema: nil,
128+
},
129+
}
130+
131+
for _, tt := range tests {
132+
t.Run(tt.name, func(t *testing.T) {
133+
actualSchema := uniqueGroupVersionKind(tt.inputObjects)
134+
assert.Equal(t, tt.expectedSchema, actualSchema)
135+
})
136+
}
137+
}

0 commit comments

Comments
 (0)