1package v2 2 3import ( 4 "sort" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8) 9 10func TestFixtureMutator(t *testing.T) { 11 fixture := FixtureMutator("fixture") 12 assert.Equal(t, "fixture", fixture.Name) 13 assert.NoError(t, fixture.Validate()) 14} 15 16func TestMutatorValidate(t *testing.T) { 17 var m Mutator 18 19 // Invalid name 20 assert.Error(t, m.Validate()) 21 m.Name = "foo" 22 23 // Invalid command 24 assert.Error(t, m.Validate()) 25 m.Command = "echo 'foo'" 26 27 // Invalid namespace 28 assert.Error(t, m.Validate()) 29 m.Namespace = "default" 30 31 // Valid mutator 32 assert.NoError(t, m.Validate()) 33} 34 35func TestSortMutatorsByName(t *testing.T) { 36 a := FixtureMutator("Abernathy") 37 b := FixtureMutator("Bernard") 38 c := FixtureMutator("Clementine") 39 d := FixtureMutator("Dolores") 40 41 testCases := []struct { 42 name string 43 inDir bool 44 inChecks []*Mutator 45 expected []*Mutator 46 }{ 47 { 48 name: "Sorts ascending", 49 inDir: true, 50 inChecks: []*Mutator{d, c, a, b}, 51 expected: []*Mutator{a, b, c, d}, 52 }, 53 { 54 name: "Sorts descending", 55 inDir: false, 56 inChecks: []*Mutator{d, a, c, b}, 57 expected: []*Mutator{d, c, b, a}, 58 }, 59 } 60 61 for _, tc := range testCases { 62 t.Run(tc.name, func(t *testing.T) { 63 sort.Sort(SortMutatorsByName(tc.inChecks, tc.inDir)) 64 assert.EqualValues(t, tc.expected, tc.inChecks) 65 }) 66 } 67} 68