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  }