github.com/grafana/tanka@v0.26.1-0.20240506093700-c22cfc35c21a/cmd/tk/export_test.go (about) 1 package main 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/grafana/tanka/pkg/tanka" 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestDetermineMergeStrategy(t *testing.T) { 12 cases := []struct { 13 name string 14 deprecatedFlag bool 15 mergeStrategy string 16 expected tanka.ExportMergeStrategy 17 expectErr error 18 }{ 19 { 20 name: "default", 21 deprecatedFlag: false, 22 mergeStrategy: "", 23 expected: tanka.ExportMergeStrategyNone, 24 }, 25 { 26 name: "deprecated flag set", 27 deprecatedFlag: true, 28 expected: tanka.ExportMergeStrategyFailConflicts, 29 }, 30 { 31 name: "both values set", 32 deprecatedFlag: true, 33 mergeStrategy: "fail-conflicts", 34 expectErr: errors.New("cannot use --merge and --merge-strategy at the same time"), 35 }, 36 { 37 name: "fail-conflicts", 38 mergeStrategy: "fail-on-conflicts", 39 expected: tanka.ExportMergeStrategyFailConflicts, 40 }, 41 { 42 name: "replace-envs", 43 mergeStrategy: "replace-envs", 44 expected: tanka.ExportMergeStrategyReplaceEnvs, 45 }, 46 { 47 name: "bad value", 48 mergeStrategy: "blabla", 49 expectErr: errors.New("invalid merge strategy: \"blabla\""), 50 }, 51 } 52 for _, tc := range cases { 53 t.Run(tc.name, func(t *testing.T) { 54 result, err := determineMergeStrategy(tc.deprecatedFlag, tc.mergeStrategy) 55 if tc.expectErr != nil { 56 assert.EqualError(t, err, tc.expectErr.Error()) 57 } else { 58 assert.NoError(t, err) 59 } 60 assert.Equal(t, tc.expected, result) 61 }) 62 } 63 }