...

Source file src/sigs.k8s.io/kustomize/api/filters/valueadd/valueadd_test.go

Documentation: sigs.k8s.io/kustomize/api/filters/valueadd

     1  // Copyright 2020 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package valueadd
     5  
     6  import (
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  	filtertest_test "sigs.k8s.io/kustomize/api/testutils/filtertest"
    12  )
    13  
    14  const someResource = `
    15  kind: SomeKind
    16  spec:
    17    resourceRef:
    18      external: projects/whatever
    19  `
    20  
    21  func TestValueAddFilter(t *testing.T) {
    22  	testCases := map[string]struct {
    23  		input          string
    24  		expectedOutput string
    25  		filter         Filter
    26  	}{
    27  		"simpleAdd": {
    28  			input: `
    29  kind: SomeKind
    30  `,
    31  			expectedOutput: `
    32  kind: SomeKind
    33  spec:
    34    resourceRef:
    35      external: valueAdded
    36  `,
    37  			filter: Filter{
    38  				Value:     "valueAdded",
    39  				FieldPath: "spec/resourceRef/external",
    40  			},
    41  		},
    42  		"replaceExisting": {
    43  			input: someResource,
    44  			expectedOutput: `
    45  kind: SomeKind
    46  spec:
    47    resourceRef:
    48      external: valueAdded
    49  `,
    50  			filter: Filter{
    51  				Value:     "valueAdded",
    52  				FieldPath: "spec/resourceRef/external",
    53  			},
    54  		},
    55  		"prefixExisting": {
    56  			input: someResource,
    57  			expectedOutput: `
    58  kind: SomeKind
    59  spec:
    60    resourceRef:
    61      external: valueAdded/projects/whatever
    62  `,
    63  			filter: Filter{
    64  				Value:            "valueAdded",
    65  				FieldPath:        "spec/resourceRef/external",
    66  				FilePathPosition: 1,
    67  			},
    68  		},
    69  		"postfixExisting": {
    70  			input: someResource,
    71  			expectedOutput: `
    72  kind: SomeKind
    73  spec:
    74    resourceRef:
    75      external: projects/whatever/valueAdded
    76  `,
    77  			filter: Filter{
    78  				Value:            "valueAdded",
    79  				FieldPath:        "spec/resourceRef/external",
    80  				FilePathPosition: 99,
    81  			},
    82  		},
    83  		"placeInMiddleOfExisting": {
    84  			input: someResource,
    85  			expectedOutput: `
    86  kind: SomeKind
    87  spec:
    88    resourceRef:
    89      external: projects/valueAdded/whatever
    90  `,
    91  			filter: Filter{
    92  				Value:            "valueAdded",
    93  				FieldPath:        "spec/resourceRef/external",
    94  				FilePathPosition: 2,
    95  			},
    96  		},
    97  		"backSlash": {
    98  			input: `
    99  kind: SomeKind
   100  `,
   101  			expectedOutput: `
   102  kind: SomeKind
   103  spec:
   104    resourceRef/external: valueAdded
   105  `,
   106  			filter: Filter{
   107  				Value:     "valueAdded",
   108  				FieldPath: "spec/resourceRef\\/external",
   109  			},
   110  		},
   111  	}
   112  
   113  	for tn, tc := range testCases {
   114  		t.Run(tn, func(t *testing.T) {
   115  			filter := tc.filter
   116  			if !assert.Equal(t,
   117  				strings.TrimSpace(tc.expectedOutput),
   118  				strings.TrimSpace(filtertest_test.RunFilter(t, tc.input, filter))) {
   119  				t.FailNow()
   120  			}
   121  		})
   122  	}
   123  }
   124  

View as plain text