This is an automated email from the ASF dual-hosted git repository.
ricardozanini pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-serverless-operator.git
The following commit(s) were added to refs/heads/main by this push:
new c42d3e04 Add tests for workflowproj/operator.go (#508)
c42d3e04 is described below
commit c42d3e04375616c4e0ecde702c7f2b85a074e4d8
Author: Roy Golan <[email protected]>
AuthorDate: Fri Aug 9 17:52:07 2024 +0300
Add tests for workflowproj/operator.go (#508)
Signed-off-by: Roy Golan <[email protected]>
---
workflowproj/operator_test.go | 368 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 368 insertions(+)
diff --git a/workflowproj/operator_test.go b/workflowproj/operator_test.go
new file mode 100644
index 00000000..13cd35e9
--- /dev/null
+++ b/workflowproj/operator_test.go
@@ -0,0 +1,368 @@
+// Copyright 2024 Apache Software Foundation (ASF)
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package workflowproj
+
+import (
+ "testing"
+
+ operatorapi
"github.com/apache/incubator-kie-kogito-serverless-operator/api/v1alpha08"
+ "github.com/stretchr/testify/assert"
+ corev1 "k8s.io/api/core/v1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+)
+
+func TestCreateNewManagedPropsConfigMap(t *testing.T) {
+ type args struct {
+ workflow *operatorapi.SonataFlow
+ properties string
+ }
+ tests := []struct {
+ name string
+ args args
+ want map[string]string
+ }{
+ {
+ "when workflow has labels",
+ args{workflow: &operatorapi.SonataFlow{ObjectMeta:
v1.ObjectMeta{
+ Name: t.Name(),
+ Labels: map[string]string{
+ "app.kubernetes.io/name":
t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ "app.kubernetes.io/part-of":
"someplatform",
+ }}}},
+
+ map[string]string{
+ "app.kubernetes.io/name": t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ "app.kubernetes.io/part-of": "someplatform",
+ "sonataflow.org/workflow-app": t.Name(),
+ },
+ },
+ {
+ "when the workflow has no labels",
+ args{workflow: &operatorapi.SonataFlow{ObjectMeta:
v1.ObjectMeta{
+ Name: t.Name(),
+ Labels: map[string]string{}}}},
+
+ map[string]string{
+ "app.kubernetes.io/name": t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ // if the workflow is missing a platform then
the managed properties won't have them
+ //"app.kubernetes.io/part-of": "someplatform",
+ "sonataflow.org/workflow-app": t.Name(),
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want,
CreateNewManagedPropsConfigMap(
+ tt.args.workflow,
tt.args.properties).GetLabels(),
+ "CreateNewManagedPropsConfigMap(%v, %v)",
tt.args.workflow, tt.args.properties)
+ })
+ }
+}
+
+func TestCreateNewUserPropsConfigMap(t *testing.T) {
+ type args struct {
+ workflow *operatorapi.SonataFlow
+ }
+ tests := []struct {
+ name string
+ args args
+ want *corev1.ConfigMap
+ }{
+ {
+ "when the workflow has no labels",
+ args{workflow: &operatorapi.SonataFlow{ObjectMeta:
v1.ObjectMeta{
+ Name: t.Name(),
+ Labels: map[string]string{}}}},
+
+ &corev1.ConfigMap{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: t.Name() + "-props",
+ Namespace: "",
+ Labels: map[string]string{
+ "app.kubernetes.io/name":
t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ "sonataflow.org/workflow-app":
t.Name(),
+ },
+ },
+ Data: map[string]string{
+ "application.properties": "",
+ },
+ },
+ },
+ {
+ "when the workflow has labels",
+ args{workflow: &operatorapi.SonataFlow{ObjectMeta:
v1.ObjectMeta{
+ Name: t.Name(),
+ Labels: map[string]string{
+ "older-label": t.Name(),
+ }}}},
+
+ &corev1.ConfigMap{
+ ObjectMeta: metav1.ObjectMeta{
+ Name: t.Name() + "-props",
+ Namespace: "",
+ Labels: map[string]string{
+ "older-label":
t.Name(),
+ "app.kubernetes.io/name":
t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ "sonataflow.org/workflow-app":
t.Name(),
+ },
+ },
+ Data: map[string]string{
+ "application.properties": "",
+ },
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want,
CreateNewUserPropsConfigMap(tt.args.workflow),
"CreateNewUserPropsConfigMap(%v)", tt.args.workflow)
+ })
+ }
+}
+
+func TestGetDefaultLabels(t *testing.T) {
+ type args struct {
+ workflow *operatorapi.SonataFlow
+ }
+ tests := []struct {
+ name string
+ args args
+ want map[string]string
+ }{
+ {
+ "when the workflow has no labels",
+ args{workflow: &operatorapi.SonataFlow{ObjectMeta:
v1.ObjectMeta{
+ Name: t.Name(),
+ Labels: map[string]string{}}}},
+
+ map[string]string{
+ "app.kubernetes.io/name": t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ // if the workflow is missing a platform then
the managed properties won't have them
+ //"app.kubernetes.io/part-of": "someplatform",
+ "sonataflow.org/workflow-app": t.Name(),
+ },
+ },
+ {
+ "when workflow has labels",
+ args{workflow: &operatorapi.SonataFlow{ObjectMeta:
v1.ObjectMeta{
+ Name: t.Name(),
+ Labels: map[string]string{
+
"some-older-label-should-not-be-included": t.Name(),
+ }}}},
+
+ map[string]string{
+ "app.kubernetes.io/name": t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ "sonataflow.org/workflow-app": t.Name(),
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want,
GetDefaultLabels(tt.args.workflow), "GetDefaultLabels(%v)", tt.args.workflow)
+ })
+ }
+}
+
+func TestGetManagedPropertiesFileName(t *testing.T) {
+ type args struct {
+ workflow *operatorapi.SonataFlow
+ }
+ tests := []struct {
+ name string
+ args args
+ want string
+ }{
+ {
+ name: "test",
+ args: args{workflow: &operatorapi.SonataFlow{
+ ObjectMeta: v1.ObjectMeta{
+ Name: t.Name(),
+ },
+ }},
+ want: "application-prod.properties",
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want,
GetManagedPropertiesFileName(tt.args.workflow),
"GetManagedPropertiesFileName(%v)", tt.args.workflow)
+ })
+ }
+}
+
+func TestGetMergedLabels(t *testing.T) {
+ type args struct {
+ workflow *operatorapi.SonataFlow
+ }
+ tests := []struct {
+ name string
+ args args
+ want map[string]string
+ }{
+ {
+ name: "when workflow has no labels",
+ args: args{workflow: &operatorapi.SonataFlow{
+ ObjectMeta: v1.ObjectMeta{
+ Name: t.Name(),
+ },
+ }},
+ want: map[string]string{
+ "app.kubernetes.io/name": t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ "sonataflow.org/workflow-app": t.Name(),
+ },
+ },
+ {
+ name: "when workflow has labels",
+ args: args{workflow: &operatorapi.SonataFlow{
+ ObjectMeta: v1.ObjectMeta{
+ Name: t.Name(),
+ Labels: map[string]string{
+ "some-older-label": t.Name(),
+ },
+ },
+ }},
+ want: map[string]string{
+ "app.kubernetes.io/name": t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ "sonataflow.org/workflow-app": t.Name(),
+ "some-older-label": t.Name(),
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want,
GetMergedLabels(tt.args.workflow), "GetMergedLabels(%v)", tt.args.workflow)
+ })
+ }
+}
+
+func TestGetSelectorLabels(t *testing.T) {
+ type args struct {
+ workflow *operatorapi.SonataFlow
+ }
+ tests := []struct {
+ name string
+ args args
+ want map[string]string
+ }{
+ {
+ name: "when workflow has no labels",
+ args: args{workflow: &operatorapi.SonataFlow{
+ ObjectMeta: v1.ObjectMeta{
+ Name: t.Name(),
+ },
+ }},
+ want: map[string]string{
+ "app.kubernetes.io/name": t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ "sonataflow.org/workflow-app": t.Name(),
+ },
+ },
+ {
+ name: "when workflow has labels",
+ args: args{workflow: &operatorapi.SonataFlow{
+ ObjectMeta: v1.ObjectMeta{
+ Name: t.Name(),
+ Labels: map[string]string{
+ "app.kubernetes.io/name":
t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ "sonataflow.org/workflow-app":
t.Name(),
+ },
+ },
+ }},
+ want: map[string]string{
+ "app.kubernetes.io/name": t.Name(),
+ "app.kubernetes.io/component":
"serverless-workflow",
+ "app.kubernetes.io/managed-by":
"sonataflow-operator",
+ "sonataflow.org/workflow-app": t.Name(),
+ },
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want,
GetSelectorLabels(tt.args.workflow), "GetSelectorLabels(%v)", tt.args.workflow)
+ })
+ }
+}
+
+func TestGetWorkflowManagedPropertiesConfigMapName(t *testing.T) {
+ type args struct {
+ workflow *operatorapi.SonataFlow
+ }
+ var tests = []struct {
+ name string
+ args args
+ want string
+ }{
+ {
+ name: "managed props configMap name",
+ args: args{workflow: &operatorapi.SonataFlow{
+ ObjectMeta: v1.ObjectMeta{
+ Name: t.Name(),
+ },
+ }},
+ want: t.Name() + "-managed-props",
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want,
GetWorkflowManagedPropertiesConfigMapName(tt.args.workflow),
"GetWorkflowManagedPropertiesConfigMapName(%v)", tt.args.workflow)
+ })
+ }
+}
+
+func TestGetWorkflowUserPropertiesConfigMapName(t *testing.T) {
+ type args struct {
+ workflow *operatorapi.SonataFlow
+ }
+ tests := []struct {
+ name string
+ args args
+ want string
+ }{
+ {
+ name: "test",
+ args: args{workflow: &operatorapi.SonataFlow{
+ ObjectMeta: v1.ObjectMeta{
+ Name: t.Name(),
+ },
+ }},
+ want: t.Name() + "-props",
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ assert.Equalf(t, tt.want,
GetWorkflowUserPropertiesConfigMapName(tt.args.workflow),
"GetWorkflowUserPropertiesConfigMapName(%v)", tt.args.workflow)
+ })
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]