github.com/saucelabs/saucectl@v0.175.1/internal/cypress/suite/suite_test.go (about)

     1  package suite
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/saucelabs/saucectl/internal/insights"
     7  	"gotest.tools/assert"
     8  )
     9  
    10  func TestSuite_SortByHistory(t *testing.T) {
    11  	testCases := []struct {
    12  		name    string
    13  		suites  []Suite
    14  		history insights.JobHistory
    15  		expRes  []Suite
    16  	}{
    17  		{
    18  			name: "sort suites by job history",
    19  			suites: []Suite{
    20  				Suite{Name: "suite 1"},
    21  				Suite{Name: "suite 2"},
    22  				Suite{Name: "suite 3"},
    23  			},
    24  			history: insights.JobHistory{
    25  				TestCases: []insights.TestCase{
    26  					insights.TestCase{Name: "suite 2"},
    27  					insights.TestCase{Name: "suite 1"},
    28  					insights.TestCase{Name: "suite 3"},
    29  				},
    30  			},
    31  			expRes: []Suite{
    32  				Suite{Name: "suite 2"},
    33  				Suite{Name: "suite 1"},
    34  				Suite{Name: "suite 3"},
    35  			},
    36  		},
    37  		{
    38  			name: "suites is the subset of job history",
    39  			suites: []Suite{
    40  				Suite{Name: "suite 1"},
    41  				Suite{Name: "suite 2"},
    42  			},
    43  			history: insights.JobHistory{
    44  				TestCases: []insights.TestCase{
    45  					insights.TestCase{Name: "suite 2"},
    46  					insights.TestCase{Name: "suite 1"},
    47  					insights.TestCase{Name: "suite 3"},
    48  				},
    49  			},
    50  			expRes: []Suite{
    51  				Suite{Name: "suite 2"},
    52  				Suite{Name: "suite 1"},
    53  			},
    54  		},
    55  		{
    56  			name: "job history is the subset of suites",
    57  			suites: []Suite{
    58  				Suite{Name: "suite 1"},
    59  				Suite{Name: "suite 2"},
    60  				Suite{Name: "suite 3"},
    61  				Suite{Name: "suite 4"},
    62  				Suite{Name: "suite 5"},
    63  			},
    64  			history: insights.JobHistory{
    65  				TestCases: []insights.TestCase{
    66  					insights.TestCase{Name: "suite 2"},
    67  					insights.TestCase{Name: "suite 1"},
    68  					insights.TestCase{Name: "suite 3"},
    69  				},
    70  			},
    71  			expRes: []Suite{
    72  				Suite{Name: "suite 2"},
    73  				Suite{Name: "suite 1"},
    74  				Suite{Name: "suite 3"},
    75  				Suite{Name: "suite 4"},
    76  				Suite{Name: "suite 5"},
    77  			},
    78  		},
    79  	}
    80  
    81  	for _, tc := range testCases {
    82  		t.Run(tc.name, func(t *testing.T) {
    83  			result := SortByHistory(tc.suites, tc.history)
    84  			for i := 0; i < len(result); i++ {
    85  				assert.Equal(t, tc.expRes[i].Name, result[i].Name)
    86  			}
    87  		})
    88  	}
    89  }