github.com/kubeshop/testkube@v1.17.23/pkg/mapper/testsuiteexecutions/summary_test.go (about) 1 package testsuiteexecutions 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/assert" 8 9 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 10 ) 11 12 func TestSuiteMapToSummary(t *testing.T) { 13 // given 14 executions := getExecutions() 15 16 // when 17 var result []*testkube.TestSuiteExecutionSummary 18 for i := range executions { 19 result = append(result, MapToSummary(&executions[i])) 20 } 21 22 // then - test mappings 23 for i := 0; i < len(executions); i++ { 24 assert.Equal(t, result[i].Id, executions[i].Id) 25 assert.Equal(t, result[i].Name, executions[i].Name) 26 assert.Equal(t, result[i].TestSuiteName, executions[i].TestSuite.Name) 27 assert.Equal(t, result[i].Status, executions[i].Status) 28 assert.Equal(t, result[i].StartTime, executions[i].StartTime) 29 assert.Equal(t, result[i].EndTime, executions[i].EndTime) 30 assert.Equal(t, result[i].Duration, executions[i].Duration) 31 assert.Equal(t, result[i].DurationMs, executions[i].DurationMs) 32 for j := range result[i].Execution { 33 assert.Equal(t, result[i].Execution[j].Execute[0].Id, executions[i].StepResults[j].Execution.Id) 34 assert.Equal(t, result[i].Execution[j].Execute[0].Name, executions[i].StepResults[j].Execution.Name) 35 assert.Equal(t, result[i].Execution[j].Execute[0].TestName, executions[i].StepResults[j].Execution.TestName) 36 assert.Equal(t, result[i].Execution[j].Execute[0].Status, executions[i].StepResults[j].Execution.ExecutionResult.Status) 37 var tp *testkube.TestSuiteStepType 38 if executions[i].StepResults[j].Step.Execute != nil { 39 tp = testkube.TestSuiteStepTypeExecuteTest 40 } 41 42 if executions[i].StepResults[j].Step.Delay != nil { 43 tp = testkube.TestSuiteStepTypeDelay 44 } 45 46 assert.Equal(t, result[i].Execution[j].Execute[0].Type_, tp) 47 } 48 } 49 } 50 51 func TestSuiteMapBatchToSummary(t *testing.T) { 52 // given 53 executions := getBatchExecutions() 54 55 // when 56 var result []*testkube.TestSuiteExecutionSummary 57 for i := range executions { 58 result = append(result, MapToSummary(&executions[i])) 59 } 60 61 // then - test mappings 62 for i := 0; i < len(executions); i++ { 63 assert.Equal(t, result[i].Id, executions[i].Id) 64 assert.Equal(t, result[i].Name, executions[i].Name) 65 assert.Equal(t, result[i].TestSuiteName, executions[i].TestSuite.Name) 66 assert.Equal(t, result[i].Status, executions[i].Status) 67 assert.Equal(t, result[i].StartTime, executions[i].StartTime) 68 assert.Equal(t, result[i].EndTime, executions[i].EndTime) 69 assert.Equal(t, result[i].Duration, executions[i].Duration) 70 assert.Equal(t, result[i].DurationMs, executions[i].DurationMs) 71 for j := range result[i].Execution { 72 assert.Equal(t, result[i].Execution[j].Execute[0].Id, executions[i].ExecuteStepResults[j].Execute[0].Execution.Id) 73 assert.Equal(t, result[i].Execution[j].Execute[0].Name, executions[i].ExecuteStepResults[j].Execute[0].Execution.Name) 74 assert.Equal(t, result[i].Execution[j].Execute[0].TestName, executions[i].ExecuteStepResults[j].Execute[0].Execution.TestName) 75 assert.Equal(t, result[i].Execution[j].Execute[0].Status, executions[i].ExecuteStepResults[j].Execute[0].Execution.ExecutionResult.Status) 76 var tp *testkube.TestSuiteStepType 77 if executions[i].ExecuteStepResults[j].Execute[0].Step.Test != "" { 78 tp = testkube.TestSuiteStepTypeExecuteTest 79 } 80 81 if executions[i].ExecuteStepResults[j].Execute[0].Step.Delay != "" { 82 tp = testkube.TestSuiteStepTypeDelay 83 } 84 85 assert.Equal(t, result[i].Execution[j].Execute[0].Type_, tp) 86 } 87 } 88 } 89 90 func getExecutions() []testkube.TestSuiteExecution { 91 stepResults1 := []testkube.TestSuiteStepExecutionResultV2{ 92 { 93 Step: &testkube.TestSuiteStepV2{Execute: &testkube.TestSuiteStepExecuteTestV2{Name: "testname1"}}, 94 Execution: &testkube.Execution{ 95 Id: "id1", 96 Name: "name1", 97 TestName: "testname1", 98 ExecutionResult: &testkube.ExecutionResult{ 99 Status: testkube.ExecutionStatusPassed, 100 }, 101 }, 102 }, 103 } 104 105 execution1 := testkube.TestSuiteExecution{ 106 Id: "tid1", 107 Name: "script1", 108 TestSuite: &testkube.ObjectRef{ 109 Namespace: "testkube", 110 Name: "testsuite1", 111 }, 112 Status: testkube.TestSuiteExecutionStatusFailed, 113 Envs: map[string]string{"var": "key"}, 114 Variables: map[string]testkube.Variable{"p": testkube.NewBasicVariable("p", "v1")}, 115 SecretUUID: "secret-uuid", 116 StartTime: time.Now(), 117 EndTime: time.Now(), 118 StepResults: stepResults1, 119 Labels: map[string]string{"label": "value"}, 120 } 121 122 execution1.Stop() 123 stepResults2 := []testkube.TestSuiteStepExecutionResultV2{ 124 { 125 Step: &testkube.TestSuiteStepV2{Execute: &testkube.TestSuiteStepExecuteTestV2{Name: "testname2"}}, 126 Execution: &testkube.Execution{ 127 Id: "id2", 128 Name: "name2", 129 TestName: "testname2", 130 ExecutionResult: &testkube.ExecutionResult{ 131 Status: testkube.ExecutionStatusFailed, 132 }, 133 }, 134 }, 135 } 136 137 execution2 := testkube.TestSuiteExecution{ 138 Id: "tid2", 139 Name: "script2", 140 TestSuite: &testkube.ObjectRef{ 141 Namespace: "testkube", 142 Name: "testsuite2", 143 }, 144 Status: testkube.TestSuiteExecutionStatusPassed, 145 Envs: map[string]string{"var": "key"}, 146 Variables: map[string]testkube.Variable{"p": testkube.NewBasicVariable("p", "v2")}, 147 SecretUUID: "secret-uuid", 148 StartTime: time.Now(), 149 EndTime: time.Now(), 150 StepResults: stepResults2, 151 Labels: map[string]string{"label": "value"}, 152 } 153 154 execution2.Stop() 155 156 return []testkube.TestSuiteExecution{ 157 execution1, 158 execution2, 159 } 160 161 } 162 163 func getBatchExecutions() []testkube.TestSuiteExecution { 164 stepResults1 := []testkube.TestSuiteBatchStepExecutionResult{ 165 { 166 Execute: []testkube.TestSuiteStepExecutionResult{ 167 { 168 Step: &testkube.TestSuiteStep{Test: "testname1"}, 169 Execution: &testkube.Execution{ 170 Id: "id1", 171 Name: "name1", 172 TestName: "testname1", 173 ExecutionResult: &testkube.ExecutionResult{ 174 Status: testkube.ExecutionStatusPassed, 175 }, 176 }, 177 }, 178 }, 179 }, 180 } 181 182 execution1 := testkube.TestSuiteExecution{ 183 Id: "tid1", 184 Name: "script1", 185 TestSuite: &testkube.ObjectRef{ 186 Namespace: "testkube", 187 Name: "testsuite1", 188 }, 189 Status: testkube.TestSuiteExecutionStatusFailed, 190 Envs: map[string]string{"var": "key"}, 191 Variables: map[string]testkube.Variable{"p": testkube.NewBasicVariable("p", "v1")}, 192 SecretUUID: "secret-uuid", 193 StartTime: time.Now(), 194 EndTime: time.Now(), 195 ExecuteStepResults: stepResults1, 196 Labels: map[string]string{"label": "value"}, 197 } 198 199 execution1.Stop() 200 stepResults2 := []testkube.TestSuiteBatchStepExecutionResult{ 201 { 202 Execute: []testkube.TestSuiteStepExecutionResult{ 203 { 204 Step: &testkube.TestSuiteStep{Test: "testname2"}, 205 Execution: &testkube.Execution{ 206 Id: "id2", 207 Name: "name2", 208 TestName: "testname2", 209 ExecutionResult: &testkube.ExecutionResult{ 210 Status: testkube.ExecutionStatusFailed, 211 }, 212 }, 213 }, 214 }, 215 }, 216 } 217 218 execution2 := testkube.TestSuiteExecution{ 219 Id: "tid2", 220 Name: "script2", 221 TestSuite: &testkube.ObjectRef{ 222 Namespace: "testkube", 223 Name: "testsuite2", 224 }, 225 Status: testkube.TestSuiteExecutionStatusPassed, 226 Envs: map[string]string{"var": "key"}, 227 Variables: map[string]testkube.Variable{"p": testkube.NewBasicVariable("p", "v2")}, 228 SecretUUID: "secret-uuid", 229 StartTime: time.Now(), 230 EndTime: time.Now(), 231 ExecuteStepResults: stepResults2, 232 Labels: map[string]string{"label": "value"}, 233 } 234 235 execution2.Stop() 236 237 return []testkube.TestSuiteExecution{ 238 execution1, 239 execution2, 240 } 241 242 }