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  }