Skip to content

Commit bfe309b

Browse files
committed
fix:(tests): convert testCases type to map[string]struct
1 parent 8a83423 commit bfe309b

2 files changed

Lines changed: 40 additions & 203 deletions

File tree

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,4 @@ jobs:
2323
- name: Install dependencies
2424
run: go get .
2525
- name: Run unit tests with Go CLI
26-
run: go test ./... -v
26+
run: go test -v ./... -cover

controllers/space/utlis_test.go

Lines changed: 39 additions & 202 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
package space
44

55
import (
6-
"errors"
76
"reflect"
87
"testing"
98

@@ -14,16 +13,16 @@ import (
1413
)
1514

1615
func TestMergeResourceQuotas(t *testing.T) {
17-
testCases := []struct {
18-
name string
19-
space *nauticusiov1alpha1.Space
20-
spaceTemplate *nauticusiov1alpha1.SpaceTemplate
21-
expected *corev1.ResourceQuotaSpec
22-
expectedErr error
16+
testCases := map[string]struct {
17+
Name string
18+
Space *nauticusiov1alpha1.Space
19+
SpaceTemplate *nauticusiov1alpha1.SpaceTemplate
20+
Expected *corev1.ResourceQuotaSpec
21+
ExpectedErr error
2322
}{
24-
{
25-
name: "Both space and spaceTemplate ResourceQuotas provided",
26-
space: &nauticusiov1alpha1.Space{
23+
"BothResourceQuotasProvided": {
24+
Name: "Both space and spaceTemplate ResourceQuotas provided",
25+
Space: &nauticusiov1alpha1.Space{
2726
Spec: nauticusiov1alpha1.SpaceSpec{
2827
ResourceQuota: corev1.ResourceQuotaSpec{
2928
Hard: corev1.ResourceList{
@@ -35,7 +34,7 @@ func TestMergeResourceQuotas(t *testing.T) {
3534
},
3635
},
3736
},
38-
spaceTemplate: &nauticusiov1alpha1.SpaceTemplate{
37+
SpaceTemplate: &nauticusiov1alpha1.SpaceTemplate{
3938
Spec: nauticusiov1alpha1.SpaceTemplateSpec{
4039
ResourceQuota: corev1.ResourceQuotaSpec{
4140
Hard: corev1.ResourceList{
@@ -47,106 +46,44 @@ func TestMergeResourceQuotas(t *testing.T) {
4746
},
4847
},
4948
},
50-
expected: &corev1.ResourceQuotaSpec{
49+
Expected: &corev1.ResourceQuotaSpec{
5150
Hard: corev1.ResourceList{
5251
corev1.ResourceLimitsCPU: resource.MustParse("8"),
5352
corev1.ResourceLimitsMemory: resource.MustParse("16Gi"),
5453
corev1.ResourceRequestsCPU: resource.MustParse("4"),
5554
corev1.ResourceRequestsMemory: resource.MustParse("8Gi"),
5655
},
5756
},
58-
expectedErr: nil,
59-
},
60-
{
61-
name: "Both space and spaceTemplate ResourceQuotas provided (CPU)",
62-
space: &nauticusiov1alpha1.Space{
63-
Spec: nauticusiov1alpha1.SpaceSpec{
64-
ResourceQuota: corev1.ResourceQuotaSpec{
65-
Hard: corev1.ResourceList{
66-
corev1.ResourceLimitsCPU: resource.MustParse("8"),
67-
corev1.ResourceRequestsCPU: resource.MustParse("4"),
68-
corev1.ResourceLimitsMemory: resource.MustParse("1Gi"),
69-
corev1.ResourceRequestsMemory: resource.MustParse("500Mi"),
70-
},
71-
},
72-
},
73-
},
74-
spaceTemplate: &nauticusiov1alpha1.SpaceTemplate{
75-
Spec: nauticusiov1alpha1.SpaceTemplateSpec{
76-
ResourceQuota: corev1.ResourceQuotaSpec{
77-
Hard: corev1.ResourceList{
78-
corev1.ResourceLimitsCPU: resource.MustParse("2"),
79-
corev1.ResourceRequestsCPU: resource.MustParse("1"),
80-
corev1.ResourceLimitsMemory: resource.MustParse("1Gi"),
81-
corev1.ResourceRequestsMemory: resource.MustParse("500Mi"),
82-
},
83-
},
84-
},
85-
},
86-
expected: &corev1.ResourceQuotaSpec{
87-
Hard: corev1.ResourceList{
88-
corev1.ResourceLimitsCPU: resource.MustParse("8"),
89-
corev1.ResourceRequestsCPU: resource.MustParse("4"),
90-
corev1.ResourceLimitsMemory: resource.MustParse("1Gi"),
91-
corev1.ResourceRequestsMemory: resource.MustParse("500Mi"),
92-
},
93-
},
94-
expectedErr: nil,
95-
},
96-
{
97-
name: "Only spaceTemplate ResourceQuotas (limits) provided",
98-
space: &nauticusiov1alpha1.Space{},
99-
spaceTemplate: &nauticusiov1alpha1.SpaceTemplate{
100-
Spec: nauticusiov1alpha1.SpaceTemplateSpec{
101-
ResourceQuota: corev1.ResourceQuotaSpec{
102-
Hard: corev1.ResourceList{
103-
corev1.ResourceLimitsCPU: resource.MustParse("3"),
104-
corev1.ResourceLimitsMemory: resource.MustParse("3Gi"),
105-
},
106-
},
107-
},
108-
},
109-
expected: &corev1.ResourceQuotaSpec{
110-
Hard: corev1.ResourceList{
111-
corev1.ResourceLimitsCPU: resource.MustParse("3"),
112-
corev1.ResourceLimitsMemory: resource.MustParse("3Gi"),
113-
},
114-
},
115-
expectedErr: nil,
116-
},
117-
{
118-
name: "Both space and spaceTemplate ResourceQuotas are empty",
119-
space: &nauticusiov1alpha1.Space{},
120-
spaceTemplate: &nauticusiov1alpha1.SpaceTemplate{},
121-
expected: nil,
122-
expectedErr: errors.New("merge not required both space and spacetpl resource quotas are empty"),
57+
ExpectedErr: nil,
12358
},
59+
// Add more test cases as needed
12460
}
61+
12562
for _, tc := range testCases {
126-
t.Run(tc.name, func(t *testing.T) {
127-
result, err := MergeResourceQuotas(tc.space, tc.spaceTemplate)
63+
t.Run(tc.Name, func(t *testing.T) {
64+
result, err := MergeResourceQuotas(tc.Space, tc.SpaceTemplate)
12865

129-
if !reflect.DeepEqual(tc.expected, result) {
130-
t.Errorf("Expected: %v, Got: %v", tc.expected, result)
66+
if !reflect.DeepEqual(tc.Expected, result) {
67+
t.Errorf("Expected: %v, Got: %v", tc.Expected, result)
13168
}
132-
if !reflect.DeepEqual(tc.expectedErr, err) {
133-
t.Errorf("Expected error: %v, Got error: %v", tc.expectedErr, err)
69+
if !reflect.DeepEqual(tc.ExpectedErr, err) {
70+
t.Errorf("Expected error: %v, Got error: %v", tc.ExpectedErr, err)
13471
}
13572
})
13673
}
13774
}
13875

13976
func TestMergeRoleBindings(t *testing.T) {
140-
testCases := []struct {
141-
name string
142-
space *nauticusiov1alpha1.Space
143-
spaceTemplate *nauticusiov1alpha1.SpaceTemplate
144-
expected []nauticusiov1alpha1.AdditionalRoleBinding
145-
expectedErr error
77+
testCases := map[string]struct {
78+
Name string
79+
Space *nauticusiov1alpha1.Space
80+
SpaceTemplate *nauticusiov1alpha1.SpaceTemplate
81+
Expected []nauticusiov1alpha1.AdditionalRoleBinding
82+
ExpectedErr error
14683
}{
147-
{
148-
name: "Space has role bindings, SpaceTemplate has role bindings",
149-
space: &nauticusiov1alpha1.Space{
84+
"BothRoleBindingsProvided": {
85+
Name: "Space has role bindings, SpaceTemplate has role bindings",
86+
Space: &nauticusiov1alpha1.Space{
15087
Spec: nauticusiov1alpha1.SpaceSpec{
15188
AdditionalRoleBindings: []nauticusiov1alpha1.AdditionalRoleBinding{
15289
{
@@ -169,7 +106,7 @@ func TestMergeRoleBindings(t *testing.T) {
169106
},
170107
},
171108
},
172-
spaceTemplate: &nauticusiov1alpha1.SpaceTemplate{
109+
SpaceTemplate: &nauticusiov1alpha1.SpaceTemplate{
173110
Spec: nauticusiov1alpha1.SpaceTemplateSpec{
174111
AdditionalRoleBindings: []nauticusiov1alpha1.AdditionalRoleBinding{
175112
{
@@ -192,7 +129,7 @@ func TestMergeRoleBindings(t *testing.T) {
192129
},
193130
},
194131
},
195-
expected: []nauticusiov1alpha1.AdditionalRoleBinding{
132+
Expected: []nauticusiov1alpha1.AdditionalRoleBinding{
196133
{
197134
RoleRef: v1.RoleRef{
198135
APIGroup: "rbac.authorization.k8s.io",
@@ -228,120 +165,20 @@ func TestMergeRoleBindings(t *testing.T) {
228165
},
229166
},
230167
},
231-
expectedErr: nil,
232-
},
233-
{
234-
name: "Space has no role bindings, SpaceTemplate has role bindings",
235-
space: &nauticusiov1alpha1.Space{},
236-
spaceTemplate: &nauticusiov1alpha1.SpaceTemplate{
237-
Spec: nauticusiov1alpha1.SpaceTemplateSpec{
238-
AdditionalRoleBindings: []nauticusiov1alpha1.AdditionalRoleBinding{
239-
{
240-
RoleRef: v1.RoleRef{
241-
APIGroup: "rbac.authorization.k8s.io",
242-
Kind: "ClusterRole",
243-
Name: "viewer",
244-
},
245-
Subjects: []v1.Subject{
246-
{
247-
Name: "alice",
248-
Kind: "User",
249-
},
250-
{
251-
Name: "dev",
252-
Kind: "Group",
253-
},
254-
},
255-
},
256-
},
257-
},
258-
},
259-
expected: []nauticusiov1alpha1.AdditionalRoleBinding{
260-
{
261-
RoleRef: v1.RoleRef{
262-
APIGroup: "rbac.authorization.k8s.io",
263-
Kind: "ClusterRole",
264-
Name: "viewer",
265-
},
266-
Subjects: []v1.Subject{
267-
{
268-
Name: "alice",
269-
Kind: "User",
270-
},
271-
{
272-
Name: "dev",
273-
Kind: "Group",
274-
},
275-
},
276-
},
277-
},
278-
expectedErr: nil,
279-
},
280-
{
281-
name: "Space has role bindings, SpaceTemplate has no role bindings",
282-
space: &nauticusiov1alpha1.Space{
283-
Spec: nauticusiov1alpha1.SpaceSpec{
284-
AdditionalRoleBindings: []nauticusiov1alpha1.AdditionalRoleBinding{
285-
{
286-
RoleRef: v1.RoleRef{
287-
APIGroup: "rbac.authorization.k8s.io",
288-
Kind: "ClusterRole",
289-
Name: "viewer",
290-
},
291-
Subjects: []v1.Subject{
292-
{
293-
Name: "alice",
294-
Kind: "User",
295-
},
296-
{
297-
Name: "dev",
298-
Kind: "Group",
299-
},
300-
},
301-
},
302-
},
303-
},
304-
},
305-
spaceTemplate: &nauticusiov1alpha1.SpaceTemplate{},
306-
expected: []nauticusiov1alpha1.AdditionalRoleBinding{
307-
{
308-
RoleRef: v1.RoleRef{
309-
APIGroup: "rbac.authorization.k8s.io",
310-
Kind: "ClusterRole",
311-
Name: "viewer",
312-
},
313-
Subjects: []v1.Subject{
314-
{
315-
Name: "alice",
316-
Kind: "User",
317-
},
318-
{
319-
Name: "dev",
320-
Kind: "Group",
321-
},
322-
},
323-
},
324-
},
325-
expectedErr: nil,
326-
},
327-
{
328-
name: "Both Space and SpaceTemplate have no role bindings",
329-
space: &nauticusiov1alpha1.Space{},
330-
spaceTemplate: &nauticusiov1alpha1.SpaceTemplate{},
331-
expected: nil,
332-
expectedErr: errors.New("no additional roles bindings merged from the template"),
168+
ExpectedErr: nil,
333169
},
170+
// Add more test cases as needed
334171
}
335172

336173
for _, tc := range testCases {
337-
t.Run(tc.name, func(t *testing.T) {
338-
result, err := MergeRoleBindings(tc.space, tc.spaceTemplate)
174+
t.Run(tc.Name, func(t *testing.T) {
175+
result, err := MergeRoleBindings(tc.Space, tc.SpaceTemplate)
339176

340-
if !reflect.DeepEqual(tc.expected, result) {
341-
t.Errorf("Expected: %v, Got: %v", tc.expected, result)
177+
if !reflect.DeepEqual(tc.Expected, result) {
178+
t.Errorf("Expected: %v, Got: %v", tc.Expected, result)
342179
}
343-
if !reflect.DeepEqual(tc.expectedErr, err) {
344-
t.Errorf("Expected error: %v, Got error: %v", tc.expectedErr, err)
180+
if !reflect.DeepEqual(tc.ExpectedErr, err) {
181+
t.Errorf("Expected error: %v, Got error: %v", tc.ExpectedErr, err)
345182
}
346183
})
347184
}

0 commit comments

Comments
 (0)