1
2
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