github.com/kubeshop/testkube@v1.17.23/pkg/tcl/testworkflowstcl/testworkflowresolver/analyze_test.go (about) 1 // Copyright 2024 Testkube. 2 // 3 // Licensed as a Testkube Pro file under the Testkube Community 4 // License (the "License"); you may not use this file except in compliance with 5 // the License. You may obtain a copy of the License at 6 // 7 // https://github.com/kubeshop/testkube/blob/main/licenses/TCL.txt 8 9 package testworkflowresolver 10 11 import ( 12 "testing" 13 14 "github.com/stretchr/testify/assert" 15 16 testworkflowsv1 "github.com/kubeshop/testkube-operator/api/testworkflows/v1" 17 ) 18 19 var ( 20 refList = []testworkflowsv1.TemplateRef{ 21 {Name: "official/something"}, 22 {Name: "official--another"}, 23 {Name: "official/another"}, 24 {Name: "something"}, 25 } 26 refListWant = map[string]struct{}{"official--something": {}, "official--another": {}, "something": {}} 27 refList2 = []testworkflowsv1.TemplateRef{ 28 {Name: "official/something"}, 29 {Name: "another"}, 30 } 31 refList2Want = map[string]struct{}{"official--something": {}, "another": {}} 32 refList1Plus2Want = map[string]struct{}{"official--something": {}, "official--another": {}, "something": {}, "another": {}} 33 ) 34 35 func TestGetInternalTemplateName(t *testing.T) { 36 assert.Equal(t, "keep-same-name", GetInternalTemplateName("keep-same-name")) 37 assert.Equal(t, "some--namespace", GetInternalTemplateName("some--namespace")) 38 assert.Equal(t, "some--namespace", GetInternalTemplateName("some/namespace")) 39 assert.Equal(t, "some--namespace--multiple", GetInternalTemplateName("some--namespace--multiple")) 40 assert.Equal(t, "some--namespace--multiple", GetInternalTemplateName("some/namespace--multiple")) 41 assert.Equal(t, "some--namespace--multiple", GetInternalTemplateName("some/namespace/multiple")) 42 } 43 44 func TestGetDisplayTemplateName(t *testing.T) { 45 assert.Equal(t, "keep-same-name", GetDisplayTemplateName("keep-same-name")) 46 assert.Equal(t, "some/namespace", GetDisplayTemplateName("some--namespace")) 47 assert.Equal(t, "some/namespace", GetDisplayTemplateName("some/namespace")) 48 assert.Equal(t, "some/namespace/multiple", GetDisplayTemplateName("some--namespace--multiple")) 49 assert.Equal(t, "some/namespace/multiple", GetDisplayTemplateName("some/namespace--multiple")) 50 assert.Equal(t, "some/namespace/multiple", GetDisplayTemplateName("some/namespace/multiple")) 51 } 52 53 func TestListTemplates(t *testing.T) { 54 assert.Equal(t, map[string]struct{}(nil), ListTemplates(nil)) 55 assert.Equal(t, map[string]struct{}{}, ListTemplates(&testworkflowsv1.TestWorkflow{})) 56 assert.Equal(t, refListWant, ListTemplates(&testworkflowsv1.TestWorkflow{ 57 Spec: testworkflowsv1.TestWorkflowSpec{Use: refList}, 58 })) 59 assert.Equal(t, refListWant, ListTemplates(&testworkflowsv1.TestWorkflow{ 60 Spec: testworkflowsv1.TestWorkflowSpec{Setup: []testworkflowsv1.Step{{Use: refList}}}, 61 })) 62 assert.Equal(t, refListWant, ListTemplates(&testworkflowsv1.TestWorkflow{ 63 Spec: testworkflowsv1.TestWorkflowSpec{Steps: []testworkflowsv1.Step{{Use: refList}}}, 64 })) 65 assert.Equal(t, refListWant, ListTemplates(&testworkflowsv1.TestWorkflow{ 66 Spec: testworkflowsv1.TestWorkflowSpec{After: []testworkflowsv1.Step{{Use: refList}}}, 67 })) 68 assert.Equal(t, map[string]struct{}{"official--something": {}}, ListTemplates(&testworkflowsv1.TestWorkflow{ 69 Spec: testworkflowsv1.TestWorkflowSpec{After: []testworkflowsv1.Step{{Template: &refList[0]}}}, 70 })) 71 assert.Equal(t, refListWant, ListTemplates(&testworkflowsv1.TestWorkflow{ 72 Spec: testworkflowsv1.TestWorkflowSpec{After: []testworkflowsv1.Step{ 73 {Steps: []testworkflowsv1.Step{{Use: refList}}}}}, 74 })) 75 assert.Equal(t, refList1Plus2Want, ListTemplates(&testworkflowsv1.TestWorkflow{ 76 Spec: testworkflowsv1.TestWorkflowSpec{ 77 Setup: []testworkflowsv1.Step{{Steps: []testworkflowsv1.Step{{Use: refList}}}}, 78 After: []testworkflowsv1.Step{{Steps: []testworkflowsv1.Step{{Use: refList2}}}}, 79 }})) 80 assert.Equal(t, refList2Want, ListTemplates(&testworkflowsv1.TestWorkflow{ 81 Spec: testworkflowsv1.TestWorkflowSpec{ 82 Setup: []testworkflowsv1.Step{{Steps: []testworkflowsv1.Step{{Use: refList2}}}}, 83 After: []testworkflowsv1.Step{{Steps: []testworkflowsv1.Step{{Template: &refList2[0]}}}}, 84 }})) 85 }