github.com/kubeshop/testkube@v1.17.23/pkg/cloud/data/testresult/testresult_test.go (about) 1 package testresult 2 3 import ( 4 "context" 5 "encoding/json" 6 "testing" 7 "time" 8 9 "github.com/golang/mock/gomock" 10 "github.com/stretchr/testify/assert" 11 12 "github.com/kubeshop/testkube/pkg/api/v1/testkube" 13 "github.com/kubeshop/testkube/pkg/cloud/data/executor" 14 ) 15 16 var ctx = context.Background() 17 18 func TestCloudResultRepository_Get(t *testing.T) { 19 t.Parallel() 20 21 mockCtrl := gomock.NewController(t) 22 defer mockCtrl.Finish() 23 24 mockExecutor := executor.NewMockExecutor(mockCtrl) 25 repo := &CloudRepository{executor: mockExecutor} 26 27 expectedExecution := testkube.TestSuiteExecution{Id: "id1"} 28 expectedResponse := GetResponse{TestSuiteExecution: expectedExecution} 29 expectedResponseBytes, _ := json.Marshal(expectedResponse) 30 mockExecutor.EXPECT().Execute(ctx, CmdTestResultGet, GetRequest{"id1"}).Return(expectedResponseBytes, nil) 31 32 execution, err := repo.Get(ctx, "id1") 33 if err != nil { 34 t.Fatalf("Get() returned an unexpected error: %v", err) 35 } 36 37 assert.Equal(t, expectedExecution.Id, execution.Id) 38 } 39 40 func TestCloudResultRepository_GetByNameAndTestSuite(t *testing.T) { 41 t.Parallel() 42 43 mockCtrl := gomock.NewController(t) 44 defer mockCtrl.Finish() 45 46 mockExecutor := executor.NewMockExecutor(mockCtrl) 47 repo := &CloudRepository{executor: mockExecutor} 48 49 expectedExecution := testkube.TestSuiteExecution{Name: "name1"} 50 expectedResponse := GetByNameAndTestSuiteResponse{TestSuiteExecution: expectedExecution} 51 expectedResponseBytes, _ := json.Marshal(expectedResponse) 52 mockExecutor. 53 EXPECT(). 54 Execute(ctx, CmdTestResultGetByNameAndTestSuite, GetByNameAndTestSuiteRequest{"name1", "testsuite1"}). 55 Return(expectedResponseBytes, nil) 56 57 execution, err := repo.GetByNameAndTestSuite(ctx, "name1", "testsuite1") 58 if err != nil { 59 t.Fatalf("GetByNameAndTestSuite() returned an unexpected error: %v", err) 60 } 61 62 assert.Equal(t, expectedExecution.Name, execution.Name) 63 } 64 65 func TestCloudResultRepository_GetLatestByTestSuites(t *testing.T) { 66 t.Parallel() 67 68 mockCtrl := gomock.NewController(t) 69 defer mockCtrl.Finish() 70 71 mockExecutor := executor.NewMockExecutor(mockCtrl) 72 repo := &CloudRepository{executor: mockExecutor} 73 74 prevDate := time.Date(2023, 5, 5, 0, 0, 0, 0, time.UTC) 75 midDate := prevDate.Add(time.Hour) 76 nextDate := midDate.Add(time.Hour) 77 testSuiteNames := []string{"test-suite-1", "test-suite-2"} 78 testSuite1 := &testkube.ObjectRef{Name: testSuiteNames[0]} 79 testSuite2 := &testkube.ObjectRef{Name: testSuiteNames[1]} 80 81 startResults := []testkube.TestSuiteExecution{{Id: "id1", TestSuite: testSuite1, StartTime: midDate, EndTime: midDate}, {Id: "id2", TestSuite: testSuite2, StartTime: midDate}} 82 endResults := []testkube.TestSuiteExecution{{Id: "id3", TestSuite: testSuite1, StartTime: prevDate, EndTime: nextDate}, {Id: "id4", TestSuite: testSuite2, StartTime: prevDate, EndTime: prevDate}} 83 expectedResults := []testkube.TestSuiteExecution{endResults[0], startResults[1]} 84 85 startReq := GetLatestByTestSuitesRequest{TestSuiteNames: testSuiteNames, SortField: "starttime"} 86 startResponse := GetLatestByTestSuitesResponse{TestSuiteExecutions: startResults} 87 startResponseBytes, _ := json.Marshal(startResponse) 88 endReq := GetLatestByTestSuitesRequest{TestSuiteNames: testSuiteNames, SortField: "endtime"} 89 endResponse := GetLatestByTestSuitesResponse{TestSuiteExecutions: endResults} 90 endResponseBytes, _ := json.Marshal(endResponse) 91 92 mockExecutor.EXPECT().Execute(ctx, CmdTestResultGetLatestByTestSuites, startReq).Return(startResponseBytes, nil) 93 mockExecutor.EXPECT().Execute(ctx, CmdTestResultGetLatestByTestSuites, endReq).Return(endResponseBytes, nil) 94 95 results, err := repo.GetLatestByTestSuites(ctx, testSuiteNames) 96 if err != nil { 97 t.Fatalf("GetLatestByTestSuites() returned an unexpected error: %v", err) 98 } 99 assert.Equal(t, len(results), len(expectedResults)) 100 assert.Contains(t, results, expectedResults[0]) 101 assert.Contains(t, results, expectedResults[1]) 102 }