Skip to content

Commit 65bbd78

Browse files
author
Andong LIAO
authored
Add unit test for record.go (#1302)
Signed-off-by: Anddd7 <[email protected]>
1 parent 2093fce commit 65bbd78

File tree

1 file changed

+188
-0
lines changed

1 file changed

+188
-0
lines changed

pkg/record/record_test.go

Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
/*
2+
Copyright 2023 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package record
18+
19+
import (
20+
"testing"
21+
22+
"github.com/stretchr/testify/require"
23+
24+
"k8s.io/apimachinery/pkg/runtime"
25+
"k8s.io/apimachinery/pkg/runtime/schema"
26+
cgrecord "k8s.io/client-go/tools/record"
27+
)
28+
29+
type fakeObject struct {
30+
}
31+
32+
func (f *fakeObject) GetObjectKind() schema.ObjectKind {
33+
return schema.EmptyObjectKind
34+
}
35+
36+
func (f *fakeObject) DeepCopyObject() runtime.Object {
37+
return f
38+
}
39+
40+
func TestEvent(t *testing.T) {
41+
testCases := []struct {
42+
name string
43+
object runtime.Object
44+
reason string
45+
message string
46+
expectedEvent string
47+
}{
48+
{
49+
name: "format reason",
50+
object: &fakeObject{},
51+
reason: "reason",
52+
message: "message",
53+
expectedEvent: "Normal Reason message",
54+
},
55+
{
56+
name: "format long reason",
57+
object: &fakeObject{},
58+
reason: "this is a very long reason",
59+
message: "message",
60+
expectedEvent: "Normal This Is A Very Long Reason message",
61+
},
62+
}
63+
64+
for _, tc := range testCases {
65+
t.Run(tc.name, func(t *testing.T) {
66+
recorder := defaultRecorder.(*cgrecord.FakeRecorder)
67+
recorder.Events = make(chan string, 1)
68+
69+
Event(tc.object, tc.reason, tc.message)
70+
71+
require.Equal(t, tc.expectedEvent, <-recorder.Events)
72+
})
73+
}
74+
}
75+
76+
func TestEventf(t *testing.T) {
77+
testCases := []struct {
78+
name string
79+
object runtime.Object
80+
reason string
81+
message string
82+
args []interface{}
83+
expectedEvent string
84+
}{
85+
{
86+
name: "format reason",
87+
object: &fakeObject{},
88+
reason: "reason",
89+
message: "message %s",
90+
args: []interface{}{"arg1"},
91+
expectedEvent: "Normal Reason message arg1",
92+
},
93+
{
94+
name: "format long reason",
95+
object: &fakeObject{},
96+
reason: "this is a very long reason",
97+
message: "message %s",
98+
args: []interface{}{"arg1"},
99+
expectedEvent: "Normal This Is A Very Long Reason message arg1",
100+
},
101+
}
102+
103+
for _, tc := range testCases {
104+
t.Run(tc.name, func(t *testing.T) {
105+
recorder := defaultRecorder.(*cgrecord.FakeRecorder)
106+
recorder.Events = make(chan string, 1)
107+
108+
Eventf(tc.object, tc.reason, tc.message, tc.args...)
109+
110+
require.Equal(t, tc.expectedEvent, <-recorder.Events)
111+
})
112+
}
113+
}
114+
115+
func TestWarn(t *testing.T) {
116+
testCases := []struct {
117+
name string
118+
object runtime.Object
119+
reason string
120+
message string
121+
expectedEvent string
122+
}{
123+
{
124+
name: "format reason",
125+
object: &fakeObject{},
126+
reason: "reason",
127+
message: "message",
128+
expectedEvent: "Warning Reason message",
129+
},
130+
{
131+
name: "format long reason",
132+
object: &fakeObject{},
133+
reason: "this is a very long reason",
134+
message: "message",
135+
expectedEvent: "Warning This Is A Very Long Reason message",
136+
},
137+
}
138+
139+
for _, tc := range testCases {
140+
t.Run(tc.name, func(t *testing.T) {
141+
recorder := defaultRecorder.(*cgrecord.FakeRecorder)
142+
recorder.Events = make(chan string, 1)
143+
144+
Warn(tc.object, tc.reason, tc.message)
145+
146+
require.Equal(t, tc.expectedEvent, <-recorder.Events)
147+
})
148+
}
149+
}
150+
151+
func TestWarnf(t *testing.T) {
152+
testCases := []struct {
153+
name string
154+
object runtime.Object
155+
reason string
156+
message string
157+
args []interface{}
158+
expectedEvent string
159+
}{
160+
{
161+
name: "format reason",
162+
object: &fakeObject{},
163+
reason: "reason",
164+
message: "message %s",
165+
args: []interface{}{"arg1"},
166+
expectedEvent: "Warning Reason message arg1",
167+
},
168+
{
169+
name: "format long reason",
170+
object: &fakeObject{},
171+
reason: "this is a very long reason",
172+
message: "message %s",
173+
args: []interface{}{"arg1"},
174+
expectedEvent: "Warning This Is A Very Long Reason message arg1",
175+
},
176+
}
177+
178+
for _, tc := range testCases {
179+
t.Run(tc.name, func(t *testing.T) {
180+
recorder := defaultRecorder.(*cgrecord.FakeRecorder)
181+
recorder.Events = make(chan string, 1)
182+
183+
Warnf(tc.object, tc.reason, tc.message, tc.args...)
184+
185+
require.Equal(t, tc.expectedEvent, <-recorder.Events)
186+
})
187+
}
188+
}

0 commit comments

Comments
 (0)