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