github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/documentation/generator/defaults_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package generator
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/SAP/jenkins-library/pkg/config"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestConsolidateContextParameters(t *testing.T) {
    14  	stepData := config.StepData{
    15  		Spec: config.StepSpec{
    16  			Inputs: config.StepInputs{
    17  				Parameters: []config.StepParameters{
    18  					{Name: "stashContent"},
    19  					{Name: "dockerImage"},
    20  					{Name: "containerName"},
    21  					{Name: "dockerName"},
    22  				},
    23  				Resources: []config.StepResources{
    24  					{Name: "stashAlways", Type: "stash"},
    25  					{Name: "stash1", Type: "stash", Conditions: []config.Condition{
    26  						{ConditionRef: "strings-equal", Params: []config.Param{{Name: "dep1", Value: "val1"}, {Name: "dep2", Value: "val1"}}},
    27  					}},
    28  					{Name: "stash2", Type: "stash", Conditions: []config.Condition{
    29  						{ConditionRef: "strings-equal", Params: []config.Param{{Name: "dep1", Value: "val2"}, {Name: "dep2", Value: "val2"}}},
    30  					}},
    31  				},
    32  			},
    33  			Containers: []config.Container{
    34  				{Name: "IMAGE1", Image: "image1", Conditions: []config.Condition{
    35  					{ConditionRef: "strings-equal", Params: []config.Param{{Name: "dep1", Value: "val1"}, {Name: "dep2", Value: "val1"}}},
    36  				}},
    37  				{Name: "IMAGE2", Image: "image2", Conditions: []config.Condition{
    38  					{ConditionRef: "strings-equal", Params: []config.Param{{Name: "dep1", Value: "val2"}, {Name: "dep2", Value: "val2"}}},
    39  				}},
    40  			},
    41  		},
    42  	}
    43  
    44  	consolidateContextDefaults(&stepData)
    45  
    46  	expected := []config.StepParameters{
    47  		{Name: "stashContent", Default: []interface{}{
    48  			"stashAlways",
    49  			conditionDefault{key: "dep1", value: "val1", def: "stash1"},
    50  			conditionDefault{key: "dep1", value: "val2", def: "stash2"},
    51  			conditionDefault{key: "dep2", value: "val1", def: "stash1"},
    52  			conditionDefault{key: "dep2", value: "val2", def: "stash2"},
    53  		}},
    54  		{Name: "dockerImage", Default: []conditionDefault{
    55  			{key: "dep1", value: "val1", def: "image1"},
    56  			{key: "dep1", value: "val2", def: "image2"},
    57  			{key: "dep2", value: "val1", def: "image1"},
    58  			{key: "dep2", value: "val2", def: "image2"},
    59  		}},
    60  		{Name: "containerName", Default: []conditionDefault{
    61  			{key: "dep1", value: "val1", def: "IMAGE1"},
    62  			{key: "dep1", value: "val2", def: "IMAGE2"},
    63  			{key: "dep2", value: "val1", def: "IMAGE1"},
    64  			{key: "dep2", value: "val2", def: "IMAGE2"},
    65  		}},
    66  		{Name: "dockerName", Default: []conditionDefault{
    67  			{key: "dep1", value: "val1", def: "IMAGE1"},
    68  			{key: "dep1", value: "val2", def: "IMAGE2"},
    69  			{key: "dep2", value: "val1", def: "IMAGE1"},
    70  			{key: "dep2", value: "val2", def: "IMAGE2"},
    71  		}},
    72  	}
    73  
    74  	assert.Equal(t, expected, stepData.Spec.Inputs.Parameters)
    75  
    76  }
    77  
    78  func TestConsolidateConditionalParameters(t *testing.T) {
    79  	stepData := config.StepData{
    80  		Spec: config.StepSpec{
    81  			Inputs: config.StepInputs{
    82  				Parameters: []config.StepParameters{
    83  					{Name: "dep1", Default: "val1"},
    84  					{Name: "test1", Default: "def1", Conditions: []config.Condition{
    85  						{ConditionRef: "strings-equal", Params: []config.Param{{Name: "dep1", Value: "val1"}, {Name: "dep2", Value: "val1"}}},
    86  					}},
    87  					{Name: "test1", Default: "def2", Conditions: []config.Condition{
    88  						{ConditionRef: "strings-equal", Params: []config.Param{{Name: "dep1", Value: "val2"}, {Name: "dep2", Value: "val2"}}},
    89  					}},
    90  				},
    91  			},
    92  		},
    93  	}
    94  
    95  	consolidateConditionalParameters(&stepData)
    96  
    97  	expected := config.StepData{
    98  		Spec: config.StepSpec{
    99  			Inputs: config.StepInputs{
   100  				Parameters: []config.StepParameters{
   101  					{Name: "dep1", Default: "val1"},
   102  					{Name: "test1", Default: []conditionDefault{
   103  						{key: "dep1", value: "val1", def: "def1"},
   104  						{key: "dep1", value: "val2", def: "def2"},
   105  						{key: "dep2", value: "val1", def: "def1"},
   106  						{key: "dep2", value: "val2", def: "def2"},
   107  					}},
   108  				},
   109  			},
   110  		},
   111  	}
   112  
   113  	assert.Equal(t, expected, stepData)
   114  
   115  }