/
equalobject_test.go
108 lines (104 loc) · 2.24 KB
/
equalobject_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
package komega
import (
"fmt"
"testing"
. "github.com/onsi/gomega"
appsv1 "k8s.io/api/apps/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func TestEqualObjectMatcher(t *testing.T) {
cases := []struct {
desc string
expected appsv1.Deployment
actual appsv1.Deployment
opts []EqualObjectOption
result bool
}{
{
desc: "succeed with equal objects",
expected: appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: "test",
},
},
actual: appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: "test",
},
},
result: true,
},
{
desc: "fail with non equal objects",
expected: appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: "test",
},
},
actual: appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: "somethingelse",
},
},
result: false,
},
{
desc: "succeeds if ignored field does not match",
expected: appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: "test",
Labels: map[string]string{"somelabel": "somevalue"},
OwnerReferences: []metav1.OwnerReference{{
Name: "controller",
}},
},
},
actual: appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: "somethingelse",
Labels: map[string]string{"somelabel": "anothervalue"},
OwnerReferences: []metav1.OwnerReference{{
Name: "another",
}},
},
},
result: true,
opts: []EqualObjectOption{
IgnorePaths{
"ObjectMeta.Name",
"ObjectMeta.Labels[\"somelabel\"]",
"ObjectMeta.OwnerReferences[0].Name",
},
},
},
{
desc: "succeeds if all allowed fields match, and some others do not",
expected: appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: "test",
Namespace: "default",
},
},
actual: appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: "test",
Namespace: "special",
},
},
result: true,
opts: []EqualObjectOption{
MatchPaths{
"ObjectMeta.Name",
},
},
},
}
for _, c := range cases {
t.Run(c.desc, func(t *testing.T) {
g := NewWithT(t)
m := EqualObject(&c.expected, c.opts...)
g.Expect(m.Match(&c.actual)).To(Equal(c.result))
fmt.Println(m.FailureMessage(&c.actual))
})
}
}