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 }