From 53ae44979c3a37129adad31c86ab9e8d132f4a7f Mon Sep 17 00:00:00 2001 From: tu1h Date: Wed, 29 Nov 2023 10:49:25 +0800 Subject: [PATCH] Add unit test Signed-off-by: tu1h --- .../infomanifest/controller_test.go | 154 ++++++++++++++++++ 1 file changed, 154 insertions(+) diff --git a/pkg/controllers/infomanifest/controller_test.go b/pkg/controllers/infomanifest/controller_test.go index 8fe9dd999..1984327eb 100644 --- a/pkg/controllers/infomanifest/controller_test.go +++ b/pkg/controllers/infomanifest/controller_test.go @@ -547,6 +547,160 @@ func TestUpdateLocalService(t *testing.T) { } } +func TestOp(t *testing.T) { + var versionedManifest VersionedManifest + type args struct { + op string + m1 *manifestv1alpha1.Manifest + m2 *manifestv1alpha1.Manifest + } + tests := []struct { + name string + args args + prerequisites func(versionedManifest *VersionedManifest) + want func() map[string][]*manifestv1alpha1.Manifest + }{ + { + name: "add", + args: args{ + op: "add", + m1: &manifestv1alpha1.Manifest{ + ObjectMeta: metav1.ObjectMeta{ + Name: "manifest-1", + Labels: map[string]string{ + constants.KeySprayRelease: "2.23", + }, + }, + }, + }, + prerequisites: func(versionedManifest *VersionedManifest) {}, + want: func() map[string][]*manifestv1alpha1.Manifest { + return map[string][]*manifestv1alpha1.Manifest{ + "2.23": { + { + ObjectMeta: metav1.ObjectMeta{ + Name: "manifest-1", + Labels: map[string]string{ + constants.KeySprayRelease: "2.23", + }, + }, + }, + }, + } + }, + }, + { + name: "add with no release label", + args: args{ + op: "add", + m1: &manifestv1alpha1.Manifest{ + ObjectMeta: metav1.ObjectMeta{ + Name: "manifest-1", + }, + }, + }, + prerequisites: func(versionedManifest *VersionedManifest) {}, + want: func() map[string][]*manifestv1alpha1.Manifest { + return map[string][]*manifestv1alpha1.Manifest{} + }, + }, + { + name: "update", + args: args{ + op: "update", + m1: &manifestv1alpha1.Manifest{ + ObjectMeta: metav1.ObjectMeta{ + Name: "manifest-1", + Labels: map[string]string{ + constants.KeySprayRelease: "2.23", + }, + }, + }, + m2: &manifestv1alpha1.Manifest{ + ObjectMeta: metav1.ObjectMeta{ + Name: "manifest-1", + Labels: map[string]string{ + constants.KeySprayRelease: "2.22", + }, + }, + }, + }, + prerequisites: func(versionedManifest *VersionedManifest) { + versionedManifest.Manifests = map[string][]*manifestv1alpha1.Manifest{ + "2.23": { + { + ObjectMeta: metav1.ObjectMeta{ + Name: "manifest-1", + Labels: map[string]string{ + constants.KeySprayRelease: "2.23", + }, + }, + }, + }, + } + }, + want: func() map[string][]*manifestv1alpha1.Manifest { + return map[string][]*manifestv1alpha1.Manifest{ + "2.22": { + { + ObjectMeta: metav1.ObjectMeta{ + Name: "manifest-1", + Labels: map[string]string{ + constants.KeySprayRelease: "2.22", + }, + }, + }, + }, + } + }, + }, + { + name: "delete", + args: args{ + op: "delete", + m1: &manifestv1alpha1.Manifest{ + ObjectMeta: metav1.ObjectMeta{ + Name: "manifest-1", + Labels: map[string]string{ + constants.KeySprayRelease: "2.23", + }, + }, + }, + }, + prerequisites: func(versionedManifest *VersionedManifest) { + versionedManifest.Manifests = map[string][]*manifestv1alpha1.Manifest{ + "2.23": { + { + ObjectMeta: metav1.ObjectMeta{ + Name: "manifest-1", + Labels: map[string]string{ + constants.KeySprayRelease: "2.23", + }, + }, + }, + }, + } + }, + want: func() map[string][]*manifestv1alpha1.Manifest { + return map[string][]*manifestv1alpha1.Manifest{} + }, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + versionedManifest = VersionedManifest{ + Manifests: make(map[string][]*manifestv1alpha1.Manifest, 0), + } + test.prerequisites(&versionedManifest) + versionedManifest.Op(test.args.op, test.args.m1, test.args.m2) + if !reflect.DeepEqual(test.want(), versionedManifest.Manifests) { + t.Fatal() + } + }) + } +} + func TestReconcile(t *testing.T) { controller := &Controller{ Client: newFakeClient(),