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  }